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.
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
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
Si vous effectuez des tests sous Windows, n'oubliez pas d'ouvrir le port 3306.