How to fix "Host '' is not allowed to connect" with MySQL Docker

Using the official MySQL Docker image from Docker Hub, I recently ran into the error:

Host '' is not allowed to connect to this MySQL server

The only change I had made to my docker-compose.yml file was:

  image: mysql:5.6
    - '3306'
    # Use this option to persist the MySQL DBs in a shared volume.
    - ./mysqldata:/var/lib/mysql:rw,delegated
    # Use this option to persist the MySQL DBs in a data volume.
    # - db_data:/var/lib/mysql

I switched from using a data volume (db_data) to mounting a volume from my host (mysqldata in the current directory), and after the next time I did a docker-compose down and docker-compose up, I started seeing the error about my host not being allowed to connect to the MySQL server.

I'm not 100% sure why a data volume works, while a shared volume doesn't, but the fix is to make sure you clear out the contents of the shared directory between rebuilds of the Docker environment. See this comment in the MySQL image's GitHub issue queue for more details.


Thanks for posting this, you just saved my sanity! Spent a few hours trying to understand why mounting with an canonical path wasn't working. As soon as I hooked up using ~ with a linked directory pointing to the exact same location it worked!