加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Docker容器内连接宿主机即Windows的Mysql服务器

发布时间:2022-12-03 13:03:06 所属栏目:MySql教程 来源:互联网
导读: Docker容器内连接宿主机即Windows的Mysql服务器
时间:2021-02-15
本文章向大家介绍Docker容器内连接宿主机即Windows的Mysql服务器,主要包括Docker容器内连接宿主机即Windows的Mysql服务器

Docker容器内连接宿主机即Windows的Mysql服务器

时间:2021-02-15

本文章向大家介绍Docker容器内连接宿主机即Windows的Mysql服务器,主要包括Docker容器内连接宿主机即Windows的Mysql服务器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

博主最近遇到一种情况,从服务器拷贝了一份数据库在宿主机Mysql服务器上mysql主机,想要用本地的数据库测试自己的代码正确性,但是项目程序都是靠docker一键部署的,于是必定要在docker容器里访问到本地的数据库。在探索中遇到了问题并得到了解决。在docker容器里localhost并不是指宿主机的localhost

由此原因,并不能在容器中通过localhost:3306访问到宿主机的mysql

docker在运行时就建立了虚拟网卡,并命名为docker0

我们可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信

宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.17.0.1)

我们可以在容器里通过172.17.0.1:3306访问到宿主机的mysql服务器

mysql服务器默认的设置为允许127.0.0.1段的ip地址访问

所以此时用172.17.0.1:3306仍然无法访问到宿主机

此时需要在设置一下mysql

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
 mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息


docker内的应用访问宿主机上的mysql和Redis

背景:宿主机部署MySQL、Redis,docker内部署tomcat、jdk

需求:tomcat内的应用访问宿主机的MySQL和Redis

方法:

一、连接地址切记不能用localhost和127.0.0.1

这些地址代表的都是容器内的系统,根本没有访问到宿主机,会一直报连接mysql/redis异常。

二、用docker的虚拟网卡地址

在宿主机查询网卡情况------ifconfig

docker0这块虚拟网卡的 inet 地址就是正确的本地ip(如172.17.0.1)

?

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!