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

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

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

в то время как я собираюсь подключить свой db.

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

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

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

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

Может ли это так?

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

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

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

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

благодаря

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

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

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 

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

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

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

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

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

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

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

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

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

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

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

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

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

    СОЗДАТЬ USER 'username' @ 'bind-address' IDENTIFIED BY 'password'; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА schemaname. * TO 'username' @ 'bind-address'; ПРИВИЛЕГИИ ФЛЮЗА;

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

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

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

Я использовал эту проблему на машине 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 туда и обратно безрезультатно. Решение для меня – это сброс привилегий .

 mysql> FLUSH PRIVILEGES; 

Для меня настройка bind-address = 0.0.0.0 в mysql/my.cnf сработала. В основном он прослушивает все адреса (но еще один порт).

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

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

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

Я просто добавил эту строку в файл /etc/hosts :

 XXXX some_name 

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

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

Реестра чтения и записи каталога базы данных также проблема, которую я нашел. Просто убедитесь, что ваше приложение может rw-файлы в местоположении db. Попробуйте 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-адрес. поэтому для предоставления доступа используйте следующие команды:

firewall-cmd -permanent –zone = trusted -add-source = YOUR_IP / 32

firewall-cmd -permanent –zone = trusted -add-port = 3306 / tcp

firewall-cmd –reload

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

служба mysqld start

Для меня был найден файл конфигурации «/etc/mysql/mysql.conf.d/mysqld.cnf», комментируя адрес ссылки, сделал трюк.

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