У меня дваВПСсерверы, и оба имеютMySQLустановлены, один для тестирования и один для разработки. Один из моих серверов не позволяет мне подключаться извне. С пользователем;
'мойтестовыйпользователь'@'%'
В соответствии соткрытый порт искатель, порт 3306 для сервера-нарушителя, похоже, закрыт. У меня есть собственные программы C++ и Java, которые слушают произвольные порты без каких-либо проблем. Почему это происходит и как это исправить?
Установлен 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 -
решение1
Проблема была в том, что сервер прослушивал только внутренние данные.
Удаление строки bind-address 127.0.0.1
решило /etc/mysql/my.cnf
проблему.
В более новых версиях Ubuntu (≥16.04) эта строка может быть в /etc/mysql/mysql.conf.d/mysqld.cnf
.
решение2
Мой совет: если вы уверены, что порты закрыты (я нахожу странным, что на 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.
решение3
Я исправил это, изменив значение bind-address 127.0.0.1
на bind-address 0.0.0.0
in /etc/mysql/mysql.conf.d
, чтобы MySQL прослушивал все порты.
Также я настроил учетную запись пользователя mysql для удаленного использования. Подробнее см.Хосту «xxx.xx.xxx.xxx» не разрешено подключаться к этому серверу MySQL.
решение4
Может случиться так, что ваша конфигурация находится в каталоге /etc/mysql/mysql.conf.d/mysqld.cnf
, проверьте, если это не так.