无法连接到远程 MySQL 服务器但可以使用本地主机

无法连接到远程 MySQL 服务器但可以使用本地主机

我无法连接到远程 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

我得到了它。

几个小时后,我注意到有一个复选框可以启用端口转发。这就是它不起作用的原因……一旦选中,它就可以正常工作!

在此处输入图片描述

相关内容