i-icc’s blog

製作物あげたり日記書いたり。

DockerでMySQLが立たなくなった備忘録

初めに

docker compose を利用して MySQL + 他コンテナを立てて開発をしていたところ、突如としてDBが立たなくなってしまった...

また同様の問題に立ち会うこともあると思うので備忘録として記事に残します。

環境

本編

起きた事象

立ち上がりはするがその後すぐに落ちてしまう。

2024-04-03 13:49:08 2024-04-03 13:49:08+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-04-03 13:49:12 find: '/var/lib/mysql/mysql.sock': No such file or directory
2024-04-03 13:49:13 find: '/var/lib/mysql/mysql.sock': No such file or directory
2024-04-03 13:49:13 chown: cannot access '/var/lib/mysql/mysql.sock': No such file or directory
2024-04-03 13:49:13 chown: cannot access '/var/lib/mysql/mysql.sock': No such file or directory

ログの意味

mysql.sock ファイルが無いと言われたが mysql.sock とはいったい何ぞや?

mysql.sock is 何
* サーバーとクライアントの通信にはソケット通信とTCP通信があるよ
* MySQLサーバーとクライアントでソケット通信するためのファイルだよ

はぇ〜なるほど...上記のファイルが無いから落ちてると...

確認

※ ここは試行錯誤パート、解決方法はこちら

困った時はまず再起動、ってことで本体を再起動するもログは変わらない。

該当ディレクトリ(/var/lib/mysql/)はホストマシンのディレクトリをマウントしているのでそこを確認する。
あれ?ホストマシンにはあるぞ?
てことは権限周りとかでうまくマウント出来てないのか?

drwxr-xr-x@ 23 i-icc  staff  736 Apr  7 16:24 db/
com.apple.provenance     11
com.docker.grpcfuse.ownership    20

権限周りは大丈夫そう...

解決

この issue にこのような記述があった

I am getting the same error. If I remove the mysql.sock symlink from my host directory before starting the container, the container starts up just fine (recreating the symlink in the host directory).

ホストマシンの mysql.socket を削除すればいいと言う。
解決!!! これだけでよかったんですね。

原因

思い返すと直前にPCが固まり、正しい手順でコンテナを止めずに再起動をしていたような...?
上記のせいで本来削除されるべきファイルが残ってしまい今回の現象が起きてしまっていたんですかね? また、同じ現象にぶつかる気がするのでその時はこれを読み返します。