Сервер MySQL недоступний з віддаленої машини


14

Я встановив MySQL-сервер на своєму локальному сервері Ubuntu (11.10). Я не можу підключитися до сервера з віддаленої машини.

Коли я спробував: - nmap localhost , це показує наступне

ПОСТАНОВА ДЕРЖАВНА СЕРВІС
22 / tcp відкритий 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 відкритий 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 зобов'язана обслуговувати тільки localhost (прив'язка інтерфейсу). Це за замовчуванням з міркувань безпеки. Якщо вам дійсно потрібно отримати доступ до нього безпосередньо з інших хостів, є приємний спосіб увімкнути віддалений доступ до 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 ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Зауважте @'%', що означає "від будь-якого хоста".


Радий читати - і ласкаво просимо!
Іззі

посилання розірвано :(
дино,

2
@dino Більше. Я це виправив і також включив уривок, тож якщо він знову помре, необхідні кроки все ще є тут. Моє погане, що я цього не робив з самого початку - але, як видно з часової позначки, це була одна з моїх ранніх відповідей. Усі ми дізнаємось :)
Іззі

2
Для /etc/mysql/mysql.conf.d/mysqld.cnfмоєї системи було встановлено поле прив’язки-адреси .
Ерік Г

@EricG Дякую за вказівник. Моя відповідь була 5 років тому, тому конфігурації трохи змінилися (і, ймовірно, зробили більш модульними).
Іззі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.