Вопрос:
Приложение Java, с которым я работаю, должно записывать полученные данные в базу данных mysql, но всякий раз, когда я его запускаю, я получаю следующее исключение:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Со следующей причиной:
Caused by: java.net.ConnectException: Connection refused
Естественно, моим следующим шагом было протестировать порт, с которым mysql пытался подключиться (3306).
$ telnet localhost 3306 Trying 127.0.0.1… telnet: Unable to connect to remote host: Connection refused
Мой следующий шаг состоял в том, чтобы увидеть, прослушивает ли порт 3306 вообще.
$ netstat -an|grep 3306 tcp 0 0 69.164.214.18:3306 0.0.0.0:* LISTEN
Таким образом, порт прослушивает, но не принимает соединения?
Должен признаться, я не знаю об этом много, но кто-нибудь знает, что здесь происходит?
Лучший ответ:
Я понял это. Мне нужно было подключиться к mysql извне, но моя программа пыталась получить к нему доступ локально.
Ответ №1
Контрольный список:
- Правило брандмауэра. Если ваш сервер отказывает/не разрешает порт 3306, не удается его подключить.
- Bind Address: если ваш адрес связывания 127.0.0.1 в конфигурации MySQL, вы должны изменить на 0.0.0.0 в [mysqld] на /etc/mysql/my.cnf
- Restart Service: вам нужно запустить команду ‘service mysql restart’
Удачи.
Ответ №2
@Walker Holahan,
Не могли бы вы объяснить это больше, пожалуйста? Я тоже застрял. Я не могу подключиться к серверу mysql 8, сидящему на моем сервере centos 7, с моего компьютера Mac через верстак.
Я уже установил bind-address в 0.0.0.0 и публично добавил порт 3306 для брандмауэра.
У меня также есть пользователь root, который может получить доступ к любому IP-адресу (‘root’ @’%’)
Когда я запустил “telnet 173.236.105.231 3306”, я получил сообщение об ошибке “Соединение с 173.236.105.231… Не удалось открыть соединение с хостом, порт 3306: сбой соединения”