前書き
WSL2 MySQLで検索してもなかなかpermissionの解決方法が見つからずにハマった人の為に記載する。(どいつもこいつもWindowsのDockerとリンクしやがって・・・GPU使わんのかい!)
環境
- Windows10 Insider Preview 2004(20206.1000)
- 4.19.128-microsoft-standard
- Ubuntu 20.04 LTS
現象
docker-compose up -d
でコンテナ起動をさせると以下のような感じでMySQLのコンテナが起動できない。
root@pc-name: docker-compose logs mysql
mysql_1 | mysqld: Cannot change permissions of the file 'private_key.pem' (OS errno 1 - Operation not permitted)
mysql_1 | 2020-09-10T05:04:53.449233Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for private_key.pem
mysql_1 | 2020-09-10T05:04:53.449629Z 0 [ERROR] [MY-010119] [Server] Aborting
こいつ(permission
)の対応策について記載したい
対応
/etc/wsl.conf
にマウントオプションを追加する。
追加するマウントオプション
[automount]
options = "metadata"
WSL2初めの方は基本存在しないと思うので以下の手順で対応する。
WSL2のディストリビューションに/etc/wsl.conf
を作成。
# ルートでログイン
user@pc-name:sudo -i
# wslのディストリビューションにwslの設定ファイルを新規作成
root@pc-name: sudo touch /etc/wsl.conf
# 設定ファイルを編集する。
root@pc-name: vi /etc/wsl.conf
マウントオプションを変更する。 i
でviコマンドをinsertモードにして以下を入力。
[automount]
options = "metadata"
ESCを押下後、上書き保存(:wq
)し、WSLを再起動。
# ルートログアウト
root@pc-name:exti
# wsl ログアウト
user@pc-name:exit
# WSL シャットダウン
wsl --shutdown
# WSLを起動+ログイン
wsl
これで再度Docker関係でPermissionのエラーが消えていると思います。
おまけ
以下のようなログは/var/lib/mysqlのマウントディレクトリが既に存在する為
そのディレクトリを削除することで解決する。
root@pc-name: docker-compose logs mysql
...
mysql_1 | 2020-09-10T05:00:42.590708Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
mysql_1 | 2020-09-10T05:00:42.590714Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
mysql_1 | 2020-09-10T05:00:42.590777Z 0 [ERROR] [MY-010119] [Server] Aborting