尝试连接到远程MySQL主机(错误2003)

时间:2011-04-19 08:47:44

标签: mysql debian iptables mysql-error-2003

我在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

有谁知道我应该从哪里开始?

5 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:1)

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

答案 2 :(得分: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

答案 3 :(得分:0)

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

1)在Windows机器中,请转到&#34;控制面板\网络和Internet \网络连接&#34;路径并右键单击局域网并转到属性。单击TCP / IPv4并转到属性。确保IP和DNS服务器(如果您使用DHCP?)。

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

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

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

谢谢!

答案 4 :(得分:0)

对我来说,这是通过取消注释下面给定的行来启用/etc/default/iptables文件中的端口3306以允许来自任何主机的传入流量:

#-A INPUT -p tcp --dport 3306 -j ACCEPT