У меня два сервера в одной подсети.
Кажется, 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