简体   繁体   中英

Cannot connect to MySQL server inside Docker

First I run mysql image:

docker run -e MYSQL_ROOT_PASSWORD=password  -d  -p 127.0.0.1:3308:3306 mysql

Then I use container bash:

docker exec -it my_container_name bash

In Bash I can successfully connect to MySQL server via command:

mysql -uroot -ppassword

But when I try to connect to MySQL container from Windows cmd:

mysql -uroot -ppassword -h127.0.0.1 -P3308

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (10061)

If I connect to 192.168.99.100 instead (this ip is returned by docker-machine ip ), then the result is the same.

The question is: How do I correctly expose my MySQL port inside Docker to outside Windows?

The error is in your port mapping in the original docker run command, you just need to provide the ports, not the IP address:

docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3308:3306 mysql

You can run docker ps -a to check for the port mapping in the running containers.

You should now be able to connect to MySQL using

mysql -uroot -ppassword -h192.168.99.100 -P3308

First, check netstat -an to make sure the port is open in Windows. If it is, also check the Windows firewall to make sure nothing is blocking connections to the port.

Most of my Docker experience is in CoreOS, so I'm not exactly sure how Windows handles routing traffic into the container. In CoreOS, it uses a proxy . If there is a proxy in Windows, make sure nothing is interfering with it.

Changing the port in which I was running the image worked. I checked if this port was used by something else, but it was not used. so I just -desperately- run a new container in a different port '3309'. and it worked fine!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM