web-dev-qa-db-fra.com

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

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 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?

8
Ashok Gujjar

vous devez vous assurer qu'il y a:

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

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) dans my.ini/my.cnf il y a un paramètre de connexion bloquant comme: bind-address=a.a.a.a ou skip-networking

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

2
Ahmad Abuhasna

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é qui bloque toutes les connexions entrantes. J'espère que cela aide quelqu'un.

0
Miro

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
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
s_ramesh

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
Rk Singh