【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.ymlcommand を追記します。

  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/bash

DBに接続します。

$ mysql -u root -p

WordPressユーザのプラグインを変更します。

mysql> alter user 'USERNAME'@'%' identified with mysql_native_password by 'PASSWORD';

これでWordPressが表示されるようになりました。めでたしめでたし。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日記

前の記事

昔描いたキャリアパス