docker容器访问宿主机mysql数据库
2022/4/18 19:12:37
本文主要是介绍docker容器访问宿主机mysql数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天用docker部署一个web服务时遇到总是连不上宿主机mysql数据库的问题,报SQLSTATE[HY000] [2002] Connection refused,经过测试,宿主机用相同配置可以连上,登入docker容器内就连不上,初步判断容器内通过localhost或127.0.0.1是连不上宿主机的。具体原因和解决方法如下:
原因:
-
docker容器内的localhost并不是指宿主机的localhost
-
docker在运行时就建立了虚拟网卡,并命名为docker0,在宿主机ifconfig可以看到网桥的ip是172.17.0.1(不同机器或者docker版本ip可能不同,需要查下自己的是多少)
解决方法:
- 在容器内通过172.17.0.1:3306访问宿主机的mysql
$ 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
- 设置宿主机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]>
- 修改容器web服务的db ip配置即可
这篇关于docker容器访问宿主机mysql数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7