Comment configurer un serveur MySql pour accepter les connexions à distance?

16

J'installe un serveur MySql sur le bureau Ubuntu. Je pouvais y connecter MySql Query Browser lors de la spécification du Server Hostnameas localhost, mais lorsque je le remplaçais par l'adresse IP de la machine, cela cessait de fonctionner (même si MySql Query Browser s'exécute sur la même machine).

Tout ce que j'ai fait jusqu'à présent, c'est de supprimer les iptables, mais il semble que cela n'y soit pour rien.

Voici le message d'erreur

Impossible de se connecter à l'hôte '192.168.0.2'.

Erreur MySQL Nr. 2003

Impossible de se connecter au serveur MySQL sur '192.168.0.2' (111)

Cliquez sur le bouton «Ping» pour voir s'il y a un problème de réseau.

Le ping est ok, cependant

Jader Dias
la source

Réponses:

22

Vous devrez lier votre mysqld à une IP différente de 127.0.0.1.

Ouvrez votre my.cnf (/etc/mysql/my.cnf habituellement) et changez la ligne qui dit

bind = 127.0.0.1

à toute IP que votre machine utilise pour se connecter au monde extérieur. 0.0.0.0se lie à toutes les adresses IP. N'oubliez pas de redémarrer votre mysqld après ce changement.

halfdan
la source
a obtenu une erreur différente maintenant: Impossible de se connecter à l'hôte '192.168.0.2'. Erreur MySQL Nr. 1130 L'hôte 'any-vubuntu.local' n'est pas autorisé à se connecter à ce serveur MySQL
Jader Dias
user @ localhost et user @ <hostname> est différent. Vous devez ajouter l'utilisateur pour pouvoir vous connecter à partir d'hôtes distants.
James
Ce n'est pas le problème. Je l'ai fait et je reçois toujours l'erreur.
Cerin
Cela devrait-il être bind-address?
Thomas Weller
5

En plus de la réponse halfdan, j'ai dû exécuter la commande mysql suivante:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Comme je l'ai appris

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Jader Dias
la source
2

Plusieurs autres problèmes potentiels expliqués ici:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en /access-denied.html

Si vous souhaitez accorder tous les privilèges à toutes les bases de données, essayez

grant all on *.* to 'joe'@'%';

Cependant, avant de faire cela, assurez-vous d'avoir un utilisateur dans la base de données "mysql" qui a "Host" défini sur votre adresse IP - dans mon cas, mon IP ici à la maison. Ainsi, l'utilisateur "joe" peut avoir plus d'un enregistrement, un pour chaque IP à partir de laquelle il appelle. Pour voir ce que vous avez déjà dedans:

use mysql;
select Host, User, Password from user where user='joe';`

Dans mon cas, il s'est avéré que mon utilisateur avait maintenant la bonne IP mais le mot de passe était également manquant. J'ai coupé le mot de passe (il est haché ou quelque chose) et cela a résolu mon problème de connexion à distance:

update user set Password='5493845039485' where user='joe';

Encore une chose, dans my.cnf, vous pouvez définir "port = 3306" ou le port que vous prévoyez d'utiliser.

PJ Brunet
la source