Потерянное соединение с сервером 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-адрес сервера. Это нужно было сделать, чтобы настроить репликацию. Во всяком случае, я решил это, сделав две вещи:
-
создайте пользователя, который может использоваться для подключения с адреса привязки в my.cnf файл Е. Г.
CREATE USER 'username' @ 'bind-address' идентифицируется как 'пароль'; ГРАНТА ВСЕ Привилегии на schemaname.* To 'username' @ 'bind-address'; FLUSH ПРИВИЛЕГИИ;
измените значение имени хоста 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
при удаленном подключении к 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
- вы можете установить пароль или добавить в командной строке
проверить подключение. Это должно быть успешным, то нажмите "ОК".Виола!