Попытка подключения к удаленному хосту MySQL (ошибка 2003)
У меня есть экземпляр MySQL, работающий на сервере Debian, и я могу подключиться к нему локально без проблем. Однако я не могу подключиться к нему удаленно. Когда я пытаюсь это из моей командной строки, я получаю следующую ошибку:
ERROR 2003 (HY000): Can't connect to MySQL server on '<server-ip>' (110)
Я добавил пользователя в mysql как 'user' @'*' и 'user' @'localhost'. skip-networking на этом сервере установлена в false, а адрес привязки закомментирован в my.cnf. Я также попытался открыть порт 3306 в iptables, используя следующую команду:
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
Вот список всех моих правил брандмауэра iptable, которые я выполнил с помощью iptables -L:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT tcp -- anywhere anywhere tcp dpt:auth reject-with icmp-port-unreachable
ACCEPT icmp -- anywhere anywhere icmp type 8 code 0 state NEW,RELATED,ESTABLISHED,UNTRACKED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:ftp state NEW
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:ssh state NEW
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:www state NEW
ACCEPT tcp -- <my-server> anywhere tcp spts:1024:65535 dpt:mysql state NEW
ACCEPT tcp -- anywhere anywhere tcp dpts:49152:65534 state NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
LOG tcp -- anywhere anywhere tcp dpt:mysql LOG level debug
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Кто-нибудь знает, куда мне идти?
Ответы
Ответ 1
На основе вашего ответа вам нужно найти, существует ли устройство между вами и сервером, блокирующим ваше соединение. Вы также должны убедиться, что вы можете telnet до 3306 на этом сетевом адресе сервера при входе в сервер... Если нет, вы, вероятно, не получили сервис, связанный с ethernet в my.cnf
... см. Параметр bind-address
.
Ответ 2
Вы должны проверить свою конфигурацию MySQL Server, чтобы убедиться, что она привязана к 127.0.0.1, тогда вы можете подключаться только к mysql, если ваше приложение находится на одном сервере.
Там простой способ, чтобы установить веб-сайт, и вы можете управлять через веб-интерфейс.
Ответ 3
Это может быть связано с закрытием порта 3306, проверьте состояние вашего сервера.
http://www.yougetsignal.com/tools/open-ports/
Если он отображается закрытым, это означает, что вы не можете получить доступ к нему со стороны машины, чтобы открыть порт
ufw - несложный брандмауэр
Средство настройки брандмауэра по умолчанию для Ubuntu - ufw.
Ниже приведены некоторые примеры использования ufw:
Во-первых, ufw необходимо включить. В командной строке введите:
sudo ufw enable
Чтобы открыть порт (mysql):
sudo ufw allow 3306
Чтобы увидеть статус брандмауэра, введите:
sudo ufw status
Ответ 4
Если вы используете VPN-соединение для подключения удаленного сервера базы данных, и вы получили такую ошибку, просто проверьте два простых шага...
1) В Windows-машине перейдите по пути "Пульт управления\Сеть и Интернет\Сетевые подключения" и щелкните правой кнопкой мыши по локальной сети и перейдите к свойствам. Нажмите на TCP/IPv4 и перейдите в свойства. Убедитесь, что IP и DNS-сервер (если вы используете DHCP или нет?).
2) После этого перезагрузите машину и проверьте ее снова.
Надеюсь, что это сработает. В моем случае это работает.
Примечание. Убедитесь, что все ваши настройки верны. Этот ответ забавный, но он работает в моем случае:)
Спасибо!