【解決方法】Macのvagrantでnfsでマウントした際にゲストOSのDockerでMySQL初期化エラー
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Macのvagrantでnfsでマウントした際にゲストOSで起動しているDockerで
MySQLのイメージを利用する際に初期化エラーが発生したため
解決のための手順をメモしました。
環境
- Vagrant 2.0.3
- CentOS 7.4
- Docker 18.03
- MySQL 5.7
発生したエラー
初期化時のエラー
specified but the data directory exists and is not writable.
という
書き込みができませんというエラーが発生しました。
logInitializing database
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
2018-05-21T14:40:41.055344Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
2018-05-21T14:40:41.055433Z 0 [ERROR] Aborting
原因
共有ディレクトリのアクセス権限がないため
ゲストOS側でホストOSとの共有ディレクトリに対してのアクセス権限がないことで ファイルの書き込みができなかったためです。
具体的な場所は/var/lib/mysql
docker-composeのvolumes
で設定している/var/lib/mysql
のディレクトリ
docker-compose.ymlversion: '3'
services:
db:
image: mysql
command: mysqld
user: mysql
ports:
- 3307:3306
volumes:
- ./db/data:/var/lib/mysql
解決方法
Vagrantfileの修正
Vagrantfileに以下のように設定します。
Vagrantfile ## NFS Share
config.vm.synced_folder ".", "/vagrant-nfs", type: "nfs"
config.nfs.map_uid = 501
config.nfs.map_gid = 20
vagrantを再起動
Vagrantをリロードします。
terminal$ vagrant reload
権限の確認
設定が正しく変更されているか/etc/exports
を確認します。
terminal$ sudo vi /etc/exports
uidとgidを確認
uidとgidが正しく設定されているか確認します。
/etc/exports "/Users/xxxx/vagrant" 192.168.33.XX -alldirs -mapall=501:20
記事Article
もっと見る- article
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処