Сбой удаленного подключения 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 означает, что вам не разрешен удаленный доступ к веб-серверу. Следовательно
- Убедитесь, что вы используете правильный IP-адрес сервера MySQL.
- Остальные параметры вашего подключения такие же.
- Использовать
%
подстановочный знак для части узла учетной записи пользователя, чтобы разрешить подключение с любого узла (см. статью " Добавление учетных записей пользователей").
Пожалуйста, см. Решение для удаленного подключения, когда вы получите сообщение об ошибке 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.