1

Я настроил MySQL на моем 64-битном сервере CentOS 6.5 и настроил его на прием удаленных подключений с любого 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

Мой хост сказал, что порты на их конце не заблокированы. Я отключил брандмауэр на своем ПК, и он все еще выдал мне ту же ошибку. MySQL работает на сервере.

заранее спасибо

1 ответ1

0

Вот, скорее всего, ваша проблема:

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

Порядок правил неправильный. Правила iptables оцениваются сверху вниз, и первое соответствующее правило (за очень немногими исключениями) является последним. У вас есть правило REJECT предшествующее правилу ACCEPT , поэтому правило REJECT имеет приоритет, и соединение отклоняется.

Обратный порядок этих двух правил в вашем наборе правил, и вы, вероятно, обнаружите, что ошибка исчезнет.

Я бы также предположил, что вы не разрешаете удаленный вход в систему с использованием учетной записи root MySQL, поскольку вы, похоже, делаете это на основе содержимого таблицы mysql.user , особенно потому, что вы ничего не делаете, чтобы ограничить место подключения к Интернету разрешено с. Вместо этого используйте выделенную учетную запись и предоставьте ей необходимые разрешения для соответствующих баз данных, а также подумайте об усилении безопасности на уровне IP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .