Я получаю ошибку:
«Потерянное соединение с сервером 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-адрес сервера. Это должно было быть сделано для настройки репликации. Во всяком случае, я решил это, выполнив две вещи:
создать пользователя, который можно использовать для соединения с адресом привязки в файле my.cnf. Например,
СОЗДАТЬ USER 'username' @ 'bind-address' IDENTIFIED BY 'password'; ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА schemaname. * TO 'username' @ 'bind-address'; ПРИВИЛЕГИИ ФЛЮЗА;
измените значение имени хоста 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, который более совместим и не менее безопасен.