本日11時ごろ? あたりからCircleCIで以下のようなエラーが起こりMySQLが起動しなくなりました。
2021-03-18 03:21:57+00:00 [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_PASSWORD cannot be used for the root user
Use one of the following to control the root user password:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
どうやらdockerイメージのバージョンアップによるものらしいです。
今回はちょっと脳死で暫定対処したので、その方法を紹介します。
2021/03/19追記
こちらの問題はすでに解決済みで、現在は作業不要です。
また、こちらの記事では不具合の内容としてMYSQL_ALLOW_EMPTY_PASSWORD
が使えなくなったと記載しておりましたが、実際にはMYSQL_USER:user
を指定しないとエラーになる。というのが正でした。
解決方法
① mysqlのDocker imageのバージョンを固定する
動いてた時のバージョンに固定することで、対処することができます。
② パスワードを使う方法に設定を変更する
今回は「②」の方法を選びました。
詳細は以下です。
パスワードを使う方法に設定を変更する
公式のサンプルを参考にします。
https://circleci.com/docs/ja/2.0/postgres-config/#mysql-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%BE%8B
上記の環境変数の書き方を参考に設定ファイルを書き換えます。
アプリケーション側も、DB接続設定を変更します。
設定前後の設定
変更前
jobs: > [job-name]: > environment: > MYSQL_ALLOW_EMPTY_PASSWORD: true
変更後
jobs: > [job-name]: > image: : circleci/mysql:8.0 > environment: > MYSQL_ROOT_PASSWORD: rootpw
jobs: > [job-name]: > image: : circleci/mysql:8.0 > environment: > MYSQL_DATABASE: circle_test
jobs: > [job-name]: > image: : circleci/mysql:8.0 > environment: > MYSQL_USER: user
jobs: > [job-name]: > image: : circleci/mysql:8.0 > environment: > MYSQL_PASSWORD: passw0rd
-
MYSQL_ALLOW_EMPTY_PASSWORD
が動かなかったのでパスワードを使う方式に変更 - enviromentを書く場所をドキュメントに合わせるため変更
以上です。