Когда я пытаюсь подключиться к базе данных 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
но соединение по-прежнему не удается.
В чем проблема?
Спасибо!
Я предполагаю, что ваш сервер mysql работает в Windows ... таким образом, откройте окно DOS и введите:
netstat -an
Вы должны найти такую строку:
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
Это говорит о том, что сервер mysql работает и прослушивает TCP-порт 3306.
Еще один тест, который вы можете сделать, - это подключиться к серверу mysql по telnet (с другого компьютера):
telnet ip_mysql_server 3306
Это должно открыть сеанс telnet:
Connected to server_name.
Escape character is '^]'.
5.0.XX-community-nt-log
Ошибка 10060 означает, что вы не разрешены для удаленного доступа к веб-серверу. Следовательно
%
подстановочный знак для части хоста учетной записи пользователя, чтобы разрешить соединение с любого хоста (см. Добавление учетных записей пользователей статья).Посмотри пожалуйста Решение удаленного подключения при получении ошибки 10060 пост для деталей.
Во-первых, это очень плохая идея иметь всемирный открытый порт для вашего сервера базы данных. Особенно, если это порт по умолчанию MySQL. Вы просто приглашаете людей попытаться взломать вашу базу данных.
Вы пробовали использовать инструмент сканирования портов, например Nmap на вашем с удаленного компьютера, чтобы сканировать сервер базы данных? Он сообщит вам, открыт ли порт с помощью nmap -PN -p 3306 XXX.XXX.XX.XX
?
1) доступ к iptables
sudo iptables -I INPUT -p tcp --dport 3306-j ACCEPT
sudo service iptables save
2) my.cnf
[mysqld]
port = 3306
bind-address = 0.0.0.0
3) mysqld
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;
4) mysqld (mysqld)
sudo service mysqld restart
Проверьте конфигурацию 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
смотреть на эта статья для подключения MYSQL с удаленного сервера
Но это плохая идея. Если вы собираетесь получить доступ к базе данных с другого удаленного сервера, почему бы вам не разместить файл на своем сайте с некоторой степенью безопасности, например htpasswd
защита или какой-то модуль аутентификации ...
Если вы собираетесь передавать данные с сервера mysql на другой сервер, будьте точны с требованием ...
Если это просто для синхронизации данных, перейдите к концепциям сервера db ...
Вероятный виновник, о котором люди часто забывают:
mysql> GRANT ALL ON foo.* TO bar@'123.456.789.123' IDENTIFIED BY 'PASSWORD';
Этот шаг необходим для подключения с компьютера 123.456.789.123. Более подробную информацию и более полное руководство можно найти по ссылке Holicreature.
У меня была точно такая же проблема при обмене данными между базой данных 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-адрес моего последнего сервера в список, я смог подключиться.