我已经在我的 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 级别的安全性。