не удалось подключиться к удаленному серверу mysql

Не удалось подключиться к удаленному серверу 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

Однако, когда я обращаюсь к серверу mysql с помощью Navicat на своем ноутбуке с Windows, появляется сообщение об ошибке:

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

Может ли кто-нибудь знать об этом или сообщить мне, как найти полезный журнал? Заранее спасибо.


person Junjie    schedule 06.08.2014    source источник
comment
Вы решаете это? У меня сейчас тоже такая проблема!   -  person Y.L.    schedule 16.09.2014


Ответы (3)


Я думаю, что ваш 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.

person Guo Song    schedule 06.08.2014
comment
Кажется, вы правы, я использую свой рабочий стол из нашего офиса, и, возможно, официальное руководство не позволяет этого, попробую дома позже. - person Junjie; 06.08.2014
comment
@jjs ты решаешь это? У меня сейчас тоже такая проблема! - person Y.L.; 16.09.2014

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

Я бы порекомендовал вам подключиться к серверу MySQL через SSH-соединение, чтобы вы подключались к серверу как пользователь localhost. Использование SSH должно позволить вам подключаться из вашего офиса, а также обеспечивать зашифрованное соединение и защиту от потенциальных атак «человек посередине». Я никогда не использовал Navicat, но настройки подключения MySQL Workbench упрощают подключение по SSH.

В целях безопасности вам также следует снова включить iptables на своем сервере и заблокировать доступ из внешней сети к порту 3306, чтобы только пользователи локального хоста (включая тех, кто использует туннель SSH) могли подключаться.

Кроме того, вы также можете включить SSL для безопасного подключения к серверу, но логистика создания, подписи и распространения закрытых ключей и открытых сертификатов на сервер и всех клиентов усложняет реализацию. Кроме того, при подключении через SSL используется тот же TCP-порт (3306), что не помогает в случае блокировки трафика на этот порт.

person Anthony Geoghegan    schedule 06.08.2014

проверьте файл /etc/mysql/my.cnf, и добавьте # перед адресом привязки=127.0.0.1

person Y.L.    schedule 16.09.2014
comment
Где этот путь /etc/mysql/my.cnf ? - person Nairum; 29.07.2019