Resolución de error 'Cannot connect to MySQL server' en DirectAdmin
Cuando tu sitio web o aplicación deja de funcionar y aparece un mensaje como "Cannot connect to MySQL server", la sensación de urgencia es comprensible. Este error es uno de los más comunes en entornos de hosting, especialmente cuando usas DirectAdmin como panel de control. Pero no te preocupes: en la mayorÃa de los casos, la solución es sencilla y no requiere ser un experto en bases de datos.
En este artÃculo, te guiaré paso a paso para diagnosticar y resolver el error de conexión a MySQL en DirectAdmin. Explicaremos las causas más frecuentes, desde problemas de credenciales hasta fallos del servicio, y te daremos soluciones prácticas que puedes aplicar tú mismo. Incluiremos también consejos para evitar que el problema se repita.
¿Qué significa "Cannot connect to MySQL server"?
Este mensaje indica que tu aplicación (WordPress, Joomla, un script PHP, etc.) no puede establecer una comunicación con el servidor de bases de datos MySQL. La causa puede ser desde un simple error tipográfico en la contraseña hasta un servicio caÃdo en el servidor.
DirectAdmin gestiona MySQL a través de una interfaz amigable, pero a veces los cambios en la configuración o el reinicio del servicio pueden provocar desconexiones temporales.
Causas más comunes del error
Antes de lanzarnos a soluciones técnicas, identifiquemos los escenarios tÃpicos:
- Servicio MySQL detenido: El proceso de MySQL no está corriendo en el servidor.
- Credenciales incorrectas: Usuario, contraseña o nombre de base de datos mal escritos.
- Permisos de acceso: El usuario de la base de datos no tiene permisos para conectarse desde el host donde está la aplicación.
- Puerto incorrecto: MySQL usa por defecto el puerto 3306, pero a veces se cambia por seguridad.
- Firewall bloqueando la conexión: Reglas de iptables o CSF pueden impedir conexiones locales o remotas.
- Sobrecarga del servidor: Demasiadas conexiones simultáneas pueden saturar MySQL.
Paso 1: Verificar el estado del servicio MySQL en DirectAdmin
Lo primero es comprobar si MySQL está funcionando. DirectAdmin tiene una herramienta integrada para esto.
Acceder al panel de servicios
- Inicia sesión en DirectAdmin como administrador o usuario reseller.
- Ve a Admin Tools > Server Information o directamente a System > Services.
- Busca en la lista mysqld o mariadb (según la versión instalada).
- Verifica que el estado sea Running (verde). Si aparece Stopped (rojo), debes iniciarlo.
Iniciar el servicio desde la lÃnea de comandos (SSH)
Si tienes acceso SSH, puedes usar estos comandos:
# Para iniciar MySQL
systemctl start mysqld
# Para habilitar que arranque automáticamente
systemctl enable mysqld
# Para verificar el estado
systemctl status mysqld
[TIP] Si el servicio no arranca, revisa los logs:
tail -f /var/log/mysqld.logpara ver el error exacto.
Paso 2: Revisar credenciales y configuración de la aplicación
El error más común es tener mal escritas las credenciales en el archivo de configuración de tu aplicación.
Para WordPress (wp-config.php)
Busca las lÃneas:
define('DB_NAME', 'tu_base_de_datos');
define('DB_USER', 'tu_usuario');
define('DB_PASSWORD', 'tu_contraseña');
define('DB_HOST', 'localhost');
Verifica que:
- El nombre de la base de datos, usuario y contraseña coincidan exactamente con lo que ves en DirectAdmin > MySQL Management.
- El host sea localhost (a menos que uses un servidor remoto).
- No haya espacios o caracteres extraños.
Para Joomla (configuration.php)
Busca las variables:
public $host = 'localhost';
public $user = 'tu_usuario';
public $password = 'tu_contraseña';
public $db = 'tu_base_de_datos';
Para otras aplicaciones
Revisa el archivo de configuración correspondiente (.env, config.php, settings.php, etc.). Asegúrate de que los datos sean idénticos a los que creaste en DirectAdmin.
[WARNING] Si cambiaste la contraseña desde DirectAdmin, actualÃzala también en el archivo de la aplicación. ¡Es muy fácil olvidarlo!
Paso 3: Comprobar permisos del usuario de la base de datos
En DirectAdmin, cada usuario de base de datos tiene asignados privilegios sobre bases de datos especÃficas. Si el usuario no tiene permisos para la base de datos que intenta usar, la conexión fallará.
Cómo verificar y corregir permisos
- En DirectAdmin, ve a MySQL Management.
- Haz clic en Manage Users.
- Busca el usuario que estás usando y haz clic en Edit Privileges.
- Asegúrate de que tenga marcada la base de datos correcta y los privilegios necesarios (al menos SELECT, INSERT, UPDATE, DELETE).
- Guarda los cambios.
También puedes usar la lÃnea de comandos:
GRANT ALL PRIVILEGES ON tu_base.* TO 'tu_usuario'@'localhost';
FLUSH PRIVILEGES;
[INFO] El
@'localhost'es clave: si tu aplicación se conecta desde otro servidor, deberÃas usar@'%'o la IP especÃfica.
Paso 4: Verificar el puerto de conexión
MySQL por defecto usa el puerto 3306. Sin embargo, algunos servidores lo cambian por seguridad. Si tu aplicación especifica un puerto diferente, puede causar el error.
Cómo saber qué puerto usa MySQL
Desde SSH:
netstat -tulpn | grep mysql
DeberÃas ver algo como 0.0.0.0:3306 o 127.0.0.1:3306.
Si el puerto es diferente
En el archivo de configuración de tu aplicación, añade el puerto al host. Por ejemplo:
define('DB_HOST', 'localhost:3307');
O en conexiones PDO:
$dsn = 'mysql:host=localhost;port=3307;dbname=tu_base';
[TIP] Si no sabes qué puerto usar, consulta con tu proveedor de hosting o revisa el archivo
/etc/my.cnfen la lÃneaport =.
Paso 5: Revisar el firewall y reglas de seguridad
Los firewalls como CSF o iptables pueden bloquear conexiones a MySQL, especialmente si intentas conectarte desde una IP externa.
Verificar reglas en DirectAdmin
- Ve a Admin Tools > Firewall Configuration (si usas CSF).
- Busca la sección de puertos permitidos. Asegúrate de que el puerto 3306 (o el que uses) esté en la lista de TCP_IN y TCP_OUT.
- Si necesitas conexiones remotas, añade la IP de origen en Allow IPs.
Desde SSH
Para verificar si el puerto está abierto:
sudo ufw status
Si está bloqueado, habilÃtalo:
sudo ufw allow 3306/tcp
[WARNING] Abrir el puerto 3306 a todo el mundo (0.0.0.0/0) es un riesgo de seguridad. Mejor limita el acceso solo a las IPs necesarias.
Paso 6: Probar la conexión manualmente
Una forma rápida de diagnosticar es intentar conectarte directamente desde la lÃnea de comandos.
Conexión local
mysql -u tu_usuario -p -h localhost
Ingresa la contraseña cuando te la pida. Si funciona, el problema está en la configuración de tu aplicación. Si no, verás un mensaje de error más especÃfico.
Conexión remota (si aplica)
mysql -u tu_usuario -p -h IP_DEL_SERVIDOR -P 3306
Si falla, puede ser por firewall o porque MySQL no permite conexiones remotas (por defecto solo escucha en 127.0.0.1).
Paso 7: Solucionar problemas de sobrecarga y lÃmites de conexión
Si tu sitio tiene mucho tráfico o muchas consultas, MySQL puede rechazar nuevas conexiones porque ha alcanzado el lÃmite máximo.
Verificar conexiones activas
SHOW STATUS LIKE 'Threads_connected';
Si el número es cercano a max_connections, tienes un problema de recursos.
Aumentar el lÃmite de conexiones
Desde SSH, edita el archivo /etc/my.cnf o /etc/mysql/my.cnf:
[mysqld]
max_connections = 500
Luego reinicia MySQL:
systemctl restart mysqld
[INFO] No subas este valor sin supervisión, ya que puede consumir mucha memoria RAM.
Soluciones rápidas para casos comunes
Error después de cambiar la contraseña en DirectAdmin
Actualiza el archivo de configuración de tu aplicación con la nueva contraseña. Si usas un cache de objetos (como Redis o Memcached), limpia también ese caché.
Error después de migrar el sitio
Asegúrate de que el nombre de la base de datos y el usuario sean los mismos que en el servidor anterior. En DirectAdmin, puedes crear usuarios adicionales y asignarles permisos.
Error en WordPress con "Error establishing a database connection"
Además de lo anterior, verifica que el archivo wp-config.php no tenga errores de sintaxis. Un simple espacio extra puede romper la conexión.
Prevención: buenas prácticas para evitar futuros errores
- Guarda las credenciales en un lugar seguro (gestor de contraseñas).
- Haz copias de seguridad de la base de datos periódicamente desde DirectAdmin.
- Monitorea el uso de recursos desde Admin Tools > Process Manager.
- Actualiza MySQL/MariaDB a la última versión estable.
- Si usas HestiaCP (Syspanel), recuerda que el puerto de acceso es el 2106 y la gestión de bases de datos es similar a DirectAdmin.
Preguntas frecuentes (FAQ)
¿Por qué aparece el error después de instalar un plugin?
Algunos plugins de WordPress modifican el archivo wp-config.php o crean conexiones adicionales. Revisa si el plugin requiere una base de datos separada y si las credenciales son correctas.
¿Puedo conectarme a MySQL desde fuera del servidor?
SÃ, pero necesitas:
- Que MySQL escuche en todas las interfaces (cambiar
bind-address = 0.0.0.0en my.cnf). - Que el firewall permita el puerto.
- Que el usuario tenga permisos con
@'%'.
¿Qué hago si el servicio MySQL no arranca?
Revisa los logs: tail -100 /var/log/mysqld.log. Los errores comunes incluyen:
- Espacio en disco lleno.
- Archivos de datos corruptos.
- Configuración incorrecta en my.cnf.
¿Cómo reinicio MySQL desde DirectAdmin?
Ve a Admin Tools > Services > busca mysqld y haz clic en Restart. Si no tienes permisos de administrador, contacta a tu proveedor.
Conclusión
El error "Cannot connect to MySQL server" en DirectAdmin puede ser frustrante, pero siguiendo estos pasos podrás resolverlo en la mayorÃa de los casos. Recuerda siempre empezar por lo más simple: verificar credenciales y estado del servicio. Si el problema persiste, revisa los logs y no dudes en pedir ayuda a tu proveedor de hosting.
La clave está en la paciencia y en ir descartando causas una por una. Con esta guÃa, estarás preparado para enfrentar cualquier problema de conexión a MySQL. ¡Tu sitio volverá a funcionar en poco tiempo!
[TIP FINAL] Si después de todo sigue sin funcionar, prueba a crear un nuevo usuario de base de datos en DirectAdmin y asigna los mismos privilegios. A veces, los permisos se corrompen y es más rápido recrearlos.
