前回はCentOS6.5にPHP5.6をインストールする方法を記事にしました。
実はあの記事を書く前にこの記事で紹介する問題にぶち当たっていました。
なんと、php5.5で利用していたDBとWebコンテンツをすべて持ってきたにもかかわらず、WordPressへの接続がエラーになってしまうんです。
真っ白な画面に
データベース接続確立エラー
って表示されるだけなんです・・・。
とりあえず認証情報は間違っていないことを確認
WordPressへの接続ができていないようなのですが、サーバー上でいつもどおり以下のようにコマンドからの接続は可能でした。
# mysql -u username -p password
そのため、DBの移行に失敗しているわけでもなく、あたふた状態。
じゃぁPHPコードの場合はどうなのを試したところ・・・
phpコマンドに-rをつけて実際にWordPressがログインするときに実行されているコマンドと同じ方法でのMySQLへの接続を試してみました。
# php -r "mysql_connect('localhost','username','password');"
すると以下のエラーが出てきました!
PHP Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in Command line code on line 1 PHP Warning: mysql_connect(): The server requested authentication method unknown to the client in Command line code on line 1
何が原因なのか
こちらのサイトを参考にさせていただきました。
原因は、/etc/my.cnf.d/server.cnfにて「old_passwords = 1」を指定していたため。その状態でDBにユーザーが追加されたため、私がPHP5.6で利用しているphp-mysqlndが対応していない「old_password」形式のパスワードでユーザーが追加されていたために、認証しようとしても、要求された認証方式は不明です とエラーになっているようです。
じゃぁどうすればいいのか
以下の手順で現在のDBのパスワード設定を変更し、再設定することで対処できます。
- /etc/my.cnf.d/server.cnfもしくは同等のファイルから「old_password」の記述をコメントアウト
- mysqlを再起動する
- mysqlにログインし、ユーザーのパスワードを再設定する
mysql> set password for username@localhost = password('password'); Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
上記で問題なくWordPressの画面が表示できるようになるはずです!
おためしあれ!
以上です。
コメント