わけあって、最近Dockerコンテナ上でMySQLを動かしています。

で、ある日突然(多分、docker composeがDocker CLIに統合されたタイミング)、windowsのWSL経由でMySQLの公式レポジトリ起動させようとすると、下のエラーを吐くようになりました。

mysqld: Error on realpath() on ‘/var/lib/mysql-files’ (Error 2 – No such file or directory)
2021-05-02T04:48:22.417681Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for –secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
2021-05-02 04:48:22+00:00 [ERROR] [Entrypoint]: Unable to start server.


‘/var/lib/mysql-files’がないそうです。それか権限がなくて開けないか。

RUN mkdir /var/lib/mysql-files

自分のようにwindows以外では/var/lib/mysql-filesが存在している人は失敗しないように下を使ってください。

RUN mkdir -p /var/lib/mysql-files

Dockerfileに上の行を追加してmysql-filesを作ったら解決しました。

他にもvolumesでローカルからマウントするとか、完全に同じ話ではないと思いますが、権限がないのでmysqlに権限を与えて実行する、mysql-filesの所有者権限をいじるとか、いろいろ解決策がありましたが、とりあえずこれで動くのでこれで行こうと思います。

フォルダが追加できるということは、権限ないというよりはフォルダが存在していないように思えます。

まだDocker CLIのアップデートをしていないのですが、Mac環境だとこのエラーは再現されないんですよね。

これ以上考えても無駄なような気がするので深堀するのはやめておきますが、DockerでもローカルのOSでも挙動が違うことがあるということを知りました。

t