【Docker】MySQLをアップグレードしたらハマった話

Jenkinsでコンテナでの分散ビルドを実行するためにDockerの接続設定を変更したらデーモンが起動しなくなってDockerを再インストールしてdocker-composeを立ち上げたらこのブログデータが入っているMySQLコンテナが立ち上がらなくなってというへっぽこエンジニア特有の負のスパイラルを繰り返してしまったので備忘録として残しておきます。
エラー内容
WordPress側のログに以下のような内容が大量に出力されていたのが決定打となりました。
Warning: mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in Standard input code on line 22タネ明かし
MySQLのバージョンを8.0まで上げてしまったのが原因でした。どうやら8.0からデフォルトのユーザ認証方式が変わったようで、パスワードでログインできなくなってしまったみたいです。
対策
何の捻りもありませんがパスワードによるログインを許可します。
まず docker-compose.yml に command を追記します。
wpmysql:
image: mysql:8.0
container_name: WordPressDB
command: '--default-authentication-plugin=mysql_native_password'
privileged: true
restart: always
# 以下略コンテナを起動してMySQLにログインします。
$ docker exec -it WordPressDB /bin/bashDBに接続します。
$ mysql -u root -pWordPressユーザのプラグインを変更します。
mysql> alter user 'USERNAME'@'%' identified with mysql_native_password by 'PASSWORD';これでWordPressが表示されるようになりました。めでたしめでたし。

