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

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 | パーマリンク |TOPページへ   ▲画面上へ

トラックバック

このエントリーのトラックバックURL:
https://bit-consul.net/cgi-bin/MT/mt-tb.cgi/189

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)