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

发布于 2024-11-01 22:23:43 字数 2044 浏览 5 评论 0原文

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

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

我已将用户作为“user”@“*”和“user”@“localhost”添加到 mysql。该服务器中的skip-networking设置为false,并且bind-address在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

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

I have a MySQL instance running on a Debian server and I can connect to it locally with no problems. However, I am unable to connect to it remotely. When I try this from my command line I get the following error:

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

I've added the user to mysql as 'user'@'*' and 'user'@'localhost'. skip-networking in this server is set to false and the bind-address is commented out in my.cnf. I've also attempted to open port 3306 in iptables using the following command:

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

Here is a listing of all my iptable firewall rules, which I retreived using iptables -L:

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

Does anyone have any idea where I should go from here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

剑心龙吟 2024-11-08 22:23:43

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

Based on your response, you need to find if there is a device between you and the server that blocks your connection. You should also ensure that you can telnet to 3306 on that server's ethernet address when logged into the server... if not, you probably have not got the service bound to the ethernet in my.cnf... see the bind-address parameter.

独自←快乐 2024-11-08 22:23:43

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

You should check your MySQL Server configuration to see if it bind to 127.0.0.1, then you can only connect to mysql if your app is on same server.
There's an easy way, to have webamin installed and you can control via web interface.

挽心 2024-11-08 22:23:43

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

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

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

ufw - 简单的防火墙

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

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

sudo ufw enable

要打开端口 (mysql):

sudo ufw allow 3306

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

sudo ufw status

This may due to 3306 port is closed , check your server port status

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

If it shows closed, that means you can't access it from out side the machine , to open the port

ufw - Uncomplicated Firewall

The default firewall configuration tool for Ubuntu is ufw.
The following are some examples of how to use ufw:

First, ufw needs to be enabled. From a terminal prompt enter:

sudo ufw enable

To open a port (mysql):

sudo ufw allow 3306

To see the firewall status, enter:

sudo ufw status
朮生 2024-11-08 22:23:43

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

1) 在 Windows 计算机中,请转到“控制面板\网络和 Internet\网络连接”路径并右键单击局域网并转到属性。单击 TCP/IPv4 并转到属性。确保 IP 和 DNS 服务器(是否使用 DHCP?)。

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

希望这会起作用。就我而言,它有效。

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

谢谢!

If you use VPN connection to connect remote database server and you got this kind of error then just check it out two simple steps...

1) In windows machine, please go to "Control Panel\Network and Internet\Network Connections" path and right click on local area network and go to properties. Click on TCP/IPv4 and go the properties. Make sure the IP and DNS server(if you use DHCP or not?).

2) After this please restart the Machine and check it out again.

Hope this will work. In my case it works.

Note: Please make sure all your settings are correct. This answer is funny but it works in my case :)

Thanks!

小嗷兮 2024-11-08 22:23:43

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

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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文