caching_sha2_password のエラー

2020/08/16

caching_sha2_password のエラー

MySQL 8 から認証方式がデフォルトで caching_sha2_password に変更されました。

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password-compatible-connectors

これにより、caching_sha2_password 認証プラグインに対応していないクライアントは接続できません。(phpMyAdmin の最新版は接続できるはずです)

root ユーザの認証プラグインを変更する

本番環境では推奨されませんが、root ユーザの認証方式を旧方式 mysql_native_password に変更する SQL を実行します。


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
mysql> set global validate_password.policy=LOW;
mysql> set global validate_password.length=4;
mysql> set global validate_password.mixed_case_count=0;
mysql> set global validate_password.number_count=0;
mysql> set global validate_password.special_char_count=0;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

認証プラグインの確認

root ユーザの認証プラグインが mysql_native_password に変更されました。


mysql> 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 | mysql_native_password |
| yoo              | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

開発環境のため、パスワードの制約もゆるい設定に変更しましたが、本番では厳しめに設定しましょう。