Windowsでdocker(Docker for Windows, Docker Toolbox)を使いmysqlに接続する際に下記のようなエラー、もしくはmysqlに関するエラーが起きたときに解決策となりうる方法を記述します。
[Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.db_1 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
ここのサイトに書いてるようにDocker for windows(私はDocker Toolboxだが同じ現象が起きた)でmysqlを使用する場合、権限の問題で”/var/lib/mysql”のマッピングができないので、Docker Volumeを使用する必要があるみたいです。
volumes: db-volume: # 追記 services: #省略 db: container_name: "app_db" build: ./docker/db ports: - "3306:3306" volumes: #- ./docker/db/data:/var/lib/mysql:delegated #この行を消す - db-volume:/var/lib/mysql:delegated # 追記,こっちのvolumeを使う - ./docker/db/conf.d:/etc/mysql/conf.d:delegated - ./config/schema:/docker-entrypoint-initdb.d:delegated environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: app MYSQL_USER: app MYSQL_PASSWORD: app TZ: "Asia/Tokyo" hostname: db
そして上で記述したvolumeを作成します
$ docker volume create --name=db-volume db-volume
これで私はエラーがなくなりました