尝试连接到远程 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 上远程登录到<server-ip>
时会发生什么?
@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)的主要内容,如果未能解决你的问题,请参考以下文章
错误:不允许主机 xxx 连接到此 MySQL 服务器 [重复]
不允许主机 localhost 连接到此 MySQL 服务器 [关闭]
错误2003:无法连接到'localhost'上的MySQL服务器(10061)