Accès au serveur MySQL via VirtualBox

20

J'essaie d'obtenir le serveur MySQL (qui est à l'intérieur de la machine virtuelle) pour répondre au client (qui se trouve sur la machine hôte). Toutes les méthodes retournent les mêmes:

Host '10.0.2.2' is not allowed to connect to this MySQL server

J'ai assuré un port avant correct. Je me suis également assuré que my.cnfj'ai en lignes suivantes:

skip-external-locking
bind-address = 0.0.0.0

Cela n'a pas fonctionné pour moi. J'ai aussi essayé de jouer un peu comme suit:

bind-address = 10.0.2.2

Mais cela ne fonctionnait pas non plus pour moi - le serveur ne pouvait tout simplement pas démarrer.

Des idées, où je me trompe?

MISE À JOUR. Je n'ai pas vérifié les privilèges root@%comme dans Comment puis-je changer les privilèges pour l'utilisateur MySQL qui est déjà créé?

RESOLU.

défiance
la source
Quels comptes d'utilisateurs avez-vous créés dans MySQL?
Shane Madden
Mon compte est root:root. Je doute que le problème soit dans les connexions, sinon le message d'erreur indiquerait quelque chose de lile Access denied for [email protected]ou quelque chose.
defance
@ShaneMadden Désolé. Tu avais raison. La chose était en privilèges pour root@%. C'est ma faute.
defance

Réponses:

37

Localhost du compte root uniquement dans la grande majorité des installations par défaut, êtes-vous certain de l'avoir autorisé à se connecter à partir de l'autre système? Dans le manuel de référence MySQL :

cela signifie qu'il n'y a pas de ligne dans la table utilisateur avec une valeur Host qui correspond à l'hôte client

Donc, il n'y a pas %ou 10.0.2.2dans la Hostcolonne du tout. Vérifiez votre configuration actuelle:

select user,host from mysql.user where user='root';

Vous souhaiterez probablement créer une nouvelle entrée racine avec le même mot de passe que vous avez maintenant.

create user 'root'@'10.0.2.2' identified by 'yourpassword';
grant all privileges on *.* to 'root'@'10.0.2.2' with grant option;
flush privileges;
Shane Madden
la source
1
Oui. Merci. Je l'ai également résolu il y a un instant, comme vous l'avez dit ici. C'était exactement mon problème.
defance
1
La réponse de Shane est correcte et peut être exécutée en une seule commande, utile si vous utilisez quelque chose comme un script Ansible / Vagrant pour automatiser:mysql -e "create user 'root'@'10.0.2.2' identified by 'yourpassword'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
KayakinKoder