PHPとMySQLを再インストールしたらWordPressが「データベース確立エラー」

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確立エラーがこんな理由だとは思わなかったというのが本音。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です