<続>MySQL 5.6 old_passwords=1 環境へのユーザー情報移行が難しい

結局、前回の記事に書いた手順でユーザー情報を 5.0 サーバーから 5.6 サーバーに移しました。その他のデータベースについては mysqldump でダンプして新サーバーでリストアすることで問題なく移行できました。

ただし、5.6 サーバー側から mysqldump を実行して 5.0 サーバーのダンプを取得しようとすると secure-auth を有効にせよという旨のエラーが出ました。mysql コマンド等では --skip-secure-auth というオプションを付与することで回避できるのですが mysqldump コマンドでは受け付けてくれないようです。今回は Version 5.5 に付属の mysqldump を使用しましたが、5.0 サーバーに長いパスワードハッシュを持つダンプ用のユーザーを作る方法が正攻法であったような気もします。

このことや、短いパスワードハッシュを持つユーザーが登録されている状態で 5.6 サーバーを立ち上げると Windows イベントログに(mysqlが)短い(pre-4.1)のパスワードハッシュについては 'deprecated' であるという警告が出力されるあたりから考えると、普通の、つまり grant 文や set password 文などで短いパスワードハッシュを登録できないのは不具合というよりは仕様(あえてそうやっている)のではないかと考えられます。

というわけで、今回の新サーバーでは mysql.ini において skip-secure-auth オプションは付与したものの old_passwords = 1 はセットしないことにしました。つまり、現在すでに登録されているユーザーについては当面短いパスワードハッシュ(=古いパスワード認証)にするが、今後登録するユーザーについては長いパスワードハッシュ(=新しいパスワード認証)にすることにしました。で、pre-4.1 の認証方法しかとれない古いクライアントについては徐々になくしていっていずれ長いパスワードハッシュに統一しようと思います。