El host 'xxx.xx.xxx.xxx' no puede conectarse a este servidor MySQL
Esto debería ser muy simple, pero no puedo hacer que funcione por mi vida.
Sólo estoy intentando conectarme de forma remota a mi servidor MySQL.
Conectando como:
mysql -u root -h localhost -p
funciona bien, pero intentándolo:
mysql -u root -h 'any ip address here' -p
falla con el error:
ERROR 1130 (00000): El host 'xxx.xx.xxx.xxx' no puede conectarse a este servidor MySQL
En la mysql.user
tabla, hay exactamente la misma entrada para el usuario 'root' con el host 'localhost' que para otra con el host '%'.
Estoy al límite de mi ingenio y no tengo idea de cómo proceder. Cualquier idea es bienvenida.
Posiblemente una medida de seguridad. Podrías intentar agregar una nueva cuenta de administrador:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
Aunque, como han señalado Pascal y otros, no es una buena idea tener un usuario con este tipo de acceso abierto a cualquier IP. Si necesita un usuario administrativo, use root y déjelo en localhost. Para cualquier otra acción, especifique exactamente los privilegios que necesita y limite la accesibilidad del usuario como sugiere Pascal a continuación.
Editar:
De las preguntas frecuentes de MySQL:
Si no puede entender por qué se le deniega el acceso, elimine de la tabla de usuarios todas las entradas que tengan valores de Host que contengan comodines (entradas que contengan caracteres '%' o '_'). Un error muy común es insertar una nueva entrada con Host='%' y Usuario='algún_usuario', pensando que esto le permite especificar localhost para conectarse desde la misma máquina. La razón por la que esto no funciona es que los privilegios predeterminados incluyen una entrada con Host='localhost' y User=''. Debido a que esa entrada tiene un valor de Host 'localhost' que es más específico que '%', se usa con preferencia a la nueva entrada cuando se conecta desde localhost. El procedimiento correcto es insertar una segunda entrada con Host='localhost' y Usuario='algún_usuario', o eliminar la entrada con Host='localhost' y Usuario=''. Después de eliminar la entrada, recuerde emitir una declaración FLUSH PRIVILEGES para recargar las tablas de concesión. Consulte también la Sección 5.4.4, “Control de acceso, Etapa 1: Verificación de la conexión”.
Uno tiene que crear new MySQL User
y asignar privilegios como se muestra a continuación a Query prompt
través de phpMyAdmin o el símbolo del sistema:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Una vez que haya terminado con las cuatro consultas, debería conectarse conusername / password
Mi mensaje de error era similar y decía " El host XXX no puede conectarse a este servidor MySQL " aunque estaba usando root. A continuación se explica cómo asegurarse de que root tenga los permisos correctos.
Mi configuración :
- Ubuntu 14.04 LTS
- MySQL v5.5.37
Solución
Abra el archivo debajo
etc/mysql/my.cnf
Comprobar:
- puerto (por defecto este es
port = 3306
) - dirección de enlace (de forma predeterminada, esto es
bind-address = 127.0.0.1
; si desea abrir para todos, simplemente comente esta línea. Para mi ejemplo, diré que el servidor real está en 10.1.1.7)
- puerto (por defecto este es
Ahora acceda a la base de datos MySQL en su servidor real (digamos que su dirección remota es 123.123.123.123 en el puerto 3306 como usuario
root
y quiero cambiar los permisos en la 'entrada de datos' de la base de datos. Recuerde cambiar la dirección IP, el puerto y el nombre de la base de datos a su configuración )mysql -u root -p Enter password: <enter password> mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password'; mysql>FLUSH PRIVILEGES; mysql>exit
reiniciar el servicio sudo mysqld
Ahora debería poder conectarse remotamente a su base de datos. Por ejemplo, estoy usando MySQL Workbench y pongo 'Nombre de host:10.1.1.7', 'Puerto:3306', 'Nombre de usuario:root'