##はじめに
ちょっとしたことだけど、詰まったのでメモ用に。
docker-compose でMySQL環境簡単構築の記事を参考に環境構築を行っていました。
##事象
上記の記事ではMySQL5.7でしたが、MySQL8.0でやるとphpMyAdminがコケる
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください。
とか言われてしまう。
解決法を検索していると、コンテナ内のconfig.inc.phpをごちゃごちゃと触っているものが出てきてなんか面倒くさそうだった。
##解決方法
my.cnf
に
default_authentication_plugin=mysql_native_password
を追記したらちゃんとphpMyAdminが動きました。
具体的には上記の記事のmy.cnf
に追記して
my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8mb4
と言った感じです。
##原因
MySQL 8.0にアップデート!注意すべき点を参照しておりますと、どうやらMySQL8.0の認証方法が(たぶん)変わったらしい。
そこで、旧MySQL Clientとの互換性を確保できる上記の文言を書くことで、とりあえず問題が突破できた感じになります。