Сбой удаленного подключения MySQL (10060)

Когда я пытаюсь подключиться к базе данных MySQL с удаленного компьютера, я получаю сообщение: Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't Connect to MySQL server on 'XXX.XXX.XX.XX' (10060)

Я создал учетную запись пользователя в MySQL Administrator и добавил хост для включения удаленного доступа, я также сделал исключение для моего брандмауэра Windows на порту 3306 но соединение по-прежнему не удается.

В чем проблема?

Спасибо!

8 ответов

Я полагаю, ваш сервер mysql работает в Windows... поэтому откройте окно DOS и введите:

netstat -an

Вы должны найти строку, как это:

TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING

Это говорит о том, что сервер MySQL работает и прослушивает TCP-порт 3306.

Другой тест, который вы можете сделать, это подключиться к telnet (с другого компьютера) на вашем сервере MySQL:

telnet ip_mysql_server 3306

Это должно открыть сеанс Telnet:

Connected to server_name.
Escape character is '^]'.
5.0.XX-community-nt-log

Ошибка 10060 означает, что вам не разрешен удаленный доступ к веб-серверу. Следовательно

  1. Убедитесь, что вы используете правильный IP-адрес сервера MySQL.
  2. Остальные параметры вашего подключения такие же.
  3. Использовать % подстановочный знак для части узла учетной записи пользователя, чтобы разрешить подключение с любого узла (см. статью " Добавление учетных записей пользователей").

Пожалуйста, см. Решение для удаленного подключения, когда вы получите сообщение об ошибке 10060 для деталей.

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

Вы пытались использовать инструмент сканирования портов, такой как nmap, на своем удаленном компьютере для сканирования сервера базы данных? Он скажет вам, если порт открыт с nmap -PN -p 3306 XXX.XXX.XX.XX?

У меня была точно такая же проблема при обмене данными между базой данных MSSQL Server на одном сервере (Win2008) и базой данных MySQL на другом.

Я уже создал ODBC-соединение между одним MSSQL-сервером и MySQL-сервером пару лет назад; прежде всего, чтобы я мог создать объект Linked Server на сервере MSSQL.

При попытке создать соединение ODBC с другого сервера я получаю ту же ошибку:

Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't Connect to MySQL server on 'XXX.XXX.XX.XX' (10060).

Следуя некоторым предложениям из ответов, найденных здесь, я решил проверить правила брандмауэра на сервере (Win2008), на котором размещается MySQL.

У меня было настроено входящее правило, которое заблокировало порт 3306, чтобы он был доступен только из списка IP-адресов. Как только я добавил свой последний IP-адрес сервера в список, я смог подключиться.

Проверьте конфигурацию mysql: /etc/my.cnf

и закомментируйте:

skip-networking

Теперь он будет прослушивать порты TCP/IP, однако вы все равно обычно блокировали прямой доступ к MySQL через брандмауэр, поэтому это не должно быть проблемой. Теперь вы можете использовать SSH через TCP/IP как "localhost"к серверу MySQL.

например, Windows bat файл, туннель PuTTY:

@putty.exe -ssh -pw PassWord -L 3306:localhost:3306 odbcuser@remoteHost
EXIT

Если на локальном компьютере запущен XAMPP/MySQL, измените указанный выше порт на 3307т.е.

3307:localhost:3306

1) доступ к iptables

sudo iptables -I INPUT -p tcp --dport 3306-j ACCEPT 
sudo service iptables save

2) my.conf

[mysqld]
port = 3306
bind-address = 0.0.0.0

3) mysql

GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;

4) mysqld (mysqld)

sudo service mysqld restart

Посмотрите эту статью, чтобы подключить MYSQL с удаленного сервера

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

Если вы собираетесь передавать данные сервера mysql на другой сервер, будьте точны с требованием...

Если это просто для синхронизации данных, перейдите к концепции сервера БД...

Вероятный виновник, о котором люди часто забывают:

mysql> GRANT ALL ON foo.* TO bar@'123.456.789.123' IDENTIFIED BY 'PASSWORD';

Этот шаг необходим для подключения с компьютера. 123.456.789.123 Дополнительную информацию и более полное руководство можно найти по ссылке Holicreature.

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