PHPとMySQLを再インストールしたらWordPressがデータベース確立エラーを起こしたお話。「データベース接続確立エラー」はWordPressのエラーでよく見かけるエラーの一つじゃないかと。
はじまり
リポジトリ追加してPHPとMySQLのバージョンをあげようと思って一度、アンインストールすることに。無事にアンインストールしてリポジトリを有効にして再びインストールを実行。無事にバージョンを上げて導入することができた。
だがしかし、サイトに設置したWordPressが「データベース確立エラー」を起こした。このエラーはDBとの接続に問題が発生している際によく起こる為、一度CUIでmysqlに入ってみることに。無事にログインできている。では一体原因はなにか?
WPデバッグモード
そこで、試しにWordPressのwp-config.phpでデバッグモードを有効にすると下記のデバッグコードが表示された。
Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [mysql_old_password] in /var/www/html/wp-includes/wp-db.php on line 1386
Warning: mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client in /var/www/html/wp-includes/wp-db.php on line 1386
Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in /var/www/html/wp-includes/wp-db.php on line 1416
Warning: mysql_connect(): The server requested authentication method unknown to the client in /var/www/html/wp-includes/wp-db.php on line 1416
表示されたエラーを読んでみると1,2番目と3,4番目で同様のエラー原因であるとわかった。
Google先生に聞いた
とはいっても、対応策がこれといって思いつかなかったのでGoogle先生に聞いてみたら、答えが帰ってきた。
memo: MySQL5.5、php5.4、mysqlnd で authentication method unknown エラー
結論から言えば、設定に問題があった。ひとまずCUIで /etc/my.cnf を確認して見ることにした。原因は old_passwords=1 の一行だった。認証に使われるプラグインであるmysql_old_passwordにmysqlndが対応していないことが原因らしい。この行の部分をコメントアウトしてDBを再起動すると無事にWordPressが動いた。最後にWordPressのデバッグモードをOffにして終了。
WordPressのDB確立エラーがこんな理由だとは思わなかったというのが本音。
コメントを残す