什么阻碍了我的 mysql 连接?

什么阻碍了我的 mysql 连接?

我们在虚拟机上运行多个 docker 镜像。

sudo iptables -S显示了很多docker网络。

我们尝试连接到另一个网络中的外部 MySQL 数据库。

mysql --host=mysql.example.org --user=thisuser thatdatabase

我们收到错误信息:

错误 2002(HY000):无法连接到“mysql.example.org”上的 MySQL 服务器(115)

网络日志显示外部防火墙无法识别连接尝试。

我们尝试关闭 docker 并重试,但没有成功。

sudo traceroute mysql.example.org
traceroute to mysql.example.org (111.222.333.444), 30 hops max, 60 byte packets
1  localvm.example.org (172.17.0.1)  3071.799 ms !H  3071.763 ms !H  3071.754 ms !H

172.17.0.1不是本地系统的 IP 地址。

在另一个原始系统上我们可以连接到该实例。

我们尝试使用明确的路线,但没有成功。

ip route add 222.333.444.0/24 dev ens192

traceroute mysql.example.org
traceroute to mysql.example.org (correct external ip-address), 30 hops max, 60 byte packets
1  localvm.example.org (correct local ip-address)  3068.673 ms !H  3068.566 ms !H  3068.532 ms !H

关于如何缩小错误范围有什么建议吗?

是时候启动 wireshark 了吗?

VM 是 Debian 10,客户端是 mysql Ver 15.1 Distrib 10.3.22-MariaDB

答案1

结果我们必须告诉 docker 不要使用 172.17.0.0/24 网络。

根据如何配置默认网桥 docker0

我们改变了

/etc/docker/daemon.json
{
  "bip": "172.26.0.1/16"
}

systemctl restart docker;systemctl status docker

旧路线入口是

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ....            0.0.0.0         UG    100    0        0 ens192
...........     0.0.0.0         255.255.255.0   U     100    0        0 ens192
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

路线现在显示不同的网络:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.26.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

现在它与现有服务器不再冲突,并且可以连接。

非常感谢大家的帮助!

答案2

通常意味着系统上没有运行 MySQL 服务器,或者您在尝试连接服务器时使用了错误的 Unix 套接字文件名或 TCP/IP 端口号。您还应该检查您使用的 TCP/IP 端口是否被防火墙或端口阻止服务阻止。

相关内容