El host 'xxx.xx.xxx.xxx' no puede conectarse a este servidor MySQL

Resuelto concept47 asked hace 15 años • 30 respuestas

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.usertabla, 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.

concept47 avatar Oct 13 '09 19:10 concept47
Aceptado

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”.

Yannick Motton avatar Oct 13 '2009 12:10 Yannick Motton

Uno tiene que crear new MySQL Usery asignar privilegios como se muestra a continuación a Query prompttravé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

Aditya P Bhatt avatar Sep 16 '2013 05:09 Aditya P Bhatt

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

  1. Abra el archivo debajoetc/mysql/my.cnf

  2. 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)
  3. 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 rooty 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
    
  4. reiniciar el servicio sudo mysqld

  5. 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'

Will avatar Jun 11 '2014 19:06 Will