Cómo solucionar el error de conexión con la base de datos en MySQL o MariaDB
El mensaje “Error al establecer una conexión con la base de datos” aparece cuando MySQL o MariaDB no pueden establecer la conexión entre la aplicación y la base de datos. En la mayoría de los casos, se debe a credenciales incorrectas, a un servidor de base de datos detenido o a problemas de configuración.
¿Qué significa el mensaje “Error al establecer una conexión con la base de datos”?
El mensaje “Error al establecer una conexión con la base de datos” aparece cuando una aplicación, como una página web desarrollada en PHP, no logra comunicarse con la base de datos MySQL o MariaDB. Entre las causas más frecuentes se encuentran credenciales incorrectas (nombre de usuario o contraseña), un servidor de base de datos detenido o una configuración errónea del servidor. También pueden originarlo problemas de red, como puertos bloqueados o datos de host incorrectos. En sistemas de gestión de contenidos como WordPress, este mensaje se muestra directamente cuando no es posible acceder a la base de datos. Por lo general, este error impide el acceso completo a la página web, ya que los contenidos no pueden cargarse ni guardarse correctamente.
Cómo solucionar el error “Error al establecer una conexión con la base de datos” en MySQL o MariaDB
Si no puedes conectarte a tu base de datos, el problema puede deberse a diferentes causas. A continuación, encontrarás una serie de pasos para identificar y resolver el origen del error en tu caso concreto.
Solución 1: verifica que MySQL o MariaDB estén en funcionamiento
Si MySQL o MariaDB dejan de ejecutarse, los scripts y las páginas web no podrán establecer conexión con la base de datos. En un servidor Linux, puedes ejecutar el siguiente comando para comprobar si el servicio MySQL está activo:
ps -aux | grep mysqlEste comando devuelve una lista de los procesos en ejecución que contienen “mysql” en su nombre. En la lista también aparece el propio comando que acabas de ejecutar. Si MySQL está activo, verás además el proceso correspondiente a MySQL.

Si MySQL o MariaDB no están en ejecución, solo verás tu propio comando grep listado.
Puedes iniciar MySQL o MariaDB con los siguientes comandos:
# Ubuntu
systemctl start mysql
systemctl start mariadb
# CentOS
systemctl start mysqld
systemctl start mariadbAsegúrate de utilizar el nombre de usuario y la contraseña correctos. Ambos datos se definen al crear la base de datos MySQL. Además, debes comprobar que el nombre del host esté configurado correctamente.
Solución 2: verifica la conexión con la base de datos
Una vez que sepas que MySQL/MariaDB está en funcionamiento, el siguiente paso es conectarte desde la línea de comandos con el comando:
mysql -u root -pDeberías ser solicitado para ingresar la contraseña del usuario root. Por defecto, la contraseña para el acceso root es la misma que la contraseña root original de tu servidor.
Si cambias la contraseña del usuario root del servidor, la contraseña del usuario root de MySQL no se cambiará.
Después de ingresar la contraseña, deberías estar en el cliente MySQL/MariaDB. La interfaz del cliente MySQL se verá, por ejemplo, así:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 9.4.0 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>Si tienes problemas al establecer una conexión con MySQL con otro nombre de usuario y contraseña, realiza esta prueba una segunda vez sustituyendo root por el otro nombre de usuario.
Solución 3: revisa el nombre de usuario de MySQL/MariaDB
Si introduces credenciales incorrectas, MySQL o MariaDB devolverán un mensaje de error similar al siguiente:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)Asegúrate de que tanto el nombre de usuario que aparece en el mensaje de error como la contraseña introducida estén escritos correctamente. Ten en cuenta que MySQL y MariaDB distinguen entre mayúsculas y minúsculas: Root no es lo mismo que root.
- Vende a través de las redes sociales en solo unos minutos
- Gestiona todo desde una sola plataforma
- Compatible con cualquier producto o servicio
Por ello, vale la pena comprobar que estás utilizando la ortografía y las mayúsculas correctas en el nombre de usuario. Para listar todos los usuarios de MySQL o MariaDB, accede al cliente de línea de comandos como usuario root con el siguiente comando:
mysql -u root -pA continuación, lista todos los usuarios de MySQL y sus hosts con el comando:
select host, user from mysql.user;De este modo, se te mostrará el nombre de usuario exactamente como fue creado. Además, en la columna Host, verás desde dónde el usuario tiene permiso para conectarse.
Solución 4: restablece la contraseña de usuario de MySQL/MariaDB
Ten especial cuidado al restablecer la contraseña del usuario root. Sigue los pasos con atención para evitar eliminar o modificar por error una contraseña equivocada.
Si el problema no está en la escritura del nombre de usuario, es posible que se deba a una contraseña no válida. Para restablecer la contraseña de un usuario en MySQL o MariaDB, accede al cliente de línea de comandos como usuario root con el siguiente comando:
mysql -u root -pA continuación, restablece la contraseña del usuario con el siguiente comando:
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;Reemplaza new_password con la nueva contraseña y myuser con el nombre de usuario.
Solución 5: asegúrate de que el usuario tenga los permisos adecuados
Si ya has comprobado que el nombre de usuario y la contraseña son correctos, es posible que el problema se deba a la falta de permisos (grants) para acceder a la base de datos.
Para verificar los permisos de un usuario, inicia sesión en el cliente de línea de comandos como root con el siguiente comando:
mysql -u root -pA continuación, muestra los permisos del usuario con el comando:
SHOW GRANTS FOR 'myuser'@'localhost';Sustituye myuser por el nombre de usuario correspondiente. Si es necesario, cambia localhost por el nombre del host. El comando debería mostrar una lista con los privilegios que ese usuario tiene sobre la base de datos. El resultado debería verse más o menos así:
+-------------------------------------------------------------+
| Grants for myuser@localhost |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost` |
| GRANT ALL PRIVILEGES ON `reviews`.* TO `myuser`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0,004 sec)Ten en cuenta que este usuario tiene todos los permisos sobre una base de datos llamada reviews.
Si el usuario no tiene permisos asignados para ninguna base de datos, verás algo como esto:
+--------------------------------------------+
| Grants for myuser@localhost |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost` |
+--------------------------------------------+
1 row in set (0,001 sec)Ten en cuenta que este usuario solo tiene el permiso USAGE en “.” y no dispone de permisos sobre ninguna base de datos. Esto puede ser la causa del error de acceso.
Solución 6: verifica la conexión con la base de datos desde la web
Aunque MySQL o MariaDB se estén ejecutando localmente, pueden surgir problemas al intentar conectarse desde el entorno web. Una prueba sencilla desde el navegador te ayudará a comprobar esta conexión y detectar posibles errores de acceso. Para ello, crea un pequeño script que verifique si la base de datos acepta la conexión. Guarda un archivo llamado database-connection-test.php con el siguiente contenido:
<?php
$test_connect = mysqli_connect('localhost', 'root', 'password');
if (!$test_connect) {
die('Could not connect: ' . mysqli_connect_error());
}
echo 'Successful database connection.';
mysqli_close($test_connect);
?>Sustituye password por la contraseña del usuario root.
Guarda este archivo en el directorio de tu servidor web y ábrelo en el navegador. Si consigues conectarte con el nombre de usuario y la contraseña de root, sabrás que tu base de datos acepta conexiones correctamente.
Si tienes problemas al establecer la conexión con MySQL o MariaDB utilizando otro nombre de usuario y contraseña, repite la prueba sustituyendo root por el nuevo usuario y la contraseña correspondiente.
Recuerda eliminar este archivo una vez que hayas terminado las pruebas.
Solución 7: verifica el cortafuegos y los puertos
Incluso si MySQL o MariaDB funcionan correctamente y los datos de acceso son correctos, un cortafuegos podría estar bloqueando la conexión. De forma predeterminada, MySQL utiliza el puerto 3306 para las conexiones entrantes. Primero, comprueba si el puerto está abierto. En un sistema Linux, puedes usar los siguientes comandos:
sudo netstat -tulnp | grep 3306
# En sistemas con ufw (Ubuntu)
sudo ufw statusSi el cortafuegos está bloqueando el puerto, puedes abrirlo manualmente con los siguientes comandos:
# Ubuntu con ufw
sudo ufw allow 3306/tcp
sudo ufw reload
# CentOS o RHEL con firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reloadAsegúrate de abrir el puerto solo para las direcciones IP que realmente necesiten acceso. Permitir el acceso a todas las direcciones puede suponer un riesgo de seguridad. Una vez que hayas ajustado correctamente la configuración del cortafuegos, tu aplicación debería poder volver a conectarse a la base de datos MySQL o MariaDB. Comprueba de nuevo la conexión con el script de prueba en PHP o directamente desde la consola.

