PHPなどからMySQLに接続する場合に、”SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client”のエラーが発生する場合には、MySQL側の認証方法を変更することで対処できます。
MySQLのユーザー認証方法
とりあえず、MySQL側のユーザー認証の方法を確認します。以下の様に接続するユーザーの[Authentication Type]が[caching_sha2_password]であれば、これが原因です。
認証方法の変更
残念ながら、[MySQL Workbench]のユーザーアカウントの設定画面では変更できません。(Windowsの場合です。他は知りません)
以下の手順のように、MySQLのコマンドで直接変更する必要があります。
1. [コマンド プロンプト]を起動します。
2. MySQLにrootでログインします。
mysql -u root -p
3. mysqlデータベースに移動します。
use mysql
4. 認証方法を表示します。
select user, host, plugin from user;
5. ユーザの認証方法([plugin]部分)を確認します。
+------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | admin | % | 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 | +------------------+-----------+-----------------------+
6. ユーザの認証方法を変更します。
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'パスワード';
7. 認証方法を表示します。
select user, host, plugin from user;
8. ユーザの認証方法([plugin]部分)を確認します。
+------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | admin | % | 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 | +------------------+-----------+-----------------------+
[mysql_native_password]になっていれば、変更完了です。
スポンサーリンク
最後までご覧いただき、ありがとうございます。