赞
踩
docker容器内的localhost并不是指宿主机的localhost
docker在运行时就建立了虚拟网卡,并命名为docker0,在宿主机ifconfig可以看到网桥的ip是172.17.0.1(不同机器或者docker版本ip可能不同,需要查下自己的是多少.)
- $ docker exec -it 8686d3dda02c /bin/sh
- $ mysql -ushowx -p --database showx -P3306 -h172.17.0.1 #可以看到连上了,只是ip没有访问授权
- ERROR 1130 (HY000): Host '172.17.0.2' is not allowed to connect to this MySQL server
2.设置宿主机mysql允许docker0的虚拟网卡ip访问
- # 宿主机mysql设置允许用户showx通过172.17.0.2访问showx数据库的任意表
- $ mysql -uroot -p
- mysql>GRANT ALL PRIVILEGES ON showx.* TO 'showx'@'172.17.0.2' IDENTIFIED BY 'password' WITH GRANT OPTION;
- mysql>flush privileges;
-
- # docker内测试docker0 ip链接
- $ docker exec -it 8686d3dda02c /bin/sh
- $ mysql -ushowx -p --database showx -P3306 -h172.17.0.1
- MySQL [showx]>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。