La connexion à distance à MySQL échoue (10060) - «Impossible de se connecter au serveur MySQL sur domainname.com (10060)»


8

J'ai développé une application en VB6 et j'utilise un serveur de base de données MySQL en ligne pour stocker les données de mon application.

La première fois que j'essaie de me connecter à mon serveur de base de données réussit, mais après avoir fermé mon application et l'avoir redémarrée, j'obtiens:

Impossible de se connecter au serveur MySQL (10060) "

Après un certain temps (environ 30 minutes), je peux à nouveau me connecter à la base de données.

  • J'ai donné des valeurs maximales à l'ensemble du système MySQL et des variables globales comme connection_timeout , wait_timeout etc.
  • J'ai accordé toutes les autorisations à mon utilisateur MySQL.
  • Le pare-feu de mon ordinateur est désactivé.
  • Toutes les connexions sont correctement fermées à la fermeture de l'application.

J'ai demandé aux techniciens qui fournissent le service de base de données MySQL en ligne et ils m'ont donné ces trois raisons:

  1. La machine locale à partir de laquelle vous essayez de vous connecter n'est pas sur la liste blanche sur le serveur.
  2. Le nombre maximal de connexions pour l'utilisateur a été dépassé.
  3. Le serveur MySQL était en panne à l'époque (bien qu'ils aient dit que leur serveur n'était pas en panne).

Comment puis-je résoudre les deux premières raisons ou déterminer qu'elles sont la cause du problème? Ou pourrait-il y avoir un autre problème qui n'y figure pas?


+1 pour l'utilisation de VB6 en 2015!
raphael75

voir ce lien que j'ai trouvé: superuser.com/questions/1364906/… Je résous mon problème avec.
FarHooD

Réponses:


2

vous devez vous assurer qu'il y a:

1) utilisateur créé avec accès à distance, par exemple utilisateur @ 'xxxx'

2) il y a une connexion entre les deux machines (elles peuvent se pinguer par exemple ou accéder les unes aux autres par une autre méthode) le port est ouvert entre les deux machines

3) my.ini/my.cnfil y a un paramètre de connexion bloquant comme: bind-address=a.a.a.aouskip-networking

4) le service est opérationnel lorsque vous essayez de vous connecter à partir de l'autre machine


0

Il s'agit très probablement d'un problème côté réseau et le fournisseur de services de base de données doit créer une nouvelle règle dans le pare-feu (iptables). Nous avons juste besoin de confirmer quelques éléments auprès du fournisseur. Comme le comportement n'est pas stable (à l'occasion, vous pouvez vous connecter, et parfois non). Ce n'est donc pas un problème de privilège utilisateur (GRANT ALL ON ...)

  1. Assurez-vous qu'ils ont inclus le port d'écoute MySQL dans la liste de déblocage / exception du pare-feu. Le plus souvent, c'est 3306
  2. Essayez d'augmenter le paramètre max_connection dans my.cnf
  3. Dans my.cnf, assurez-vous que « skip-networking » est mis en commentaire, également bind-address = 127.0.0.1
  4. Quelle est la sortie si nous utilisons ce qui suit à partir de la ligne de commande telnet ip_mysql_server 3306

1
sur windows telnet n'est probablement pas disponible: utilisez powershell PS C: \ Windows \ system32> New-Object System.Net.Sockets.TcpClient ("ip_mysql_server", 3306) Client: System.Net.Sockets.Socket disponible: 78 Connecté: True <== cela indique que vous pouvez atteindre le serveur ExclusiveAddressUse: False ReceiveBufferSize: 65536 SendBufferSize: 64512 ReceiveTimeout: 0 SendTimeout: 0 LingerState: System.Net.Sockets.LingerOption NoDelay: False
user906489

0

Fournissez la sortie du port telnet (ip):

J'ai eu le même problème la dernière fois et l'iptables est le coupable à ce moment-là.

Lorsque le serveur a été redémarré, la règle iptables passe à la valeur par défaut et n'a pas appliqué le filtre pour certains ports.

Vérifiez les iptables


0

Vérifiez d'abord si vous avez accordé les privilèges appropriés à l'utilisateur sur votre hôte actuel via lequel vous essayez de vous connecter au serveur MySQL.

  1. Vérifiez d'abord votre nom d'hôte
  2. Ensuite, connectez-vous à MySQL via un super utilisateur comme «root»
  3. Vérifiez si les privilèges sont accordés ou non select * from mysql.user where host="host_name"\G;
  4. Donnez d'abord tous les privilèges, puis essayez de vous reconnecter.

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

J'espère que ça t'aide.


0

J'ai passé une journée entière à me cogner la tête en essayant de comprendre cela et il s'est avéré que le réseau Windows a été défini comme public au lieu de privé, ce qui bloque toutes les connexions entrantes. J'espère que cela aide quelqu'un.


-1

certains hébergeurs bloquent par défaut l'accès à distance à ses serveurs MySql pour des raisons de sécurité. Si vous devez débloquer le service d'accès à distance, dites-leur de débloquer ce service.

Sinon, testez votre application localement, en tant qu'hôte local et lorsque cela fonctionne correctement, modifiez le nom d'hôte, etc. des paramètres de base de données dans votre application et téléchargez-les sur votre serveur d'hébergement Web, cela fonctionne très bien !!!.

Faites attention, que votre conception de base de données vérifie avec votre conception de base de données locale, c'est très important !!!

J'espère que ça t'aide.


2
Pensez-vous qu'ils ne bloquent que toutes les deux tentatives?
dezso

-1

Deux choses à ajouter pour les utilisateurs de mariadb:

1) le my.cnf est aussi pour nous => là j'ai trouvé la bind-address = 127.0.0.1ligne

2) vous devez redémarrer le service après avoir modifié le fichier my.cnf

J'espère que cela t'aides

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.