— db — 1 min read
PHPにMySQLの接続設定を記述して接続した際にブラウザにて
SQLSTATE[HY000][2054] The server requested authentication method unknown to the client
といったエラーメッセージが表示されました。
MySQL 8〜ではデフォルトの認証方法が変更になっているようです。
まずは現在の認証方法を確認しておきます。
MySQLへログインして
sudo mysql -u root -p
データベースを切り替えて
mysql > use mysql
各ユーザーの認証方法をチェックします。
mysql > select user, host, plugin from user;
とすると、こんな感じになります。
user | host | plugin |
---|---|---|
hoge | localhost | caching_sha2_password |
mysql.infoschema | localhost | caching_sha2_password |
mysql.session | localhost | caching_sha2_password |
mysql.sys | localhost | caching_sha2_password |
root | localhost | caching_sha2_password |
hogeの認証方法を変更します。
mysql> alter user 'hoge'@'localhost' identified with mysql_native_password by 'ここにパスワード';
こうすると
mysql> mysql> select user, host, plugin from user;
user | host | plugin |
---|---|---|
hoge | localhost | mysql_native_password |
mysql.infoschema | localhost | caching_sha2_password |
mysql.session | localhost | caching_sha2_password |
mysql.sys | localhost | caching_sha2_password |
root | localhost | caching_sha2_password |
これでPHPからの接続がうまくできるようになりました。
こちらを参考にさせていただきました。ありがとうございました。