MySQL8.0.4から、パスワードの認証方式が変わっているため(caching_sha2_password
)、PHPから接続する際に、古いパスワードの認証方式(mysql_native_password
)で行っていると以下のようなエラーが表示されます。
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
PHP 7.1.6、7.2.4以降から、caching_sha2_password
に対応しています。この記事では、古い認証方式のまま接続する方法を解説します。
以下のコマンドでMySQL Serverに接続します。
mysql -u root -p
以下のSQL文で現在の設定を確認します。
SELECT user, host, plugin FROM mysql.user;
以下のように出力されるはずです。
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
以下のSQL文でrootのパスワードを変更します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';