27

我有一个在 Debian 服务器上运行的 MySQL 实例,我可以毫无问题地在本地连接到它。但是,我无法远程连接到它。当我从命令行尝试此操作时,出现以下错误:

ERROR 2003 (HY000): Can't connect to MySQL server on '<server-ip>' (110)

我已将用户添加到 mysql 作为 'user'@'*' 和 'user'@'localhost'。此服务器中的 skip-networking 设置为 false 并且绑定地址在 my.cnf 中被注释掉。我还尝试使用以下命令在 iptables 中打开端口 3306:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

这是我使用 iptables -L 检索到的所有 iptable 防火墙规则的列表:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     tcp  --  anywhere             anywhere            tcp dpt:auth reject-with icmp-port-unreachable 
ACCEPT     icmp --  anywhere             anywhere            icmp type 8 code 0 state NEW,RELATED,ESTABLISHED,UNTRACKED 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:ftp state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:ssh state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:www state NEW 
ACCEPT     tcp  --  <my-server>          anywhere            tcp spts:1024:65535 dpt:mysql state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpts:49152:65534 state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 
LOG        all  --  anywhere             anywhere            limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ' 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 
LOG        tcp  --  anywhere             anywhere            tcp dpt:mysql LOG level debug 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

有谁知道我应该从这里去哪里?

4

5 回答 5

12

根据您的回复,您需要确定您和服务器之间是否有设备阻止您的连接。您还应该确保您可以在登录到服务器时通过该服务器的以太网地址远程登录到 3306 ……如果没有,您可能没有将服务绑定到以太网my.cnf……请参阅bind-address参数。

于 2011-04-19T09:21:15.047 回答
1

您应该检查您的 MySQL 服务器配置以查看它是否绑定到 127.0.0.1,然后如果您的应用程序位于同一服务器上,您只能连接到 mysql。有一种简单的方法,安装 webamin,您可以通过 Web 界面进行控制。

于 2013-06-12T04:44:54.330 回答
1

这可能是由于 3306 端口已关闭,请检查您的服务器端口状态

http://www.yougetsignal.com/tools/open-ports/

如果它显示已关闭,则意味着您无法从机器外部访问它以打开端口

ufw - 简单的防火墙

Ubuntu 的默认防火墙配置工具是 ufw。下面是一些如何使用ufw的例子:

首先,需要启用ufw。从终端提示符输入:

sudo ufw enable

打开一个端口(mysql):

sudo ufw allow 3306

要查看防火墙状态,请输入:

sudo ufw status
于 2017-02-24T05:40:34.000 回答
0

如果您使用 VPN 连接来连接远程数据库服务器并且遇到这种错误,那么只需检查两个简单的步骤...

1)在windows机器上,请进入“控制面板\网络和Internet\网络连接”路径,右键点击局域网,进入属性。单击 TCP/IPv4 并转到属性。确保 IP 和 DNS 服务器(如果您使用 DHCP 或不使用?)。

2)在此之后,请重新启动机器并再次检查。

希望这会奏效。就我而言,它有效。

注意:请确保您的所有设置都是正确的。这个答案很有趣,但它适用于我的情况:)

谢谢!

于 2017-06-21T16:06:11.980 回答
0

for me this was to enable the port 3306 in /etc/default/iptables file to allow the incoming traffic from any host by uncommenting the below given line:

#-A INPUT -p tcp --dport 3306 -j ACCEPT
于 2018-05-15T14:14:19.077 回答