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

Posted

技术标签:

【中文标题】尝试连接到远程 MySQL 主机(错误 2003)【英文标题】:Trying to connect to remote MySQL host (error 2003) 【发布时间】:2011-08-08 12:00:29 【问题描述】:

我有一个在 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

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

【问题讨论】:

当您在 3306 上远程登录到 &lt;server-ip&gt; 时会发生什么? @Mike:我收到消息“telnet:无法连接到远程主机:连接超时”。 错误 2003 在这里详细说明:webyog.com/faq/content/23/15/en/… +1 我喜欢你从问题中学到的东西多于答案。谢谢 【参考方案1】:

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

【讨论】:

谢谢。我认为我和服务器之间有一个设备。我已经询问了服务器所在位置的问题,目前正在等待回复。登录到服务器后,我可以远程登录到 3306,尽管连接很快就关闭了。我会在发现后发布更多内容。 我设法通过中间设备访问,现在我可以远程连接。干杯!【参考方案2】:

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

【讨论】:

从问题“绑定地址被注释掉”【参考方案3】:

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

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

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

ufw - 简单的防火墙

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

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

sudo ufw enable

打开一个端口(mysql):

sudo ufw allow 3306

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

sudo ufw status

【讨论】:

【参考方案4】:

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

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

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

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

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

谢谢!

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于尝试连接到远程 MySQL 主机(错误 2003)的主要内容,如果未能解决你的问题,请参考以下文章

从远程服务器连接到 Amazon EC2 上的 mysql

错误:不允许主机 xxx 连接到此 MySQL 服务器 [重复]

不允许主机 localhost 连接到此 MySQL 服务器 [关闭]

错误2003:无法连接到'localhost'上的MySQL服务器(10061)

#2003 - 无法连接到“localhost”上的 MySQL 服务器 (10061)

错误代码 2003不能连接到MySQL服务器在*.*.*.*(10061)