Возможно, вы наткнулись на эту ошибку MySQL. Если вы уже видели это раньше, то это действительно легко распознать и исправить. Но если вы не видели эту ошибку раньше, то устранение проблемы займет немного больше времени. Я перечисляю шаги по устранению этой проблемы.
1
|
ERROR 2002 (HY000): Can 't connect to local MySQL server through socket ' /var/run/mysqld/mysqld .sock' (2) |
Эта проблема может быть вызвана следующими причинами:
- Служба MySQL не работает
- Порт 3306 не открыт
- Правила таблицы IP, блокирующие входящие запросы
MySQL сервис
Вы можете быстро проверить текущее состояние службы MySQL, выполнив следующую команду:
1
2
|
/> sudo service mysql status /> mysql stop /waiting |
Если появляется сообщение «остановка / ожидание», просто перезапустите службу и повторно протестируйте свое приложение.
1
|
/> sudo service mysql start |
Порт MySQL и правило таблицы IP
Если служба работает, но вы все еще не можете подключиться к удаленной базе данных, возможно, порт не открыт или сервер MySQL прослушивает другой порт. Обычно сервер MySQL прослушивает порт 3306.
01
02
03
04
05
06
07
08
09
10
11
|
/> netstat -nlp --inet 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 26417 /mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 617 /sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1079 /exim4 udp 0 0 172.26.196.17:123 0.0.0.0:* 1274 /ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 1274 /ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 1274 /ntpd udp 0 0 0.0.0.0:161 0.0.0.0:* 1155 /snmpd |
Если вы заметили, что mysqld прослушивает этот порт, проблема может быть в другом месте. Следующий шаг — убедиться, что IP-таблица разрешает трафик на порт 3306.
1
2
3
4
5
|
/> iptables -L Chain services (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:mysql |
Если вы получили указанную выше строку, это означает, что правила IP верны, в противном случае вам нужно добавить правила IP, чтобы разрешить трафик. Я обычно добавляю следующее правило, чтобы разрешить трафик. Это очень общее правило, которое разрешает трафик из любой точки мира. Вы даже можете ограничить источник в зависимости от ваших требований.
1
2
3
4
5
|
#!/bin/sh IPTABLES=${IPTABLES:- /sbin/iptables } CHAIN=${1:-services} $IPTABLES -A $CHAIN -j ACCEPT -p tcp --dport 3306 |
После добавления вышеуказанного правила в /etc/iptables.rules.services
выполните следующую команду и убедитесь, что правило отражено в таблице IP.
1
|
/> /etc/iptables .rules |
Запустите приложение снова, оно не должно сталкиваться с той же проблемой. Если он выдает такое же исключение, проблема должна быть где-то еще. Проверьте конфигурацию вашего приложения.
Надеюсь, что вышеуказанные решения помогут вам решить проблему. Если вы нашли свой собственный способ исправить это, пожалуйста, поделитесь им в разделе комментариев.
Ссылка: | Ошибка MySQL: не удается подключиться к серверу MySQL от нашего партнера по JCG Ракеша Кусата в блоге Code4Reference . |