Сбой удаленного подключения к MySQL (10060) - «Не удается подключиться к серверу MySQL на домене name.com (10060)»

8

Я разработал приложение на VB6 и использую онлайновый сервер базы данных MySQL для хранения данных моего приложения.

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

Не удается подключиться к серверу MySQL (10060) "

Через некоторое время (примерно 30 минут) я снова могу успешно подключиться к базе данных.

  • Я дал максимальные значения всем системным MySQL и глобальным переменным, таким как connection_timeout , wait_timeout и т. Д.
  • Я предоставил все разрешения моему пользователю MySQL.
  • Брандмауэр на моем компьютере выключен.
  • Все соединения правильно закрываются при закрытии приложения.

Я спросил технических специалистов, которые предоставляют службу онлайн-базы данных MySQL, и они дали мне следующие три причины:

  1. Локальный компьютер, с которого вы пытаетесь подключиться, не входит в белый список на сервере.
  2. Максимальное количество соединений для пользователя было превышено.
  3. Сервер MySQL был недоступен в то время (хотя они сказали, что их сервер не был выключен).

Как я могу решить первые две причины или определить, что они являются причиной проблемы? Или может быть другая проблема, не указанная там?

Ашок Гуджар
источник
+1 за использование VB6 в 2015 году!
Raphael75
Посмотрите эту ссылку, которую я нашел: superuser.com/questions/1364906/… Я решаю свою проблему с ним.
FarHooD

Ответы:

2

Вы должны убедиться, что есть:

1) создан пользователь с удаленным доступом, например user @ 'xxxx'

2) есть соединение от двух машин (они могут пинговать друг друга, например, или получать доступ друг к другу другим способом), порт открыт между двумя машинами

3) my.ini/my.cnfесть блокирующий параметр подключения, например: bind-address=a.a.a.aилиskip-networking

4) служба запущена и работает, когда вы пытаетесь подключиться с другой машины

Ахмад Абухасна
источник
0

Скорее всего, это проблема сетевой стороны, и поставщику услуг базы данных необходимо создать новое правило в брандмауэре (iptables). Тем не менее, нам просто нужно подтвердить несколько вещей от поставщика. Поскольку поведение не является устойчивым (иногда вы можете подключиться, а иногда нет). Так что это не проблема привилегий пользователя (GRANT ALL ON ...)

  1. Убедитесь, что они включили порт прослушивания MySQL, чтобы разблокировать / исключить список брандмауэра. Чаще всего это 3306
  2. Попробуйте увеличить параметр max_connection в my.cnf
  3. В my.cnf убедитесь, что ' skip-network ' закомментирован, также bind-address = 127.0.0.1
  4. Какой вывод, если мы используем следующее из командной строки telnet ip_mysql_server 3306
Big Data DBA
источник
1
в Windows telnet, скорее всего, недоступен: используйте powershell PS C: \ Windows \ system32> New-Object System.Net.Sockets.TcpClient ("ip_mysql_server", 3306) Клиент: System.Net.Sockets.Socket Доступно: 78 Подключено: True <== это означает , что вы можете достичь сервер ExclusiveAddressUse: Ложные ReceiveBufferSize: 65536 SendBufferSize: 64512 ReceiveTimeout: 0 SendTimeout: 0 LingerState: System.Net.Sockets.LingerOption NODELAY: Ложные
user906489
0

Укажите вывод порта telnet (ip):

У меня была такая же проблема в прошлый раз, и iptables является виновником в то время.

Когда сервер был перезагружен, правило iptables превращается в значение по умолчанию, и оно не применяет фильтр для определенных портов.

Проверьте iptables

s_ramesh
источник
0

Сначала проверьте, дали ли вы надлежащие привилегии пользователю на текущем хосте, через который вы пытаетесь подключиться к серверу MySQL.

  1. Сначала проверьте ваше имя хоста
  2. Затем войдите в MySQL через суперпользователя типа root
  3. Проверьте, предоставлены ли привилегии или нет select * from mysql.user where host="host_name"\G;
  4. Сначала дайте все привилегии, затем попробуйте подключиться снова.

grant all on *.* to 'user'@'host_name' identified by 'Password';

Я надеюсь, что это полезно для вас.

Рк Сингх
источник
0

Я потратил целый день, пытаясь понять это, и оказалось, что сеть Windows была настроена как общедоступная, а не частная, которая блокирует все входящие соединения. Надеюсь, это кому-нибудь поможет.

Miro
источник
-1

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

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

Позаботьтесь, чтобы ваш дизайн базы данных совпадал с вашим локальным дизайном базы данных, это очень важно !!!

Я надеюсь, что это полезно для вас.

Умберто Энрикес
источник
2
Как вы думаете, они блокируют только каждую вторую попытку?
Дезсо
-1

Две вещи, которые нужно добавить для пользователей mariadb:

1) my.cnf тоже для нас => там я нашел bind-address = 127.0.0.1строку

2) после изменения файла my.cnf необходимо перезапустить службу

Надеюсь это поможет

Ulrich
источник