Новичок здесь, перенося мой сайт с общего хоста на виртуальный хост на основе имени на новом виртуальном частном сервере (Linode) под управлением Ubuntu 16.04. Апач работает. Я установил MySQL и создал пустую базу данных. У меня нет брандмауэра (пока); iptables показывает пустые списки.

Я создал пользователя MySQL с именем 'jk' с доступом из любого места. Вы можете видеть это в этом результате запроса:

   mysql> select host, user from mysql.user;
   +-----------+------------------+
   | host      | user             |
   +-----------+------------------+
   | %         | jk               |
   | localhost | debian-sys-maint |
   | localhost | mysql.sys        |
   | localhost | root             |
   +-----------+------------------+
   4 rows in set (0.00 sec)

и 'netstat' говорит, что порт 3306 прослушивает откуда угодно (см. первый результат):

  jk@bird:~$ netstat -an
  Active Internet connections (servers and established)
  Proto Recv-Q  Send-Q  Local Address      Foreign Address     State      
  tcp        0       0  127.0.0.1:3306     0.0.0.0:*           LISTEN     
  tcp        0       0  0.0.0.0:22         0.0.0.0:*           LISTEN     
  tcp        0     244  45.56.81.181:22    24.4.251.228:58915  ESTABLISHED
  tcp6       0       0  :::80              :::*                LISTEN     
  tcp6       0       0  :::22              :::*                LISTEN 

На Линоде все выглядит хорошо (для новичка).

Но не так хорошо, когда я пытаюсь подключиться к нему со своего Mac. Поскольку DNS по-прежнему указывает на мой старый общий хост, я указываю свой сервер Linode по его цифровому IPv4-адресу. Когда я запрашиваю функцию сканирования портов сетевой утилиты macOS для поиска порта 3306 на моем сервере Linode, он ничего не находит. Чтобы убедиться, что я правильно использую этот инструмент, я сканировал порты 22 и 80 и обнаружил, что они открыты, как и ожидалось. Кроме того, он говорит, что порт 3306 открыт на моем старом общем хосте.

Клиентское приложение MySQL (Sequel Pro) на моем Mac подтверждает эту проблему:

  MySQL said: Can't connect to MySQL server on ‘45.56.81.181’ (61)

Что может быть не так?

1 ответ1

1

Вы неправильно читаете вывод netstat.

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

Порт привязан только для использования localhost (межпроцессное взаимодействие).

Для слушателя "Локальный адрес" указывает адрес, который прослушивается. поскольку единственный компьютер, который может подключиться к 127.0.0.1, является локальным, никто другой не может подключиться к порту. Если "локальный адрес" равен 0.0.0.0 или 45.56.81.181, то прослушиватель привязывается к любому адресу в любом нике или к адресу локальной сети соответственно.

Внешний адрес всегда 0.0.0.0:* для СЛУШАЮЩИХ портов (потому что нет другой стороны на слушателе). Внешний адрес действителен только для существующих подключений (если состояние не «СЛУШАТЬ»).

В вашей конфигурации mysql вам придется настроить его на прослушивание на всех интерфейсах (0.0.0.0) или на интерфейсе локальной сети.

Смотрите здесь документацию по настройке MySQL для сетевого доступа: http://dev.mysql.com/doc/refman/5.7/en/server-options.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .