web-dev-qa-db-fra.com

Connexions à distance Mysql Ubuntu

Pour une raison quelconque, je n’ai pas pu me connecter à distance à mon serveur MySQL. J'ai tout essayé et je continue à avoir 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: mon.cnf a commenté l'IP de liaison.

Pour exposer MySQL à autre chose que localhost, vous devez avoir la ligne suivante

Pour mysql version 5.6 et inférieure

non commenté dans /etc/mysql/my.cnf et attribué à l'adresse IP de votre ordinateur et non au bouclage

Pour mysql version 5.7 et supérieure

non commenté dans /etc/mysql/mysql.conf.d/mysqld.cnf et attribué à l'adresse IP de votre ordinateur et non au bouclage

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

Ou ajoutez un bind-address = 0.0.0.0 si vous ne voulez pas spécifier l'adresse IP

Puis arrêtez et redémarrez MySQL avec la nouvelle entrée my.cnf. Une fois en cours d'exécution, allez au terminal et entrez la commande suivante.

lsof -i -P | grep :3306

Cela devrait revenir quelque chose comme ça avec votre adresse IP réelle dans le xxx

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

Si l'instruction ci-dessus est renvoyée correctement, vous pourrez alors accepter les utilisateurs distants. Cependant, pour qu'un utilisateur distant puisse se connecter avec les privilèges appropriés, vous devez le créer à la fois dans l'hôte local et '%' comme dans.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

ensuite,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

et enfin,

FLUSH PRIVILEGES; 
EXIT;

Si vous ne créez pas le même utilisateur que ci-dessus, lorsque vous vous connectez en local, 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 de mon utilisateur, vous devez lire la syntaxe de l'instruction GRANT HERE Si vous avez réussi à traverser tout cela et que vous rencontrez toujours des problèmes, envoyez une sortie d'erreur supplémentaire et le fichier my. CNF lignes appropriées.

NOTE: 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 que les choses fonctionnent, mais c'est extrêmement pratique lorsque les choses ne fonctionnent pas comme prévu.

328
apesa

Ajoutez quelques points au-dessus de l'excellent post d'apesa:

1) Vous pouvez utiliser la commande ci-dessous pour vérifier l'adresse IP que le serveur mysql écoute

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

2) Utilisez FLUSH PRIVILEGES pour forcer le chargement des tables de subventions si, pour une raison quelconque, les modifications ne prennent pas effet immédiatement

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

3) Si le pare-feu netfilter est activé (Sudo ufw enable) sur le serveur mysql, procédez comme suit pour ouvrir le port 3306 pour l'accès à distance:

Sudo ufw allow 3306

vérifier l'état en utilisant

Sudo ufw status

4) Une fois la connexion à distance établie, elle peut être vérifiée sur un ordinateur client ou serveur à l’aide de commandes.

netstat -an | grep 3306
netstat -an | grep -i established
35
Jonathan L

MySQL n'écoute que localhost. Si nous voulons activer l'accès distant, nous devons apporter quelques modifications au fichier my.cnf:

Sudo nano /etc/mysql/my.cnf

Nous devons commenter l'adresse de liaison et ignorer les lignes de verrouillage externes:

#bind-address = 127.0.0.1
# skip-external-locking

Après avoir apporté ces modifications, nous devons redémarrer le service mysql:

Sudo service mysql restart
8
Vinh Lee

Si vous effectuez des tests sous Windows, n'oubliez pas d'ouvrir le port 3306.

1
marw