Je reçois une erreur:
"Connexion perdue avec le serveur MySQL à la lecture du paquet de communication initial, erreur système: 0"
pendant que je vais connecter ma base de données.
Si j'utilise localhost, tout se passe bien . Mais lorsque j'utilise mon adresse IP réelle, comme ci-dessous, il y a erreur
mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
Quelqu'un ici suggère qu'il pourrait s'agir d'un problème de pare-feu:
Je viens d'avoir ce problème et j'ai trouvé que c'était mon pare-feu. J'utilise PCTools Firewall Plus et cela ne permettait pas un accès complet à MySQL. Une fois que j'ai changé ça c'était bien. J'espère que cela pourra aider.
Est-ce que ça pourrait être ça?
De plus, quelqu'un ici suggère que c'est peut-être parce que le serveur MySQL est lié à l'IP en boucle (127.0.0.1/localhost), ce qui vous empêche effectivement de vous connecter de "l'extérieur".
Si tel est le cas, vous devez télécharger le script sur le serveur Web (qui exécute probablement également le serveur MySQL) et conserver l'hôte de votre serveur en tant qu'hôte 'localhost'.
Ouvrez le fichier de configuration mysql nommé my.cnf et essayez de trouver "bind-address". Remplacez ici le paramètre (127.0.0.1 OR localhost) par votre adresse IP de serveur actif (l'adresse que vous utilisez dans la fonction mysql_connect).
Cela résoudra définitivement le problème.
Merci
1) Autoriser la connexion à distance à MySQL . Editer le fichier:
>Sudo nano /etc/mysql/my.cnf
Ligne de commentaire:
#bind-address = 127.0.0.1
Redémarrez MySQL:
>Sudo service mysql restart
2) Créer un utilisateur pour la connexion à distance.
>mysql -uroot -p
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';
GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
3) Dans mon cas, je dois me connecter à distance de Windows à la machine VirtualBox avec Ubuntu. J'ai donc besoin d'autoriser le port 3306 dans iptables:
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Avait ce problème lors de la configuration d'un nouveau serveur esclave. Il a été trouvé que l'adresse IP du serveur esclave était absente du fichier /etc/hosts.allow
du serveur maître. J'ai ajouté l'adresse IP et cela m'a permis de me connecter au serveur maître.
Notez que j'utilise hosts.allow
et hosts.deny
pour contrôler l'accès.
J'ai eu ce problème et il s'est avéré que l'ancien administrateur système avait modifié le port sur lequel MySQL fonctionnait. MySQL Workbench essayait de se connecter au 3306 par défaut mais le serveur fonctionnait sous 20300.
Le problème sur mon cas était que MySQL était lié uniquement au bas sur linux . Afin de résoudre le problème, j’ai édité le fichier my.cnf (disponible dans /etc/mysql/my.cnf) en supprimant la ligne bind-address = 127.0.0.1
cela permet à mysql de se lier à n’importe quelle interface réseau
Cette erreur s’est produite lors de la connexion à Google Cloud SQL avec MySQL Workbench 6.3.
Après quelques recherches, j'ai constaté que mon adresse IP avait été modifiée par le fournisseur d'accès Internet et qu'il n'était pas autorisé dans le Cloud SQL.
Je l'ai autorisé et suis retourné au travail.
L'erreur signifie qu'il n'a pas reçu de réponse du port sur lequel il s'attend à trouver le serveur. Les causes peuvent aller du contact avec la mauvaise machine (pour plusieurs raisons) au fait que le serveur ne se trouve pas sur le port attendu.
Vérifiez le port auquel votre serveur est lié dans /etc/mysql/my.cnf. Cela correspond-il à ce qui se trouve dans votre déclaration de connexion? Si elles correspondent, essayez de vous connecter avec mysql à partir du serveur lui-même et de la ligne de commande de la machine sur laquelle vous exécutez le client. Si cela fonctionne à un endroit et pas à un autre, vous pouvez avoir un problème de configuration de pare-feu/routeur.
Je viens d'installer mysql sur un windows box. L'erreur de l'OP s'est produite lors de la tentative de connexion au client Navicat MySql sur la même boîte. Je devais spécifier 127.0.0.1 en tant qu'hôte, et cela l'a compris.
localhost ou l'adresse IP réelle du serveur ne fonctionnent pas tous les deux.
Le problème pour moi était que les requêtes DNS étaient bloquées par le FW au sein du sous-réseau. La solution consistait à désactiver les recherches DNS dans MySQL.
Le problème était assez stupide pour moi.
J'avais l'habitude d'avoir le même problème sur la machine AWS EC2 Ubuntu (MariaDB est installée localement pour le moment), alors j'ai essayé de créer un tunnel SSH et j'ai eu le même problème. Alors j'ai essayé de ssh tunnel sur terminal:
ssh -L13306:127.0.0.1:3306 [email protected] -i my/private/key.pem
Et il m'a dit ceci:
Veuillez vous connecter en tant qu'utilisateur "Ubuntu" plutôt qu'en tant qu'utilisateur "root".
J'ai changé d'utilisateur ssh de root en ubuntu, tout comme ma configuration ssh, et tout s'est bien connecté.
Vérifiez donc votre utilisateur de connexion SSH.
J'ai surveillé cela, donc cela aussi une demi-heure de mon temps, donc j'espère que cela vous sera utile.
dans mon cas, j'avais ALL: ALL in hosts.deny. Changer ceci en ALL: PARANOID a résolu mon problème de connexion via ssh
Couru dans ce même problème, Bind Address aller-retour en vain. La solution pour moi était privilèges de chasse d'eau .
mysql> FLUSH PRIVILEGES;
J'ai rencontré exactement la même erreur lors de la connexion à partir de MySQL Workbench. Voici comment je l'ai corrigé. Dans mon fichier de configuration /etc/my.cnf, la valeur de l'adresse de liaison était définie sur l'adresse IP du serveur. Cela devait être fait pour configurer la réplication. Quoi qu'il en soit, je l'ai résolu en faisant deux choses:
créer un utilisateur pouvant être utilisé pour se connecter à partir de l'adresse de liaison dans le fichier my.cnf E.g.
CREATE USER 'nom_utilisateur' @ 'adresse_bind' IDENTIFIED BY 'mot_de_passe'; DONNER TOUT PRIVILEGES SUR nom_du_fichier. * TO 'nom_utilisateur' @ 'adresse_bien'; FLUSH PRIVILEGES;
modifier la valeur du nom d'hôte MySQL dans les détails de connexion dans le plan de travail MySQL afin qu'elle corresponde à l'adresse de liaison
Pour moi, le fichier de configuration "/etc/mysql/mysql.conf.d/mysqld.cnf" a été trouvé en commentant l'adresse de lien a fait l'affaire.
Comme on peut le voir ici: À la place de la gestion de réseau, la valeur par défaut consiste à n'écouter que sur localhost qui est plus compatible et n'est pas moins sécurisé.
Pour moi, régler bind-address = 0.0.0.0
dans mysql/my.cnf
a fonctionné. En gros, il écoute toutes les adresses (mais toujours un port).
Et n'oubliez pas de redémarrer votre serveur: systemctl restart mysql
Je viens d'avoir le même problème, mais dans mon cas, je l'ai résolu avec
service mysqld start
Lors de la connexion à Mysql à distance, j'ai eu l'erreur . J'ai eu cet avertissement dans /var/log/mysqld.log
:
[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution
Je viens d'ajouter cette ligne au fichier /etc/hosts
:
X.X.X.X some_name
Problème résolu! Ne pas utiliser skip-name-resolve
a provoqué des erreurs dans mon application locale lors de la connexion à MySQL.
J'ai eu une erreur similaire (connexion à MYSQL sur aws via MYSql Workbench). J'avais l'habitude de me connecter correctement avant et tout d'un coup, il a cessé de fonctionner et ne fonctionne plus, il ne fonctionne plus. Ma connexion était via SSH protégé par keyfile.
Il s'est avéré que je m'arrêtais. J'ai donc augmenté le délai d'expiration de la connexion SQL à 30 secondes (à partir de 10 par défaut) et j'étais prêt à recommencer. choses à essayer (si vous êtes dans une configuration similaire)
mysql -u [username] -p [database]
? Ceci vérifiera les problèmes de droits d'utilisateur, etc.L'autorisation de lecture-écriture du répertoire de base de données est également un problème que j'ai rencontré . Assurez-vous simplement que votre application est capable de rw les fichiers sur l'emplacement de la base de données Essayez chmod 777 pour les tests.
Si bind-address n'est pas présent dans votre fichier de configuration et que mysql est hébergé sur une instance AWS, veuillez vérifier votre groupe de sécurité. Dans des conditions idéales, les règles entrantes doivent accepter toutes les connexions du port 3306 et les règles sortantes doivent répondre à toutes les adresses IP valides.
J'essaie de connecter mon db docker container sur Ubuntu 18.04, même problème.
Commencez par vérifier votre périphérique en exécutant nmcli dev
pour vérifier si le périphérique docker0
est connecté.
S'il n'est pas connecté, essayez de redémarrer le service Docker:
Sudo service docker restart
J'ai fait ci-dessous 3 étapes alors travailler pour moi.
bind-address = "YOUR MACHINE IP"
dans le fichier my.cnf
à /etc/my.cnf
Redémarrer le service avec la commande: service httpd restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
J'ai eu le même problème. Pour résoudre ce problème, je viens de changer hôte de localhost: 3306 en localhost. Donc, une erreur peut survenir lorsque vous séparez un port incorrect pour la connexion. Il vaut mieux laisser le défaut.
Une raison de plus ...
J'ai rencontré un serveur Ubuntu où tout était personnalisé et ne pouvait pas se connecter à cause de la même erreur.
Ce paramètre était à l'intérieur /etc/ssh/sshd_config
PermitTunnel no
Après être devenu
PermitTunnel yes
J'ai pu me connecter à distance à ma base de données MySQL
J'ai rencontré le même problème. J'ai vérifié et essayé de définir AllowTcpForwarding Oui mais il manquait dans mon sshd_config, donc aucune aide. Je n'ai pas modifié sshd_config ou my.cnf. Assurez-vous que le nom d’hôte ssh estPASidentique avec le nom d’hôte mysql (utilisez localhost).
Dans Workbench, choisissez + pour ajouter une nouvelle connexion et définissez les éléments suivants:
Tester la connexion. Cela devrait être réussi, puis cliquez sur OK.Viola!
Le pare-feu Apache bloque l'adresse IP. donc pour donner accès, utilisez ces commandes:
firewall-cmd --permanent --zone = digne de confiance --add-source = YOUR_IP/32
firewall-cmd --permanent --zone = sécurisé --add-port = 3306/tcp
firewall-cmd --reload