Потерянное соединение с сервером MySQL при "считывании исходного пакета связи", системная ошибка: 0
Я получаю ошибку:
"Потерянное соединение с сервером MySQL при чтении исходного пакета связи, системная ошибка: 0"
пока я собираюсь подключить свой db.
Если я использую localhost, все работает нормально.
Но когда я использую свой живой IP-адрес, как показано ниже, он получает ошибку:
mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
Ответы
Ответ 1
Кто-то здесь предполагает, что это может быть проблема с брандмауэром:
Я только что столкнулся с этой проблемой и обнаружил, что это мой брандмауэр. Я использую PCTools Firewall Plus, и он не разрешал полный доступ к MySQL. Однажды я изменил, что это было хорошо. Надеюсь, это поможет.
Может ли это быть?
Кроме того, кто-то здесь предполагает, что это может быть связано с тем, что сервер MySQL связан с IP-адресом обратной связи (127.0.0.1/localhost), который эффективно отключает вас от подключения извне.
Если это так, вам нужно загрузить скрипт на веб-сервер (который, вероятно, также работает на сервере MySQL) и сохранить хост сервера как "localhost".
Ответ 2
Откройте файл конфигурации mysql с именем my.cnf и попробуйте найти "bind-address", замените параметр (127.0.0.1 или localhost) на ваш IP-адрес в реальном времени (ip, который вы используете в функции mysql_connect)
Это решит проблему определенно.
Спасибо
Ответ 3
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
Ответ 4
При возникновении этой проблемы при настройке нового подчиненного сервера. Было обнаружено, что IP-адрес подчиненного сервера отсутствовал на главном сервере /etc/hosts.allow
. Добавлен IP-адрес, и он позволяет мне подключиться к главному серверу.
Обратите внимание, что я использую hosts.allow
и hosts.deny
для управления доступом.
Ответ 5
У меня была эта проблема, и в конечном итоге это был предыдущий sys admin, изменивший порт MySQL. MySQL Workbench пытался подключиться к 3306 по умолчанию, но сервер работал на 20300.
Ответ 6
Проблема в моем случае заключалась в том, что MySQL привязывался только к lo on linux.
для решения проблемы я отредактировал файл my.cnf(найденный в /etc/mysql/my.cnf), удалив строку bind-address = 127.0.0.1
это позволяет mysql связываться с любым сетевым интерфейсом
Ответ 7
Эта ошибка возникла при попытке подключения к Google Cloud SQL с помощью MySQL Workbench 6.3.
После небольшого исследования я обнаружил, что мой IP-адрес был изменен интернет-провайдером, и он не был разрешен в Cloud SQL.
Я разрешил это и вернулся к работе.
Ответ 8
Проблема для меня заключалась в том, что DNS-запросы были заблокированы FW в подсети. Решение заключалось в отключении DNS-запросов в MySQL.
Ответ 9
Ошибка означает, что он не получил ответ от порта, на который он ожидал найти сервер. Причины могут быть связаны с неправильной машиной (по одному из нескольких причин), чтобы сервер не находился на ожидаемом порту.
Проверьте, к какому порту подключен ваш сервер в /etc/mysql/my.cnf. Соответствует ли это тому, что находится в вашем заявлении connect. Если они совпадают, попробуйте подключиться к mysql с самого сервера и из командной строки машины, на которой вы запускаете клиент. Если он работает, это одно место, а не другое, то может возникнуть проблема с настройкой брандмауэра/маршрутизатора.
Ответ 10
Я просто установил mysql в окне окна. Я получил ошибку OP при попытке установить соединение с клиентом Navicat MySql в том же поле. Я должен был указать 127.0.0.1 в качестве хоста, и он получил его.
localhost, или фактический IP-адрес сервера не работал.
Ответ 11
Я столкнулся с этой же ошибкой при подключении из MySQL Workbench. Вот как я это исправил. В моем файле конфигурации /etc/my.cnf значение привязанного адреса было установлено на IP-адрес сервера. Это должно было быть сделано для настройки репликации. Во всяком случае, я решил это, выполнив две вещи:
- создать пользователя, который можно использовать для подключения с адреса привязки в файле my.cnf
например
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
- измените значение имени хоста MySQL в деталях соединения в рабочей среде MySQL, чтобы соответствовать адресу привязки
Ответ 12
В моем случае у меня было ВСЕ: ВСЕ в hosts.deny. Изменение этого на ВСЕ: PARANOID решил мою проблему при подключении через ssh
Ответ 13
Для меня работала настройка bind-address = 0.0.0.0
в mysql/my.cnf
. Он в основном прослушивает все адреса (но еще один порт).
И не забудьте перезагрузить сервер: systemctl restart mysql
Ответ 14
Проблема была для меня довольно глупой.
Я использовал эту проблему на машине AWS EC2 Ubuntu (на данный момент MariaDB установлен локально), поэтому я попытался выполнить туннелирование SSH и имел ту же проблему. Поэтому я попытался выполнить туннель ssh через терминал:
ssh -L13306:127.0.0.1:3306 [email protected] -i my/private/key.pem
И он сказал мне это:
Пожалуйста, войдите в систему как пользователь "ubuntu", а не пользовательский "root".
Я изменил ssh-пользователя с root на ubuntu, как и на мою конфигурацию ssh, и он подключился просто отлично.
Итак, проверьте, подключен ли пользователь SSH.
Я наблюдал за этим, так что это слишком полчаса моего времени, поэтому я надеюсь, что это будет полезно для вас.
Ответ 15
Перейдите в эту же проблему, привяжите адрес туда и обратно безрезультатно. Решение для меня было привилегии очистки.
mysql> FLUSH PRIVILEGES;
Ответ 16
У меня была такая же проблема, но в моем случае я решил ее с помощью
служба mysqld start
Ответ 17
Для меня был найден файл конфигурации "/etc/mysql/mysql.conf.d/mysqld.cnf", комментирующий адрес привязки сделал трюк.
Как мы видим здесь:
Вместо skip-networking по умолчанию теперь прослушивается только
localhost, который более совместим и не менее безопасен.
Ответ 18
При подключении к Mysql удаленно, я получил ошибку.
У меня было это предупреждение в /var/log/mysqld.log
:
[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution
Я просто добавил эту строку в файл /etc/hosts
:
X.X.X.X some_name
Проблема решена! Не использование skip-name-resolve
вызвало некоторые ошибки в моем локальном приложении при подключении к MySQL.
Ответ 19
У меня была идентичная проблема. Чтобы исправить это, я просто сменил хост с localhost: 3306 на просто localhost. Таким образом, ошибка может возникать при отключении несовместимого порта для подключения. Лучше оставить его по умолчанию.
Ответ 20
Реестр чтения и записи каталога базы данных также является проблемой, которую я нашел.
Просто убедитесь, что ваше приложение может rw файлы в местоположении db. Попробуйте chmod 777 для тестирования.
Ответ 21
Я сделал ниже 3 шага, затем работал на меня.
-
bind-address = "YOUR MACHINE IP"
в файле my.cnf
адресу /etc/my.cnf
-
Перезапустите службу командой: service httpd restart
-
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
Ответ 22
Брандмауэр apache блокирует ip-адрес. поэтому для предоставления доступа используйте следующие команды:
firewall-cmd -permanent --zone = trusted -add-source = YOUR_IP/32
firewall-cmd -permanent --zone = trusted -add-port = 3306/tcp
firewall-cmd --reload
Ответ 23
Я столкнулся с такой же проблемой. Я проверил и попытался установить AllowTcpForwarding Да, но он отсутствовал в моем sshd_config, поэтому никакой помощи. Я не изменил sshd_config или my.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
- Вы можете установить пароль или добавить в приглашении
Проверить соединение. Он должен быть успешным, тогда нажмите ОК. Виола!
Ответ 24
Еще одна причина...
Я столкнулся с сервером Ubuntu, где все было настроено и не смог подключиться из-за той же ошибки.
Этот параметр был внутри /etc/ssh/sshd_config
PermitTunnel no
После превращения в
PermitTunnel yes
Я был в состоянии удаленно подключиться к моей базе данных MySQL
Ответ 25
Если bind-адрес отсутствует в вашем файле конфигурации и mysql размещен на экземпляре AWS, проверьте свою группу безопасности. В идеальных условиях входящие правила должны принимать все соединения от порта 3306, а исходящее правило должно отвечать на все действительные IP-адреса.
Ответ 26
Я пытаюсь подключить мой док-контейнер db на Ubuntu 18.04, та же проблема.
Сначала проверьте ваше устройство, запустив nmcli dev
чтобы проверить, подключено ли устройство docker0
.
Если он не подключен, попробуйте перезапустить службу Docker:
sudo service docker restart
Ответ 27
Я использую Windows, и моя проблема все еще сохраняется. Я не хочу использовать локальную БД MySQL, я пытаюсь подключиться к моему веб-сайту БД MySQL. Любая идея?
База данных: website_db Имя пользователя: website_un Пароль: 12A_B56 сервер: website.ws порт: 3306
В "cPanel-> Удаленный MySQL" я добавил IP-адрес своего ПК.