Статьи

Ошибка MySQL: не удается подключиться к серверу MySQL

Возможно, вы наткнулись на эту ошибку 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 .