Порт 3306 на моем сервере Ubuntu закрыт

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

'mytestuser' @ '%'

Согласно искатель открытых портов , порт 3306 для сервера-нарушителя выглядит закрытым. У меня есть программы C ++ и Java, которые я слушаю на произвольных портах без каких-либо проблем. Почему это происходит и как я могу это исправить?

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

Результаты netstat -tuple на каждом сервере

Сервер-нарушитель

[ 110]

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

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
33
задан 6 September 2013 в 22:29

5 ответов

Я использую этот метод:

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

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

0
ответ дан 6 September 2013 в 22:29

Может случиться, что ваша конфигурация находится в каталоге /etc/mysql/mysql.conf.d/mysqld.cnf, убедитесь, что это не так.

0
ответ дан 6 September 2013 в 22:29

Проблема была в том, что сервер слушал только внутри.

Удаление строки bind-address 127.0.0.1 из /etc/mysql/my.cnf решило проблему.

Более новые версии Ubuntu (≥16.04) могут иметь эту строку в /etc/mysql/mysql.conf.d/mysqld.cnf.

0
ответ дан 6 September 2013 в 22:29

Мое предложение, если вы уверены, что порты закрыты (мне кажется странным, что 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.

0
ответ дан 6 September 2013 в 22:29

Я исправил это, изменив 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 ).

0
ответ дан 6 September 2013 в 22:29

Другие вопросы по тегам:

Похожие вопросы: