Mysql 不接受远程连接

Mysql 不接受远程连接

我已经在我的 CentOS 6.5 64 位服务器上配置了 MySQL,并将其配置为接受来自任何 IP 的远程连接。

尝试通过 HeidiSQL 连接时显示以下错误:

SQL Error (2003): Can't connect to MySQL server on 'ip' (10060)

这是我的配置:

/etc/my.conf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=SERVERIP
# 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 用户:

mysql> SELECT User, Host, Password FROM mysql.user;
+--------+--------------------+-------------------------------------------+
| User   | Host               | Password                                  |
+--------+--------------------+-------------------------------------------+
| root   | localhost          | *|
| root   | nl.-----------.net | *|
| root   | 127.0.0.1          | *|
| radius | localhost          | *|
| radius | %                  | *|
| root   | %                  | *|
+--------+--------------------+-------------------------------------------+

iptables:

[root@nl ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sat Aug  2 08:39:22 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2269:299675]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sat Aug  2 08:39:22 2014

SELinux 配置:

SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

我的主机说他们那边没有阻止任何端口。我禁用了 PC 上的防火墙,但仍然出现相同的错误。MySQL 正在服务器上运行。

提前致谢

答案1

您遇到的问题很可能是:

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

规则顺序错误。iptables 规则按“从上到下”的顺序进行评估,第一个匹配的规则(极少数例外)是最后一个。由于规则REJECT前面还有一条规则ACCEPT,因此 REJECT 规则优先,连接被拒绝。

在您的规则集中反转这两个规则的顺序,您可能会发现错误消失。

我还建议您不允许使用 MySQLroot帐户进行远程登录,根据mysql.user表内容来看,您似乎是这么做的,特别因为您没有采取任何措施来限制允许从何处进行 Internet 连接。相反,请使用专用帐户并为其授予访问相应数据库所需的权限,同时考虑加强 IP 级别的安全性。

相关内容