single.php

MySQL 8.0へ接続時に”SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client”になる場合の対処法

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]になっていれば、変更完了です。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です