MySQL8.0 でデフォルトの認証プラグインが mysql_native_password から caching_sha2_password へ変更されています。
my.cnf で mysql_native_password=on を記述したら、mysql_native_password を使用できますが、MySQL 8.4の次のメジャー・バージョンではmysql_native_password認証プラグインは削除されるそうです。
mysql_native_password認証プラグインは、MySQL 8.4の後に次のメジャー・バージョンで削除されるため、caching_sha2_password認証メソッドを使用するようにこれらのユーザー・アカウントの移行を開始する必要があります。
https://docs.oracle.com/ja-jp/iaas/mysql-database/doc/major-version-upgrade.html#GUID-0D7B5266-6FF9-42B7-AAC0-5A49F7D40D82
そこで、caching_sha2_password を使用するように既存ユーザーアカウントを設定する方法です。
まず、対象のユーザーを確認します。
SELECT user, host , plugin FROM mysql.user; を実行します。
次のようにユーザー一覧が表示されます。表で、plugin列が mysql_native_password になっているユーザーが対象です。
mysql> SELECT user, host , plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| test | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
対象のユーザーで、認証プラグインに caching_sha2_password を使用するように変更します。次の形式で実行します。
ALTER USER 'ユーザー名'@'ホスト' IDENTIFIED WITH caching_sha2_password BY 'パスワード';
先のユーザー一覧の例では、ユーザーtestとrootが対象なので、次のように実行します。
ALTER USER 'test'@'%' IDENTIFIED WITH caching_sha2_password BY 'PASSWORD_for_test';
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'PASSWORD_for_root';
変更されたか確認します。
SELECT user, host , plugin FROM mysql.user; を実行します。
mysql> SELECT user, host , plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| test | % | 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 |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
my.cnf で mysql_native_password=on にしていたら、それを削除します。
参考
MySQLの認証プラグインを変更する方法(caching_sha2_password) #Docker – Qiita
※本記事では、参考ページの認証プラグイン変更方法を参考にしましたが、参考ページでは逆に caching_sha2_password から mysql_native_password に変更していることにご注意ください。
コメント