Acceso al servidor MySQL a través de VirtualBox

20

Estoy tratando de hacer que el servidor MySQL (que está dentro de VM) responda al cliente (que está en la máquina host). Todos los métodos devuelven lo mismo:

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

He asegurado el puerto apropiado forwardind. También my.cnfme aseguré de que tengo líneas siguientes:

skip-external-locking
bind-address = 0.0.0.0

Esto no me funcionó. También intenté jugar un poco como sigue:

bind-address = 10.0.2.2

Pero esto tampoco me funcionó: el servidor simplemente no pudo iniciarse.

Alguna idea, donde estoy equivocado?

ACTUALIZAR. No verifiqué los privilegios root@%como en ¿Cómo cambio los privilegios para el usuario de MySQL que ya está creado?

Resuelto

desafiar
fuente
¿Qué cuentas de usuario has creado en MySQL?
Shane Madden
Mi cuenta es root:root. Dudo que el problema esté en los inicios de sesión, de lo contrario, el mensaje de error indicaría Access denied for [email protected]algo o algo.
desafío
@ShaneMadden Lo siento. Tenías mucha razón. La cosa estaba en privilegios para root@%. Bastante mi culpa.
desafío

Respuestas:

37

La cuenta raíz es solo localhost en la gran mayoría de las instalaciones predeterminadas, ¿está seguro de que le ha permitido iniciar sesión desde el otro sistema? Del manual de referencia de MySQL :

significa que no hay fila en la tabla de usuario con un valor de Host que coincida con el host del cliente

Por lo tanto, no hay es %o 10.0.2.2en la Hostcolumna en absoluto. Comprueba tu configuración actual:

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

Es probable que desee crear una nueva entrada raíz con la misma contraseña que tiene ahora.

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
fuente
1
Sí. Gracias. También lo resolví hace un momento, como dijiste aquí. Ese fue exactamente mi problema.
desafío
1
La respuesta de Shane es correcta y se puede ejecutar en un solo comando, útil si está utilizando algo como un script Ansible / Vagrant para automatizar: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