原因
MySQL5.7までの認証プラグインにはmysql_native_passwordがデフォルトで使用されていましたがMySQL8より新たに追加されたcacing_sha2_passwordがデフォルトに変更されましたがクライアント側が対応していないため。
解決法1
docker-compose.ymlに以下の行を追加すればOKです。すでに構築済みでも大丈夫です。
command: --default-authentication-plugin=mysql_native_password
解決法2
DBのレコードを書き換える方法です。DB内に入っている値を書き換えるので、一時的な解決方法です。
以下の実行例はdocker-composeで立ち上げている場合
docker exec -it <repository_name>-db-1 bash
passwordの部分は任意の文字列に置き換えてください。
# mysql -u root -p > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password' > flush privileges;
発生するタイミング
- 初期セットアップ時。
- MySQLのDocker Imageのバージョンを上げたり(あがってしまったり)するとDBのユーザデータが初期化される場合がある様子。
Comments