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

Я получаю ошибку:

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

пока я собираюсь подключить свою БД.

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

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

23 ответов


кто-то здесь:http://forums.mysql.com/read.php?52,166244, 258515#msg-258515 предполагает, что это может быть проблема брандмауэра:

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

возможно ли это?

кроме того, somehere здесь: http://forums.mysql.com/read.php?52,151255, 213970#msg-213970 предполагает, что это может быть потому, что сервер MySQL привязан к IP-адресу loop-back (127.0.0.1 / localhost), который эффективно отключает вас от подключения "извне".

Если это так, вам нужно загрузить скрипт на веб-сервер (который, вероятно, также работает на сервере MySQL) и сохранить хост сервера как "localhost"


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

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

спасибо


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

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

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


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


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

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


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

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

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


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


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

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


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

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


Я столкнулся с этой же самой ошибкой при подключении из MySQL workbench. Вот как я это исправил. Мой / etc / my.файл конфигурации cnf имел значение bind-address, установленное на IP-адрес сервера. Это нужно было сделать, чтобы настроить репликацию. Во всяком случае, я решил это, сделав две вещи:

  1. создайте пользователя, который может использоваться для подключения с адреса привязки в my.cnf файл Е. Г.

    CREATE USER 'username' @ 'bind-address' идентифицируется как 'пароль'; ГРАНТА ВСЕ Привилегии на schemaname.* To 'username' @ 'bind-address'; FLUSH ПРИВИЛЕГИИ;

  2. измените значение имени хоста MySQL в деталях соединения в MySQL workbench, чтобы соответствовать адресу привязки


в моем случае, у меня было все: все в hosts.отрицать. Изменение этого на все: PARANOID решил мою проблему при подключении через ssh


столкнулся с этой же проблемой, Персонализация Адрес назад и вперед безрезультатно. Решение для меня было привилегии топя.

mysql> FLUSH PRIVILEGES;

проблема была довольно глупой для меня.

раньше я получал ту же проблему на машине AWS EC2 Ubuntu (MariaDB установлен локально на данный момент), поэтому я попытался сделать SSH-туннелирование и имел ту же проблему. Поэтому я попытался SSH туннель через терминал:

ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem

и он сказал мне это:

пожалуйста, войдите в систему как пользователь "ubuntu", а не пользователь"root".

Я изменил пользователя ssh с root на ubuntu, как и мою конфигурацию ssh, и все было в порядке.

поэтому проверьте пользователя подключения SSH.

Я наблюдал за этим, так что это тоже полчаса моего времени, поэтому я надеюсь, что это будет полезно для вас.


для меня задание bind-address = 0.0.0.0 на mysql/my.cnf работали. Он в основном слушает все адреса (но все же один порт).

и не забудьте перезагрузить сервер:systemctl restart mysql


У меня была та же проблема, но в моем случае я решил с

сервис mysqld start


при удаленном подключении к Mysql я получил ошибку. Я получил это предупреждение в /var/log/mysqld.log:

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

Я только что добавил эту строку в :

X.X.X.X some_name

проблема решена! Не использовать skip-name-resolve вызвало некоторые ошибки в моем приложении при подключении к MySQL.


У меня была идентичная проблема. Чтобы исправить это, я просто изменил хост с localhost: 3306 на просто localhost. Так что ошибка может acour, когда вы указать порт неправильное подключение. Лучше оставить его по умолчанию.


Database directory read-write permission также проблема, которую я нашел. Просто убедитесь, что ваше приложение может rw-файлы в местоположении БД. Попробуйте chmod 777 для тестирования.


Я сделал ниже 3 шагов, а затем работал на меня.

1) bind-address = "YOUR MACHINE IP" in my.cnf file at /etc/my.cnf
2) Restart service by command : service httpd restart
3) GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;

брандмауэр apache блокирует ip-адрес. поэтому, чтобы дать доступ, используйте следующие команды:

брандмауэр-cmd --постоянного --зоны=надежные-добавить-источник=YOUR_IP/32

брандмауэр-cmd --постоянного --зоны=доверяла, добавить порт=3306/TCP и

firewall-cmd --перезагрузить


для меня был найден файл конфигурации " / etc/mysql / mysql.conf.д/тузды.cnf", комментируя адрес привязки, сделал трюк.

Как мы видим здесь: вместо skip-networking по умолчанию теперь слушать только на localhost, который более совместим и не менее безопасен.


Я столкнулся с той же проблемой. Я проверил и попытался установить AllowTcpForwarding Да но он отсутствовал в моем sshd_config, поэтому никакой помощи.Я не менял sshd_config или мой.cnf. Убедитесь, что имя хоста ssh не то же самое с именем хоста mysql(используйте localhost).

в workbench выберите +, чтобы добавить новое соединение, и установите следующее:

  • способ подключения: стандартный TCP / IP через SSH
  • имя хоста SSH:192.168.0.50:22 (замените удаленный сервер SSH IP и порт (необязательно))
  • имя пользователя SSH: sshuser
  • вы можете установить пароль или добавить в командной строке
  • имя хоста MYSQL:localhost или 127.0.0.1
  • порт сервера MYSQL:3306
  • вы можете установить пароль или добавить в командной строке

проверить подключение. Это должно быть успешным, то нажмите "ОК".Виола!