HOMERSSサイトマッププロフィールお問い合せ

「データベース」 カテゴリー

1つ前のカテゴリーは、メール・サーバー です。 次のカテゴリーは、J2EEサーバー です。

2008年4月19日

MySQLにローマ数字などMS932系のコードが入らない

①Ⅱⅲ・・・うん???入っている。

開発のテスト環境(Windows、MySQL5、Java)ではShift_JISは入るが、MS932系の文字は化けるのだが・・・
このブログ(Linux、MySQL、PHP5、Movable Type)では入っている。

日本語の文字化け問題。いつものことだが時々日本人が嫌になる。

投稿者: 管理者 日時: 2008年4月19日 08:26 | | コメント (0) | トラックバック (0)

2007年4月21日

MySQL の文字化け問題について(Ⅱ)

またまた文字化け問題が顔を出してきた。

お手伝いしている会社のグループウェアをオープンソースに代えるための調査をやっていて、GroupOffice という優れものに行き当たった。GroupOffice は Apache + PHP + MySQL をベースに開発されているもので現在もバージョンアップされ続けている。
元会社で使っていた Penguin Office 2 の使用も考えていたのだがデータベースに PostgreSQL を使っていることもあり、またサポートが終了しているようなので諦めた。

ところが・・・
ネットにも GroupOffice の文字化け問題が多く寄せられているように、使用を見合わせたくなるほどやっかいな事になった。

結論は・・・試行錯誤のうえ以下の設定で最終決着した。

設定ファイル ( /etc/my.cnf ) の設定

    [mysqld] [mysqldump] [mysql] の各項目に

    default-character-set=utf8 をセット

    [mysqld] の項目に

    skip-character-set-client-handshake をセット
    これは勝手にキャラクターセットを変換せんといてくれと言うおまじないらしい

全て UTF-8 で統一して、アプリケーションも前もって UTF-8 指定することで解決、と言うよりは文字化け問題に関わらいでもすむようにした。

投稿者: 管理者 日時: 2007年4月21日 18:51 | | コメント (0) | トラックバック (0)

2007年2月10日

MySQL クライアントの文字セットの問題について

しばらく前述の設定で使っていたのだが、クライアントマシンが Windows & Linux の混在状態になってくると日本語の扱いになにかと問題が生じるようになった。

(設定変更)

    1) 設定ファイル (/etc/my.cfg) の変更

      a) [client] の default-character-set=utf8 をコメントに

      b) [mysqld] の skip-character-set-client-handshake をコメントに

    2) Movable Type の mt-config.cgi に 'SQLSetNames 1' を挿入

以上で問題なく走っているようだ・・・

投稿者: 管理者 日時: 2007年2月10日 09:58 | | コメント (0) | トラックバック (0)

2006年12月29日

( Vine Linux 4.0 ) に向けて・・・MySQL 5.0 への移行メモ

MySQL 4.0 ~ 5.0 へのバージョンアップはそう簡単でもないような・・・影響しそうなのは CHAR の扱いが変わったこと、パスワードの保存形式が変わったこと(長くなった)、、、など。

当サイトでの MySQL の役割は今のところ Webアプリケージョンの認証データと MovableType のエントリーに使っている程度なので、最低でも MovableType の動作確認をしておく。

MySQL は単なるファイルの集合体なので同じバージョン間であればコピーすればアップグレードできるようだが(やったことはない)、メジャーバージョンアップのときはそうもいかないことから mysqldump を使ってデータ移行する。

(やったこと)

1). MySQL のインストール

    前回のようにインストール
    # apt-get install MySQL-server MySQL-Max MySQL-client MySQL-sharedしたら perl-DBI が付いてきた。

2). 設定ファイル ( /etc/my.cnf ) を作成

    設定ファイルがなければ /usr/share/mysql/ から適当なサンプルをとってくる
    # cp /usr/share/mysql/my-medium.cfg /etc/my.cfg
    以下を追加
    [mysqld]
    default-character-set=utf8

    [client]
    default-character-set=utf8

3). 前回と同様にユーザー登録・設定

    ユーザーが書き込まれるデータベース ( mtsql ) を再作成してもよいのかどうか分からなかったので、ユーザーの数が少ないこともあって逐一登録した。

4) データベース ( mt とか test など ) を作成

5). バックアップを流し込む

    $ mysql -uxxxxxx -pyyyyyyyy mt < mt-backup.sql
    で MovableType で使っているデータベース mt についてはこれでよかったのだが、テストで使っている データベース test は日本語が書き込まれていないような現象が起こった。

    (現)

      1) Server CharacterSet は ujis
      2) MovableType (データベース mt)の使用 character セットは utf8
      3) データベース test は Vine Linux 上で未指定で作成
      4) バックアップは mysqldump を character セット を指定せずに使用(指定出来るのか知らないが)
      5) mysql クライアントは character セットを指定せずに使用

    (新)

      1) erver CharacterSet は utf8
      2) mysql クライアントは character セットを指定して使用(Vine Linux 上で ujis 指定)
      $ mysql --default-character-set=ujis -uroot -p

    (結)

      mysql --default-character-set=utf8 -uxxxxxx -pyyyyyyyy mt < mt-backup.sql

      mysql --default-character-set=ujis -uxxxxxx -pyyyyyyyy test < test-backup.sql

    MySQL 5.0 は 4.0 に比べて大きく変化しているようで初心者の私としては苦労しそうだ。

6). Movable Type を移行して分かったこと

    MovableType は長いパスワードには対応していないらしく MySQL にログイン・エラーになる
    Bad ObjectDriver config: Connection error: Client does not support
    authentication protocol requested by server; consider upgrading MySQL client
    MTユーザーのパスワードを短いものに変更
    UPDATE user SET Password = OLD_PASSWORD('パスワード') WHERE Host = 'localhost' AND User = 'MTユーザー';


重要

[目次]→[サーバーの構成]→[ブログ] のところでも書いたが、MySQL 5.0 は文字コードの自動変換をやるようで、PHP で文字化けが起こった。

    自動変換を中止する。設定ファイル ( /etc/my.cnf ) に追加
    [mysqld] skip-character-set-client-handshake
    これが、また大きな溝を掘ることになるかもしれないが・・・

投稿者: 管理者 日時: 2006年12月29日 17:27 | | コメント (0) | トラックバック (0)

2006年9月 6日

(復興作業)データベース・サーバー MySQL のインストール

コミュニケ-ションに不可欠なWebサーバー、メールサーバーがとりあえず立ち上がったことから次の作業に入ろう・・・

アプリケーション・サーバーの JBoss を再興して、Webメールを走らせたいのだが、認証に MySQL を使っていたので先にこれをインストールする。

1). MySQL のインストール

    # apt-get install MySQL-server MySQL-Max MySQL-client MySQL-shared
    でインストールする。

    a) MySQL-server : サーバー本体
    b) MySQL-Max : サーバー本体の追加機能で、Ver 4.0からは本体に入っていると思っていたのだが・・・インストールできる。
    c) MySQL-client : 標準 MySQL のクライアントプログラム
    d) MySQL-shared : 特定の言語とアプリケーションが MySQL を動的にロードして使用するために必要な共有ライブラリ(libmysqlclient.so*)が含まれている。


2). MySQL の自動起動設定と確認
    # chkconfig mysql on
    # chkconfig --list mysql

3). MySQL の初期設定
    a) MySQL へ root でログイン
      # mysql -u root

    b) 初期登録ユーザーの確認
      select user,host,password from mysql.user;

    c) root ユーザーのパスワードの設定
      set password for root@localhost=password('rootパスワード');
      set password for root@'ホスト名'=password('rootパスワード');

    d) 登録ユーザーの再確認
      select user,host,password from mysql.user;

    e) userが空白の匿名ユーザーの削除・・・重要
      delete from mysql.user where user='';

    f) 匿名ユーザーが削除されたか確認
      select user,host,password from mysql.user;

    g) MySQL からログアウト
      exit

    h) 次に、上記の設定が機能しているかを確認
      # mysql -u root : ログインできない
      # mysql -u root -h 自ホスト名 : ログインできない
      # mysql -u root -pxxxxxxxx(rootパスワード) : ログインできる

4). さぁ~・・・ここまでいけたら JBoss の認証に使うデータベースを作成する。
    a) MySQL に root でログインして、データベースを作成
      create database xxxx;

    b) ユーザー・テーブルを作成
      create table xxxx
      (
      user_name varchar(16) not null primary key,
      user_pass varchar(64) not null,
      user_pass_phrase varchar(64),
      user_mail_address varchar(64)
      );

    c) ユーザーロール・テーブルを作成
      create table xxxx
      (
      user_name varchar(16) not null,
      role_name varchar(16) not null,
      primary key(user_name, role_name)
      );

    d) ユーザーとユーザーロールを登録
      insert into xxxx values ( 'xxxx', 'xxxx', 'xxxx', 'xxxx' );
      insert into xxxx values ( 'xxxx' , 'xxxx' );

5). ついでに、、、JBoss のセットアップ時に必要になるが、JBoss が内部的に MySQL にアクセスするための ALL権限ユーザーを MySQL に登録する。
    grant all privileges on *.* to xxxx@localhost identified by 'xxxx' with grant option;

    JBoss を走らせて見たところ↓↓↓が必要だった。(以前は↑↑↑だけだったのだが・・・?)
    grant all privileges on *.* to xxxx@ホスト名 identified by 'xxxx' with grant option;

・・・とりあえず、こんなところか・・・

投稿者: 管理者 日時: 2006年9月 6日 20:02 | | コメント (0) | トラックバック (0)