191 votes

Accès à la racine de MySQL à partir de tous les hôtes

J'ai installé le serveur MySQL sur une machine Ubuntu distante. Le serveur root est défini dans le mysql.user de cette manière :

mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| localhost        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1              | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

Je peux y accéder avec l'utilisateur root à partir de l'interface de ligne de commande de la même machine distante, en utilisant l'option standard mysql client. Je veux maintenant permettre l'accès à la racine à partir de chaque hôte sur l'internet J'ai donc essayé d'ajouter la ligne suivante (il s'agit d'une copie exacte de la première ligne du dump précédent, à l'exception de l'élément host colonne) :

mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| %                | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

Mais mon client sur mon PC personnel continue à me le dire (j'ai masqué l'IP du serveur) :

Erreur SQL (2003) : Impossible de se connecter au serveur MySQL sur '46.x.x.x' (10061)

Je ne peux pas dire s'il s'agit d'une erreur d'authentification ou d'une erreur de réseau. Sur le pare-feu du serveur, j'ai activé le port 3306/TCP para 0.0.0.0/0 et cela ne me dérange pas...

49voto

Babu James Points 351

Exécutez la requête suivante :

use mysql;
update user set host='%' where host='localhost'

REMARQUE : Il n'est pas recommandé de l'utiliser pour la production.

26voto

user10580057 Points 231

MYSQL 8.0 - client de ligne de commande mysql ouvert

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';  

utiliser mysql

UPDATE mysql.user SET host='%' WHERE user='root';  

Redémarrer le service mysql

11voto

user2839051 Points 119

Parfois

bind-address = 127.0.0.1

devrait être

bind-address = *

5voto

The Big Zank Points 51

MariaDB fonctionnant sur Raspbian - le fichier contenant bind-address est difficile à localiser. MariaDB a quelques informations peu utiles sur le sujet.

J'ai utilisé

# sudo grep -R bind-address /etc 

pour localiser l'endroit où se trouve ce fichu objet.

J'ai également dû définir les privilèges et les hôtes dans mysql comme l'ont indiqué les personnes ci-dessus.

Je me suis également amusé à ouvrir le port 3306 pour les connexions à distance à mon Raspberry Pi - enfin utilisé iptables-persistant .

Tout fonctionne très bien maintenant.

2voto

Jason Johnson Points 31

J'utilise AWS LightSail et pour que mon instance fonctionne, j'ai dû changer :

bind-address = 127.0.0.1

a

bind-address = <Private IP Assigned by Amazon>

J'ai ensuite pu me connecter à distance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X