状況
開発者のPCがWindows, Macで混在している中で、PHP8.2 + mysql8 +nginxのローカル開発環境の構築をしています。Windows, Macのファイルシステムの差で結構色々なエラーに遭遇するんですよね…
Docker Compose を使用してのPHP8.2+mysql8+nginxのローカル開発環境の構築の記事は後ほどアップ予定です。
こんなエラーが…
mysqlのコンテナでmysqlに入ったら以下のような文言が出てしまいました。
mysqld: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.
解決
なるほど、パーミッションを変えればいいんだよね!
ということで私は以下のようにMySQLのDockerファイルを書き換えました。
FROM mysql:8.0.33
COPY ./container/db/conf/my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 644 /etc/mysql/conf.d/my.cnf
600ではinit_dumpになぜかmy.cnfの設定が適用されず文字化けの嵐になりました。
my.cnfに正しい設定がされていれば正常に動くはず。
my.cnfをdocker-compose.ymlでマウントしてる方は以下の記事を参考にすると良いかもしれません。
https://qiita.com/rabbitbeef/items/14433a2c0a6f85c3b476
Mysqlが起動しなくてハマった話
上記のようにDockerファイルを変更した後、私はしばらくmysqlが起動しないエラーに悩まされました。公式の言う通りにマウントしてないからか?それとも先ほどのパーミッションの指定が良くないのか?と散々悩んだあげく、my.cnfを
[client]
port = 3306
としたら動いたので、my.cnf自体が原因で動かなくなっただけなのでした。
もしmy.cnfのパーミッション変更するとmysqlサーバが起動しなくなる場合は、my.cnfの設定を疑ってみましょう。(まあそうですよね、っていう話なんだけどね)
ちなみにmy.cnfの以下の部分が原因で動きませんでした。この話はまた後日記事にします。
lower_case_table_names = 1