Не может соединиться с MySQL с другого сервера

У меня есть два сервера на той же подсети.

  • 192.168.100.1 (mysql)
  • 192.168.100.2 (php)

MySQL, кажется, хорошо работает на, он - поле, но я, может казаться, не соединяюсь с ним. Это и поля человечности и iptables, и ufw не работают. Следующие команды - все от самого поля MySQL. Ни один из них не работает от .100.2 (php) поле.

my.cnf

#bind-address           = 127.0.0.1
bind-address = 192.168.100.1

netstat говорит, что это верно:

root@192.168.100.1 /etc/mysql $ netstat -plutn
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:22              0.0.0.0:*               LISTEN      8583/sshd       
tcp        0      0 192.168.100.1:3306      0.0.0.0:*               LISTEN      30654/mysqld    
tcp        0      0 0.0.0.0:2828            0.0.0.0:*               LISTEN      29946/monit     
tcp        0      0 0.0.0.0:1167            0.0.0.0:*               LISTEN      23175/cdp       
tcp6       0      0 :::22                   :::*                    LISTEN      8583/sshd  

в telnet говорится, что это хорошо

root@192.168.100.1 /etc/mysql $ telnet 192.168.100.1 3306
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.
[
5.5.40-0ubuntu0.12.04.1&KM~Se$!u??L\hw=gp{<Uvrmysql_native_password

!#08S01Got packets out of orderConnection closed by foreign host.

клиент mysql говорит, что это хорошо:

root@192.168.100.1 /etc/mysql $ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

Когда я пытаюсь соединиться от .100.2 Я ничего не возвращаю от соединения до него тайм-ауты:

root@192.168.100.2 /etc/php5/fpm $ mysql -uroot -p -h 192.168.100.1 --connect-timeout 4
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.1' (4)

Я могу ping .100.1 от .100.2 поле, хотя с sub временем отклика мс.

Вот настройки MySQL Grant:

mysql> SELECT user,host from mysql.user;
+------------------+--------------+
| user             | host         |
+------------------+--------------+
| root             | 127.0.0.1    |
| root             | 192.168.1.%  |
| root             | 192.168.100.%|
| root             | 192.168.200.%|
| root             | ::1          |
| debian-sys-maint | localhost    |
| example          | localhost    |
| o3backup         | localhost    |
| root             | localhost    |
| root             | voice-mysql  |
+------------------+--------------+
10 rows in set (0.00 sec)

Я добавил новое предоставление на везде, и проблема сохраняется.

mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                            |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '...' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Обновление

Оказывается, что система была так или иначе вниз заблокирована изменениями, внесенными в системные файлы, о которых я не знал. По-видимому, это блокировало определенные сетевые операции, которые не являются стандартными. Это честно печально, что те же люди, которые дали мне это поле, забыли все об этом. Я честно понятия не имею, что они сделали к нему, и даже они не могут помнить. Тем не менее, ответы, перечисленные здесь, являются самым полным руководством по поиску и устранению неисправностей для нормальных людей все же. Это должна была быть одна из этих проблем.

1
задан 13 December 2014 в 02:26
2 ответа

Похоже, что при подключении к mysql-серверу с вашего php-сервера вы получаете сообщение Введите пароль: , но ничего после этого. Если это так, то настройки учетной записи пользователя mysql для пользователя root, вероятно, запрещают соединение. Взгляните на вашу учетную запись пользователя mysql root и убедитесь, что в поле Host установлено значение, разрешающее соединение.

Из (MySQL) Причины ошибок, связанных с доступом:

Если вы не знаете IP-адрес или имя хоста машины, с которой вы соединяетесь, вы должны поместить строку с '%' в качестве значения столбца Host в таблице пользователей.

После попытки соединения с клиентской машиной, используйте запрос SELECT USER(), чтобы увидеть, как вы на самом деле соединились. Затем измените '%' в строке таблицы пользователей на фактическое имя хоста, которое отображается в журнале. В противном случае, ваша система останется незащищенной, так как она разрешает соединения с любого хоста для данного имени пользователя.

Я подозреваю, что способ сортировки таблиц при подключении вызывает проблемы. Возможно, вы захотите просмотреть Контроль доступа, этап 1: Проверка соединения

2
ответ дан 3 December 2019 в 21:08

Ознакомьтесь с руководством по устранению ошибок 2003 года по адресу http://dev.mysql.com/doc/refman/5.0/en/access-denied.html

0
ответ дан 3 December 2019 в 21:08

Теги

Похожие вопросы