phpバージョンアップ後にwordpressでデータベース接続確立エラーと画面に表示されてしましました。
この手の問題はDBのパスワード変更をした際にwordpressのwp-config.phpの設定ファイルのパスワードを変更し忘れた時等に起きるのですが、今回はmysqlは何も変更をしていません。
DBが壊れたのか?と考えましたがタイミング的にphpバージョンアップが起因していると思われるので調べました。
そうすると下記の事がわかりました。
・PHP5.3以降から、MySQLの古い形式のパスワードをサポートしなくなった
古い形式 : ハッシュ値の長さが16バイト
以前のPHPバージョンは5.3でしたがMySQLは古い形式のパスワードを使用していました。
解決策は簡単です。パスワードを新しい形式「41バイトハッシュ」で再作成する
取り急ぎmysql.iniでold_passwordsの値を変更します。
old_passwords=1
old_passwords=0
これで新しいパスワードは41バイトになります。
過去のパスワードはmysqlのpasswordコマンドで変更します。
パスワードの41バイトハッシュを作る
mysql> SELECT PASSWORD(‘password’);
+——————————————-+
| password(‘password’) |
+——————————————-+
| *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+——————————————-+
パスワードを更新する
mysql> SET PASSEWORD FOR user@localhost = ‘*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19’;
これで完了です。
無事wordpressが表示できるようになりました。
やはりバージョンアップはちゃんと影響確認しないと駄目ですよね。