MySQL сервер недоступен с удаленной машины

14

Я установил сервер MySQL на свой локальный сервер Ubuntu (11.10). Я не могу подключиться к серверу с удаленной машины.

Когда я пытался: - nmap localhost , он показывает следующее

ПОРТ ГОСУДАРСТВЕННАЯ СЛУЖБА
22 / TCP Open SSH
80 / TCP открыть http
139 / tcp открытый netbios-ssn
445 / TCP открыть Microsoft-DS
631 / TCP открыть IPP
3306 / TCP открыть MySQL

Это означает 3306, что порт MySQL открыт, верно? Но когда я попытался nmap 192.168.0.50, который является IP-адрес сервера, я получаю следующее: -

ПОРТ ГОСУДАРСТВЕННАЯ СЛУЖБА
22 / TCP Open SSH
80 / TCP открыть http
139 / tcp открытый netbios-ssn
445 / TCP открыть Microsoft-DS

Означает ли это, что порт не открыт при доступе по IP? Если так, как я могу открыть порт?

Я пробовал следующий код, но, похоже, он не работал.

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Что здесь не так?

Спарки
источник

Ответы:

22

Ваша служба MySQL обязана обслуживать только локальный хост (привязка интерфейса). Это значение по умолчанию из соображений безопасности. Если вам действительно нужен доступ к нему напрямую с других хостов, есть хороший Как включить удаленный доступ к MySQL в Ubuntu, который вы можете выполнить:

  1. как пользователь root, откройте ваш /etc/mysql/my.cnfили /etc/mysql/mysql.conf.d/mysqld.cnf с вашим любимым редактором, так как в разных системах он оказывается другим.
  2. ищите [mysqld]раздел, и там для bind-addressключевого слова. Это обычно устанавливается на 127.0.0.1- изменить это, чтобы соответствовать вашему "нормальному" IP-адресу
  3. сохраните файл и перезагрузите сервис (например, используя service mysql restart)

Помните, что вы должны разрешить удаленным пользователям доступ к их базам данных с удаленного компьютера, установив соответствующие GRANT - например,

GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Обратите внимание @'%', что означает «с любого хоста».

Иззи
источник
Рад читать - и не за что!
Иззи
ссылка битая :(
Дино
2
@dino Больше нет. Я исправил это, а также включил отрывок, поэтому, если он умрет снова, необходимые шаги все еще здесь. Мое плохое, я не делал этого с самого начала - но, как вы можете видеть из отметки времени, это был один из моих ранних ответов. Мы все учимся :)
Иззи
2
Поле адреса привязки было под /etc/mysql/mysql.conf.d/mysqld.cnfмоей системой.
Eric G
@EricG Спасибо за указатель. Мой ответ был 5 лет назад, поэтому конфиги немного изменились (и, вероятно, стали более модульными).
Иззи