Pour une raison quelconque, je n'ai pas pu me connecter à distance à mon serveur MySQL. J'ai tout essayé et j'ai toujours des erreurs.
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
Maintenant, j'ai essayé de courir
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX';
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
et toujours rien! Qu'est-ce que je fais mal?
EDIT : my.cnf
a commenté l'IP de liaison.
Réponses:
Pour exposer MySQL à autre chose que localhost, vous devrez avoir la ligne suivante
Pour mysql version 5.6 et inférieure
non commenté
/etc/mysql/my.cnf
et attribué à l'adresse IP de votre ordinateur et non en bouclePour mysql version 5.7 et supérieure
non commenté
/etc/mysql/mysql.conf.d/mysqld.cnf
et attribué à l'adresse IP de votre ordinateur et non en boucleOu ajoutez un
bind-address = 0.0.0.0
si vous ne souhaitez pas spécifier l'adresse IPPuis arrêtez et redémarrez MySQL avec la nouvelle entrée my.cnf. Une fois lancé, accédez au terminal et entrez la commande suivante.
Cela devrait revenir quelque chose comme ça avec votre adresse IP réelle dans les xxx
Si la déclaration ci-dessus revient correctement, vous pourrez alors accepter des utilisateurs distants. Cependant, pour qu'un utilisateur distant se connecte avec les privilèges appropriés, vous devez avoir cet utilisateur créé à la fois dans l'hôte local et dans '%' comme dans.
puis,
et enfin,
Si vous n'avez pas créé le même utilisateur que ci-dessus, lorsque vous vous connectez localement, vous pouvez hériter des privilèges de base localhost et avoir des problèmes d'accès. Si vous souhaitez restreindre l'accès à myuser, vous devez lire la syntaxe de l'instruction GRANT ICI .
REMARQUE: Si lsof ne retourne pas ou n'est pas trouvé, vous pouvez l'installer ICI en fonction de votre distribution Linux. Vous n'avez pas besoin de lsof pour faire fonctionner les choses, mais c'est extrêmement pratique lorsque les choses ne fonctionnent pas comme prévu.
la source
lsof -i -P | grep :3306
, cela n'a pas fonctionné mais la connexion à distance fonctionne toujours correctement sans cette confirmation, ignorez si vous ne voyez pas la sortie appropriée.sudo lsof -i -P
sera beaucoup plus utile quelsof -i -P
(en supposant que vous soyez connecté en tant qu'utilisateur non privilégié).lsof -i -P | grep :3306
ne renvoie rien!Ajoutez quelques points en plus de l'excellent article d'apesa:
1) Vous pouvez utiliser la commande ci-dessous pour vérifier l'adresse IP que le serveur mysql écoute
2) Utilisez
FLUSH PRIVILEGES
pour forcer le chargement des tables d'octroi si, pour une raison quelconque, les modifications ne prennent pas effet immédiatement3) Si le pare-feu netfilter est activé (
sudo ufw enable
) sur la machine serveur mysql, procédez comme suit pour ouvrir le port 3306 pour un accès à distance:vérifier l'état en utilisant
4) Une fois qu'une connexion à distance est établie, elle peut être vérifiée sur une machine client ou serveur à l'aide de commandes
la source
sudo ufw status
!!netstat -nlt | grep 3306
retourne videMySQL n'écoute que localhost, si nous voulons activer l'accès à distance, nous devons apporter des modifications dans le fichier my.cnf:
Nous devons commenter les lignes bind-address et skip-external-lock:
Après avoir effectué ces modifications, nous devons redémarrer le service mysql:
la source
skip-external-locking
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Si vous testez sous Windows, n'oubliez pas d'ouvrir le port 3306.
la source
Vous utilisez ubuntu 12 (assez ancien)
Tout d'abord, ouvrez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf ( /etc/mysql/my.cnf dans Ubuntu 14.04 et les versions antérieures
Sous [mysqld] Localisez la ligne, bind-address = 127.0.0.1 Et changez-la en, bind-address = 0.0.0.0 ou commentez-la
Ensuite, redémarrez le serveur Ubuntu MysQL
systemctl restart mysql.service
Maintenant, Ubuntu Server autorisera l'accès à distance au serveur MySQL, mais vous devez toujours configurer les utilisateurs MySQL pour autoriser l'accès à partir de n'importe quel hôte.
L'utilisateur doit être
'username'@'%'
de toutes les subventions requisesPour vous assurer que le serveur MySQL écoute sur toutes les interfaces, exécutez la commande netstat comme suit.
netstat -tulnp | grep mysql
J'espère que cela fonctionne!
la source