Попытка подключиться к удаленному хосту MySQL (ошибка 2003)

У меня есть экземпляр MySQL, работающий на сервере Debian, и я могу без проблем подключиться к нему локально. Однако я не могу подключиться к нему удаленно. Когда я пытаюсь это сделать из своей командной строки, я получаю следующую ошибку:

ERROR 2003 (HY000): Can't connect to MySQL server on '<server-ip>' (110)

Я добавил пользователя в mysql как «пользователь» @ «*» и «пользователь» @ «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

Кто-нибудь знает, куда мне идти отсюда?


person hellsgate    schedule 19.04.2011    source источник
comment
что происходит, когда вы подключаетесь по телнету к <server-ip> на 3306?   -  person This    schedule 19.04.2011
comment
@Mike: я получаю сообщение telnet: невозможно подключиться к удаленному хосту: время ожидания подключения истекло.   -  person hellsgate    schedule 19.04.2011
comment
Подробное описание ошибки 2003 приведено здесь: webyog.com/faq/content/23/15/ru/   -  person Man_k    schedule 10.08.2012
comment
+1 Я люблю, когда из вопроса узнаешь больше, чем из ответов. Спасибо   -  person John Magnolia    schedule 26.11.2013


Ответы (5)


Основываясь на вашем ответе, вам нужно выяснить, есть ли между вами и сервером устройство, которое блокирует ваше соединение. Вы также должны убедиться, что вы можете подключиться к 3306 по ethernet-адресу этого сервера при входе на сервер... если нет, возможно, вы не привязали службу к ethernet в my.cnf... см. параметр bind-address.

person This    schedule 19.04.2011
comment
Спасибо за это. Я думаю, что между мной и сервером есть устройство. Я задал вопрос о месте, где находится сервер, и в данный момент жду ответа. Я могу подключиться к 3306 при входе на сервер, хотя соединение закрывается довольно быстро. Я опубликую больше, как я узнаю это. - person hellsgate; 19.04.2011
comment
Мне удалось получить доступ через промежуточное устройство, и теперь я могу подключиться удаленно. Ваше здоровье! - person hellsgate; 19.04.2011

Вы должны проверить конфигурацию своего сервера MySQL, чтобы увидеть, привязана ли она к 127.0.0.1, тогда вы сможете подключиться к mysql, только если ваше приложение находится на том же сервере. Есть простой способ установить webmin и управлять им через веб-интерфейс.

person anony    schedule 12.06.2013
comment
Из вопроса адрес привязки закомментирован - person hellsgate; 13.06.2013

Это может быть связано с тем, что порт 3306 закрыт, проверьте состояние порта вашего сервера.

http://www.yougetsignal.com/tools/open-ports/

Если он закрыт, это означает, что вы не можете получить к нему доступ снаружи машины, чтобы открыть порт.

ufw — несложный брандмауэр

Средство настройки брандмауэра по умолчанию для Ubuntu — ufw. Ниже приведены некоторые примеры использования ufw:

Во-первых, необходимо включить ufw. В командной строке терминала введите:

sudo ufw enable

Чтобы открыть порт (mysql):

sudo ufw allow 3306

Чтобы увидеть статус брандмауэра, введите:

sudo ufw status
person Basil Jose    schedule 24.02.2017

Если вы используете VPN-подключение для подключения к удаленному серверу базы данных и у вас возникла такая ошибка, просто проверьте ее в два простых шага...

1) На компьютере с Windows перейдите по пути «Панель управления\Сеть и Интернет\Сетевые подключения», щелкните правой кнопкой мыши локальную сеть и перейдите к свойствам. Нажмите TCP/IPv4 и перейдите в свойства. Убедитесь, что IP и DNS-сервер (используете ли вы DHCP или нет?).

2) После этого перезапустите машину и проверьте еще раз.

Надеюсь, это сработает. В моем случае это работает.

Примечание. Убедитесь, что все ваши настройки верны. Этот ответ забавный, но в моем случае он работает :)

Спасибо!

person Amit Contractor    schedule 21.06.2017

для меня это должно было включить порт 3306 в файле /etc/default/iptables, чтобы разрешить входящий трафик с любого хоста, раскомментировав приведенную ниже строку:

#-A INPUT -p tcp --dport 3306 -j ACCEPT
person Nasir Mahmood    schedule 15.05.2018