【问题标题】:Trying to connect to remote MySQL host (error 2003)尝试连接到远程 MySQL 主机(错误 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 我喜欢你从问题中学到的东西多于答案。谢谢

标签: mysql debian iptables mysql-error-2003


【解决方案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】:

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

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

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

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

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

    谢谢!

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-15
        • 2018-02-09
        • 2018-12-05
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        相关资源
        最近更新 更多