无法连接到远程MySQL服务器,但可以使用localhost


0

我无法连接到我的远程MySQL服务器

UNABLE TO CONNECT TO ANY OF THE SPECIFIED MYSQL HOSTS

我做了一些测试,它适用于服务器上的localhost。

我的用户有权从任何主机连接

在此输入图像描述

这是服务器的网络设置

在此输入图像描述

我将地址绑定到 0.0.0.0

我正在尝试使用MySQL连接器连接visual studio,我也尝试使用C#中的连接字符串(两者都在本地工作)

在此输入图像描述

此外,Windows防火墙允许TCP的默认端口,我转发3306到路由器上的服务器IP(我不知道是否有必要)

如果我telnet localhost 3306在我的服务器上它可以工作,但如果我telnet 216.x.x.x 3306从远程计算机,它不起作用。我重新启动了路由器,然后将端口转发到服务器。是端口转发是路由器上唯一要做的事情吗?

任何想法为什么它不起作用?

谢谢


嘿Mac,你有特权吗?你可以使用下面的命令完成它,甚至重新启动mysql服务器。mysql> FLUSH PRIVILEGES;

此外,使用以下命令检查您的用户拥有的权限:SHOW GRANTS FOR usager; 您应该能够看到类似的内容:授予所有特权TO 'usager' @ '%' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION

是的,这是我为这个用户获得的,我已经刷新了特权。仍然没有运气:(
Marc

使绑定地址“未选中”并重新启动服务器。这条线实际上应该在你的my.cnf

对不起,它不起作用
Marc

Answers:


1

主要是确保您的端口转发处于活动状态并且它正常工作。

这个问题很常见,很荒谬 - 路由器,Windows防火墙,或许是一个额外的本地防火墙都必须打球。有时在路由器等处需要重新启动。

我的建议是在查看其他部分之前绝对肯定地检查端口转发规则是否有效。


0

设置绑定地址到外部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来允许所有的ips。


当我将地址绑定到我的外部IP时,服务器因为意外错误而无法重启
Marc

如果你提到你从家里提供这个mysql,那将是非常有用的。这会产生很大的不同,因为您租用的大多数服务器都会将其外部IP地址直接绑定到网卡上。在你的情况下,你需要一个路由器,需要更多的配置。你无法将mysql绑定到外部ip的错误是服务器没有这个ip。它有类似192.168的东西。由于端口转发您的路由器隧道端口3306上的传入流量到您的服务器。
syss 2013年

那么我应该将绑定地址设置为192.168.xx吗?
Marc 2013年

0

我知道了。

几个小时后,我注意到有一个启用端口转发的复选框。这就是它无法正常工作的原因......一旦检查完毕,它就可以了!

在此输入图像描述

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.