Using the official MySQL Docker image from Docker Hub, I recently ran into the error:
Host '172.18.0.1' is not allowed to connect to this MySQL server
The only change I had made to my
docker-compose.yml file was:
mysql: image: mysql:5.6 ports: - '3306' volumes: # 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.