连接远程MySQL服务器失败。

5

连接远程mysql服务器(CentOS)失败,我尝试了很多方法但没有帮助。

我可以成功通过ssh访问远程主机,并且3306端口正在监听:

[root@fabulous ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      9979/mysqld

我已关闭了iptables:

[root@fabulous ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]

远程服务器上的Mysql客户端运行良好,并且允许在每个主机上进行访问:
mysql> select user,host from user;
+-------+--------------------+
| user  | host               |
+-------+--------------------+
| root  | %                  |
| root  | 127.0.0.1          |
| root  | fabulous.ma2oo.com |
| root  | localhost          |
+-------+--------------------+
4 rows in set (0.00 sec)

MySQL的全局配置:

[root@fabulous ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8

然而,当我在我的Windows笔记本电脑上使用Navicat访问MySQL服务器时,错误信息是:
2003 - Can't connect to MySql server on 'XX.XX.XX.XX' (10038)

当我使用telnet访问该服务器上的相应端口时,出现了以下错误信息:
C:\Users\shijunji>telnet 107.170.239.240 3306
Connecting To 107.170.239.240...Could not open connection to the host, on port 3306: Connect failed

有人知道它或者能告诉我如何找到有用的日志吗? 提前致谢。


1
你解决了吗?我现在也遇到了同样的问题! - Y.L.
3个回答

2
看起来端口3306被防火墙或其他网络设备在您和CentOS服务器之间阻止了。
我建议您通过SSH连接到MySQL服务器,这样您就可以作为本地用户连接到服务器。使用SSH应该允许您从办公室连接,同时提供加密连接并保护免受潜在的中间人攻击。我从未使用过Navicat,但是MySQL Workbench的连接设置使得使用SSH连接变得容易。
出于安全考虑,您还应该重新启用iptables,并阻止外部网络访问端口3306,以便只有本地用户(包括使用SSH隧道的用户)可以连接。
顺便说一下,您也可以启用SSL以安全地连接到服务器,但是创建、签署和分发私钥和公共证书的物流使其更难实现。此外,通过SSL连接使用相同的TCP端口(3306),这并不有助于阻止对该端口的流量。

2
我认为你的Navicat或Windows操作系统可能存在问题。
在我的本地环境中,
songguo@songuo:~$ telnet 107.170.239.240 3306
Trying 107.170.239.240...
Connected to 107.170.239.240.
Escape character is '^]'.
4
5.1.73
^^=Vxyw1P"Ue}ffL+.G
Connection closed by foreign host.
songguo@songuo:~$ mysql -uroot -h107.170.239.240 -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'211.151.238.51' (using      password: YES)

所以,如果我有正确的密码,就可以连接到mysql服务器。

看起来你是对的,我正在使用我们办公室的台式电脑,也许官方指南不允许这样做,稍后会在家里尝试。 - Junjie
@jjs 你解决了吗?我现在也遇到了同样的问题! - Y.L.

0
请检查您的 /etc/mysql/my.cnf 文件,并在 bind-address=127.0.0.1 前面添加 #。

这个路径 /etc/mysql/my.cnf 在哪里? - Nairum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接