Cannot Connect to Database ServerYour connection attempt failed for user 'root' from your host to server at localhost:3306
, en este artículo veremos cuales serán los pasos a seguir para resolverlo.
El mensaje de error completo de MySQL, cuando intentamos conectarnos, suele ser Your connection attempt failed for user 'root' from your host to server at 127.0.0.1:3306:Can't connect to mysql server on '127.0.0.1'
.
Para resolver el problema, necesitamos recurrir a la consola de Linux, y lo primero que debemos hacer es comprobar que esté disponible el servicio MySQL.MySQL en el servidor se ejecuta como un servicio más, al igual que Apache, entonces para comprobar que el servicio MySQL se encuentra disponible, escribiremos el comando: Comprobar el Servicio MySQL
service mysql status
Se puede usar una alternativa al comando anterior, este es: /etc/init.d/mysql status
.
Si la respuesta, es que el servicio no se encuentra en ejecución, necesitaremos iniciarlo. Para tal efecto, ahora se requerirá tener permiso de administrador si deseamos ejecutar esta tarea. El comando a correr desde consola será:sudo service mysql restart
Una alternativa al comando anterior es: /etc/init.d/mysql restart
.
Se puede comprobar facilmente usando el comando Comprobar que puerto escucha MySQL
netstat
de linux, empleando la instrucción:sudo netstat -tplun
O siendo más específico, con la ayuda de grep
, con el comando:sudo netstat -tplun | grep mysql
Si necesitamos cambiar el puerto de escucha del servicio MySQL, que generalmente o por defecto es el 3306, será requisito alterar su archivo de configuración ubicado en /etc/mysql/my.cnf
.
Cambiar el puerto de servicio de MySQL, se traduce en alterar la línea:[mysqld]
port = 3306
Así si cambiaramos el puerto donde escucha MySQL a3307
y entonces la conexión al servicio MySQL incluso la podríamos hacer especificando el puerto:mysql -u root -p -P 3307
.
En general, por seguridad se configura para que MySQL no acepté conexiones remotas, que es una buena recomendación de seguridad. Se puede comprobar esta situación observando el archivo de configuración de MySQL con: Comprobar si MySQL acepta conexiones remotas
cat /etc/mysql/my.cnf | more
Las líneas que señalan esta comportamiento del servidor MySQL serán:skip-external-locking
ybind-address = 127.0.0.1
.
Se puede dar el caso, que se haya perdido u olvidado la contraseña de la cuenta de acceso a MySQL. En ese caso, debe hacer el siguiente proceso: Conclusión
-
Detener el servicio MySQL:
sudo service mysql stop
Esperar un momento hasta recibir el mensaje de detención del servicio.
-
Luego ejecutar el comando para correr el servicio o demonio MySQL sin autenticación:
sudo mysqld _safe --skip-grant-tables --skip-networking &
-
Conectese a MySQL como superusuario:
mysql -u root
-
Y dentro de la consola de MySQL, cambie la contraseña:
SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
FLUSH PRIVILEGES;
grep
, así no tendremos que buscar en muchas líneas de texto donde se localiza lo que buscamos.Recuerde que el formato del comando de conexión a MySQL es:
mysql -u nombre_usuario -p -h nombre_servidor -D nombre_de_la_db
Por último, tenga presente que si necesita acceder desde fuera del servidor al servicio MySQL, debe considerar que el Firewall, por seguridad, puede impedir el acceso a algunos puertos.