— 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からの接続がうまくできるようになりました。
こちらを参考にさせていただきました。ありがとうございました。