2011.08.24
【MySql】MysqlのOldPasswordについて
そんな問題にあたったのでまとめておきます。
Mysql4.1くらいからパスワードのハッシュが16byteから41byteへあげることで
セキュリティを強化したわけです。
その関係でmysqlクライアントも両方に対応しないといけないようになる。
PHP5.3くらいからは新しい41byteのほうしか対応しないらしい。
そのため旧形式でパスワードが保存されているとアクセスできなくなるらしい。
Mysqlはまだ両方のパスワードに対応しているらしく、保存方法を指定できるらしい。
Mysqlがどちらの方法でパスワードを生成しているか調べる
mysql> SHOW VARIABLES LIKE 'old_passwords';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| old_passwords | ON |
+------------------------+-------+
old_passwordsがONは旧形式のものを使っているということ。
セキュリティのことも考えると長いほうがよい。
旧形式のパスワードをやめて41byteの方を使うには
手っ取り早い方法としては my.cnf ファイルに「old-passwords」というのがあると思うのでこれを削除する。
旧形式のパスワード中に作られたアカウントは旧形式のパスワードとして
保存されているので新しくユーザーを作り直す必要がある。
この差でPHP側からMySqlへコネクションをしようとして旧形式パスワードになっていると
あっているにもかかわらずエラーになってしまうことがある。
ここら辺はライブラリで対応してほしいところだけどね・・・
関連記事