Windowsでdocker mysqlに接続できないエラー

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

これで私はエラーがなくなりました