MySQL8から認証方式が変わったらしいが従来の認証方式に戻す


ローカル環境でMySQL8.0をAdminerから確認する

DB(MySQL8.0)を見るためにPHPのビルトインサーバーphp -S localhost:8000を起動してAdminerから確認しようと思いログインすると以下のエラーが発生。

The server requested authentication method unknown to the client

ログインできない

MySQL8から認証方式が変わった

デフォルトの認証方式がmysql_native_passwordから*ハッシュ化方式caching_sha2_passwordへ変更されたらしい
で、それが原因でエラーがでるらしいのでとりあえず以前の認証方式へ戻す対応をします。

以下のコマンドをMySQLにログインし後実行

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

※今回はローカルかつ重要でないテスト用の環境なので上記のパスワード設定ですが本番環境などでは推奨できません

ついでにMariaDBについて

ローカル環境はMySQL8を使用して、仮想環境にはCentoOS7にデフォルトで入っているMariaDBを使用したのですが、その際にもエラー(1045: Access denied for user 'root'@'localhost' (using password: YES))が出たので以下のコマンドを追加で実行した

権限テーブルの再読み込み

DBにログインし、上記の認証方式へ戻すコマンドを実行後以下のコマンド(権限テーブルの再読み込み)実行

flush privileges;

サービスの再起動

systemctl stop mysqld
systemctl start mysqld

これでMariaDBも動くようになった(はず)

参考URL