MySQL 8.0 で、WordPress に接続できなくなった

  • MySQL
  • WordPress

※ (2019/11/23)現在では PHP 7.3 以降であれば接続できるようです。可能であればアップデートし、アップデートできない環境であれば以下を参考にしてください。
https://www.php.net/manual/en/ref.pdo-mysql.php

先日 MySQL を 8.0 にバージョンアップしたところ、WordPress の方で「データベース接続確率エラー」と表示されるようになってしまいました。
このエラーが出るのは wp_config.php の接続情報が間違っている事がほとんどなのですが、今回は違っていました。

一度、ウェブからのクライアント(adminer.php)で接続できるか試しましたがこちらも「The server requested authentication method unknown to the client(サーバーがあなたに対して不明な認証方式を要求しています)」とエラーが出てしまい接続できませんでした。

原因

原因としては、MySQL 8.0 からパスワードの認証方式が変更された事でログインができなくなっていました。default_authentication_plugin の値が変更されているようです。

default_authentication_plugin

  • MySQL 5.7 … mysql_native_password
  • MySQL 8.0 … caching_sha2_password

新しい caching_sha2_password の認証方式は高速かつセキュリティも高いようですが、現状では PHP に対応しているライブラリが無く、ログインができません。そのため、MySQLのユーザーの方の認証方式を mysql_native_password に戻すことで対応します。

修正

パスワード認証方式を 5.7 のものに戻してあげます。まずは SSH などでデータベースサーバーに接続してから、MySQL コマンドを実行します。ALTER USERを使うことで、ユーザー情報の変更ができます。

ALTER USER <your_user> mysql_native_password IDENTIFIED BY '<your_pass>';

<your_user> にはログインユーザーを、<your_pass>にはパスワードを入れてください。こちらで指定したユーザーの認証方式を変更できますが、今後は新しい認証方式を使用したほうが良いと思うので一時的な対応とします。

ちなみに、このままだとユーザーを新しく作った時には新しい認証方式になってしまうので、毎回この方法で手動変更しなくてはなりません。もし新しいユーザーを作った際にもデフォルトで古いパスワード認証方式を使いたい場合は下記参考記事をご確認ください。

参考

MySQL8.0新機能 (caching_sha2_password 認証プラグイン)
https://www.s-style.co.jp/blog/2018/05/1807/