Назад | Перейти на главную страницу

Не удается подключиться к MySQL с другого сервера

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

Кажется, MySQL работает нормально, но я не могу подключиться к нему. Это и коробки ubuntu, и 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  

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

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 коробка, хотя и со временем отклика менее миллисекунд.

Вот настройки 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)

Обновить

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

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

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

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

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

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

Прочтите подробное руководство по ошибке 2003 по адресу http://dev.mysql.com/doc/refman/5.0/en/access-denied.html