Порт 3306, схоже, закритий на моєму сервері Ubuntu


33

У мене два VPS- сервери, і на обох встановлено MySQL , один для тестування та один для розробки. Один із моїх серверів не дозволить мені підключитися зовні. З користувачем;

'mytestuser' @ '%'

Згідно з відкритим шукачем портів , порт 3306 для сервера-порушника виглядає закритим. У мене є програми C ++ та Java власного прослуховування в довільних портах без жодних проблем. Чому це відбувається і як я можу це виправити?

Установлено Ubuntu - Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Результати роботи netstat -tupleна кожному сервері

Порушення сервера

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Робочий сервер

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -

Відповіді:


76

Проблема полягала в тому, що сервер слухав лише внутрішньо.

Видалення рядка bind-address 127.0.0.1з /etc/mysql/my.cnfвирішеної проблеми.

Більш новіші версії Ubuntu (≥16.04) можуть мати цей рядок /etc/mysql/mysql.conf.d/mysqld.cnf.


2
Це працювало для мене. Зверніть увагу, що правильне ім'я файлу є /etc/mysql/my.cnf, ні /etc/mysql/my.conf.
Битва Ларрі

Я змінив свою bind-адресу, щоб вона відповідала зовнішній ip-адресі сервера, і це працювало на мене.
Buttle Butkus

Видаліть рядок повністю, і сервер прослухає ВСІ інтерфейси
s1mmel

Ти врятував мій день, намагався вирішити цю проблему пару тижнів, дякую!
budiantoip

9

Моя пропозиція, якщо ви впевнені, що порти закриті (мені здається, що VPS закриває цей порт) - це змінити файл конфігурації MySQL, щоб використовувати інший.

Просто відкрийте файл конфігурації в терміналі sudo nano /etc/mysql/mysql.conf, і шукайте [mysqld]розділ. У ньому шукайте рядок, який читається port = 3306. Змініть його на інший порт, який не використовується, і збережіть файл.

Потім просто або перезавантажте VPS, або перезапустіть сервіс, як-от sudo service mysql restart.

Зауважимо лише, що якщо файл mysql.confне в тому, про який я згадував вище, він може бути в інших місцях:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

А якщо serviceкоманда не працює, виконайте це:

sudo /etc/init.d/mysql restart

Якщо проблема не зникає, то в моєму випадку я би перевірив iptables (я б фактично видалив усе з iptables лише для того, щоб почати свіжим, якщо це може бути варіант) або будь-який інший варіант із включеним брандмауером.

Оскільки вони VPS, я б також перевірив панель управління VPS, щоб перевірити, чи є у неї якийсь варіант, який може блокувати порти.

Крім того, я би побіг nmapна VPS, щоб побачити, які порти ви відкрили. Вам потрібно запустити його поза VPS, щоб побачити, які порти вони відкрили.

netstat -tuplen також хороша ідея подивитися, які відкриті порти у вас на сервері та які в режимі LISTEN.


Гей, я спробував це на іншому порті, і його все ще не вистачає, я також спробував 'iptables -A INPUT -i eth0 -p tcp -m tcp --portport PORT -j ACCEPT', але не пощастило :( .. редагувати їх не eth0 .., можливо, матиме надію
Енді,

@Andy Оновлена ​​відповідь, щоб включити ще кілька пропозицій.
Луїс Альварадо

Дякую за пропозиції, Луїс, я розберуся в цьому.
Енді,

Я оновив результати netstat -для цього питання. Схоже, тут є проблема.
Енді,

6

Я виправив це, змінивши bind-address 127.0.0.1до bind-address 0.0.0.0в /etc/mysql/mysql.conf.d(так , що MySQL слухає на всіх портах).

Крім того, я налаштував обліковий запис mysql, який використовуватиметься віддалено (див. Https://stackoverflow.com/a/24171107/132374 ).


6

Я використовую цей метод:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Не потрібно змінювати інші файли конфігурації, а також додаткові порти, відкриті за замовчуванням.


sudo ufw allow 3306/tcpЯ спробував редагувати, але мені не дозволено
Адам

1

Може статися, що ваша конфігурація знаходиться в каталозі /etc/mysql/mysql.conf.d/mysqld.cnf, переконайтеся, що це не так.


1
Я намагався розібратися це приблизно три години, перш ніж побачив це, дякую!
Олівер Ні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.