Потеряно соединение с сервером MySQL при чтении начального пакета связи, системная ошибка: 0 - PullRequest
112 голосов
/ 22 апреля 2011

Я получаю сообщение об ошибке:

"Потеряно соединение с сервером MySQL при чтении исходного пакета связи, системная ошибка: 0"

во время подключенияmy db.

Если я использую localhost, все работает нормально.Но когда я использую свой действующий IP-адрес, как показано ниже, появляется ошибка:

mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());

Ответы [ 26 ]

91 голосов
/ 22 апреля 2011

Кто-то здесь предполагает, что это может быть проблема с брандмауэром:

Я только что столкнулся с этой проблемой и обнаружил, что это мой брандмауэр.Я использую PCTools Firewall Plus, и он не разрешал полный доступ к MySQL.Однажды я изменил, что это было хорошо.Надеюсь, это поможет.

Может ли это быть?

Кроме того, кто-то здесь предполагает, что это может быть потому, что сервер MySQL связан с обратной связьюIP (127.0.0.1 / localhost), который эффективно отключает вас от подключения извне.

В этом случае вам необходимо загрузить скрипт на веб-сервер (который, вероятно, также работает на сервере MySQL).) и сохраните хост сервера как «localhost»

38 голосов
/ 25 июля 2011

Откройте файл конфигурации mysql с именем my.cnf и попробуйте найти «bind-address», здесь замените настройку (127.0.0.1 ИЛИ localhost) на ip вашего живого сервера (ip, который вы используете в функции mysql_connect)

Это определенно решит проблему.

Спасибо

21 голосов
/ 28 июня 2016

1) Разрешить удаленное подключение к MySQL.Редактировать файл:

>sudo nano /etc/mysql/my.cnf

Строка комментария:

#bind-address       = 127.0.0.1

Перезапустить MySQL:

>sudo service mysql restart

2) Создать пользователя для удаленного подключения.

>mysql -uroot -p

CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';

GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';

3) В моем случае мне нужно удаленно подключиться с Windows к машине VirtualBox с Ubuntu.Поэтому мне нужно разрешить порт 3306 в iptables:

>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
15 голосов
/ 22 августа 2012

Возникла эта проблема при настройке нового подчиненного сервера.Обнаружено, что IP-адрес подчиненного сервера отсутствует в файле /etc/hosts.allow главного сервера.Добавил IP-адрес, и он позволил мне подключиться к главному серверу.

Обратите внимание, что я использую hosts.allow и hosts.deny для контроля доступа.

7 голосов
/ 08 марта 2014

У меня была эта проблема, и в итоге предыдущий системный администратор изменил порт, на котором работал MySQL. MySQL Workbench пытался подключиться к стандартному 3306, но сервер работал на 20300.

5 голосов
/ 31 июля 2013

Проблема в моем случае заключалась в том, что MySQL привязывался только к lo на linux. чтобы решить проблему, я отредактировал my.cnf (находится в /etc/mysql/my.cnf), удалив строку bind-address = 127.0.0.1

это позволяет mysql связываться с любым сетевым интерфейсом

5 голосов
/ 08 июня 2015

Эта ошибка возникла у меня при попытке подключиться к Google Cloud SQL с помощью MySQL Workbench 6.3.

После небольшого исследования я обнаружил, что мой IP-адрес был изменен интернет-провайдером, и ему не разрешилив облаке SQL.

Я авторизовал его и вернулся к работе.

3 голосов
/ 24 января 2015

Я только что настроил mysql в окне Windows. Я получил ошибку OP при попытке подключиться к клиенту Navicat MySql в том же окне. Я должен был указать 127.0.0.1 в качестве хоста, и это получилось.

localhost, или фактический IP-адрес сервера не работает.

3 голосов
/ 24 октября 2013

Проблема для меня заключалась в том, что DNS-запросы были заблокированы FW внутри подсети. Решением было отключить поиск DNS в MySQL.

3 голосов
/ 07 июля 2014

Ошибка означает, что он не получил ответ от порта, на котором он ожидал найти сервер. Причины варьируются от соединения с неправильным компьютером (по одной из нескольких причин) до того, что сервер не находится на ожидаемом порту.

Проверьте, к какому порту подключен ваш сервер, в /etc/mysql/my.cnf. Соответствует ли это тому, что есть в вашем заявлении о соединении. Если они совпадают, попробуйте подключиться с помощью mysql с самого сервера и из командной строки компьютера, на котором вы запускаете клиент. Если это работает из одного места, а не из другого, у вас может возникнуть проблема с настройкой брандмауэра / маршрутизатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...