返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1880|回复: 0

[转载] 【转载】Docker容器的程序连接宿主机的MySQL

[复制链接]
发表于 2022-12-19 12:29:10 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
Docker容器的程序连接宿主机的MySQL



docker里面的代码生成的数据需要写入到宿主机的Mysql服务器上,想要用本地的数据库测试自己的代码正确性,项目程序安装在docker容器中,于是必定要在docker容器里访问到本地的数据库。

(1)在docker容器里localhost并不是指宿主机的localhost,因此不能在容器中通过localhost:3306访问到宿主机的mysql,也不可以通过127.0.0.1访问。

(2)docker在运行时就建立了虚拟网卡,并命名为docker0,可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信。


  1. [root@VM-8-15-centos ~]# ifconfig
  2. docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  3.         inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
  4.         inet6 fe80::42:53ff:fed0:4c11  prefixlen 64  scopeid 0x20<link>
  5.         ether 02:42:53:d0:4c:11  txqueuelen 0  (Ethernet)
  6.         RX packets 4489  bytes 6944799 (6.6 MiB)
  7.         RX errors 0  dropped 0  overruns 0  frame 0
  8.         TX packets 3379  bytes 999348 (975.9 KiB)
  9.         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

复制代码


(3)宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.17.0.1),因此,可以在容器里通过172.17.0.1:3306访问到宿主机的mysql服务器(mysql授权172.17.0.1这个docker网卡ip即可)。

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

如果用172.17.0.1:3306仍然无法访问到宿主机的话,需要设置一下mysql的访问权限:

如果用的是宝塔面板,可以给nacos这个数据库设置权限为所有人


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



游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表