我无法连接到远程 MySQL 服务器
UNABLE TO CONNECT TO ANY OF THE SPECIFIED MYSQL HOSTS
我做了一些测试,它可以与服务器上的本地主机一起工作。
我的用户有权从任何主机进行连接
这是服务器的网络设置
我将地址绑定到0.0.0.0
我正在尝试使用 MySQL 连接器连接 Visual Studio,我也尝试使用 C# 中的连接字符串(两者在本地均可用)
另外,Windows 防火墙允许 MySQL 默认 TCP 端口,我将 3306 转发到路由器上的服务器 IP(我不知道是否有必要)
如果我telnet localhost 3306
在我的服务器上执行此操作,它可以正常工作,但如果我telnet 216.x.x.x 3306
从远程计算机执行此操作,则不起作用。我重新启动了路由器,并将端口转发到服务器。端口转发是路由器上唯一要做的事情吗?
知道为什么它不起作用吗?
谢谢
答案1
首先确保您的端口转发处于活动状态并且正常工作。
这种问题太常见了,简直荒谬——路由器、Windows 防火墙,也许还有额外的本地防火墙都必须配合。有时路由器需要重新启动,等等。
我的建议是,在查看其他部分之前,一定要积极检查端口转发规则是否正常工作。
答案2
将绑定地址设置为您的外部 IP (216.。.*) mysql 服务器需要此信息来了解应侦听哪个 IP。此后,重新启动并尝试连接到您的服务器。
如果没有,请尝试将您的 IP 添加到 iptables(防火墙)
iptables -A INPUT -p tcp -s 10.10.10.10 --sport 1024:65535 -d 216.*.*.* --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 216.*.*.* --sport 3306 -d 10.10.10.10 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
改成216.。.* 为外部服务器 IP,10.10.10.10 为您想要连接的 IP。或者您输入 0/0 而不是 10.10.10.10 以允许所有 IP。
答案3
我得到了它。
几个小时后,我注意到有一个复选框可以启用端口转发。这就是它不起作用的原因……一旦选中,它就可以正常工作!