Назад | Перейти на главную страницу

Не удается подключиться к локальному MySQL с помощью IP-адреса, но МОЖЕТ подключиться с удаленного сервера

Вот одна интересная проблема, которая, похоже, не связана ни с одной из проблем с подключением mysql, о которых я читал или искал: в коробке с Ubuntu 12.04 у меня были некоторые системные обновления, ожидающие установки, и я позаботился об этом сегодня вечером. После установки я начал видеть некоторые ошибки в моем системном журнале с жалобами на определенный скрипт php, который больше не мог подключиться к экземпляру mysql на коробке. Вот конкретная ошибка:

PHP Warning:  mysql_connect(): Can't connect to MySQL server on '192.168.0.40' (4) 

Теперь IP-адрес сервера 192.168.0.40, и я проверил, есть ли у меня mysql, прослушивающий 0.0.0.0, чтобы я мог подключиться, используя "localhost" или "192.168.0.40".

Вот где все становится странно: с локального компьютера, если я попробую следующее:

mysql -uroot -p -h192.168.0.40

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

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.40' (110)

Я проверил, и ошибка 110 указывает на тайм-аут ОС, а ошибка 2003 - это общая ошибка mysql «не удается подключиться». Это указывает на то, что это не разрешения у пользователя.

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

Кроме того, другие сценарии на локальном компьютере, которые подключаются к mysql с использованием "localhost" для хоста, а не "192.168.0.40", подключаются без проблем. Кроме того, я могу без проблем подключиться через сокет mysql как из командной строки, так и из сценариев php.

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

Этот проблемный сценарий отлично работал до последнего обновления системы.

На данный момент я просто изменю скрипт для подключения через localhost, но мне очень хотелось бы знать, почему он сломался по двум причинам:

  1. Могут быть и другие скрипты, которые подключаются с использованием 192.168.0.40, которые запускаются не очень часто, а теперь не работают. На их одитинг уйдет больше времени, чем я думаю в данный момент.

  2. Мне любопытно, и я хочу знать, почему он сломался, чтобы я мог исправить это правильно.

Любая помощь?

Убедитесь, что у пользователя MySQL есть разрешение на подключение с 192.168.0.40.

Если вы действительно хотите получить удаленный доступ к серверу, откройте соответствующий порт брандмауэра (по умолчанию 3306).

У меня была такая же проблема, только я мог подключиться к базе данных на localhost или 127.0.0.1, и попробовал все. Я открыл порты брандмауэра, попытался отредактировать сетевые конфигурации my.ini и многое другое.

РЕШЕНИЕ (вот шаги, которые я предпринял, чтобы наконец это исправить):

  • Откройте MySQL Workbench
  • Войдите в базу данных как администратор
  • Перейдите в меню сервера вверху
  • Выберите пользователей и привилегии
  • Убедитесь, что для всех учетных записей, к которым вы хотите подключиться, в разделе «Ограничение сопоставления хостов» выбрано%.

У меня был root-пользователь, установленный на localhost, что, как я полагаю, используется по умолчанию. Создание этого% вместо localhost решило проблему для меня.

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