🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

DirectAdmin: Cómo solucionar errores de conexión a bases de datos

Actualizado el 25 de febrero de 2026

¡Hola! Soy tu técnico de soporte amigable. Hoy vamos a resolver uno de los problemas más comunes (y frustrantes) que puedes encontrar al gestionar tu web: los errores de conexión a bases de datos en DirectAdmin. No te preocupes, no necesitas ser un experto. Vamos paso a paso, con un lenguaje claro y muchas soluciones prácticas.


¿Por qué ocurren los errores de conexión a bases de datos en DirectAdmin?

Cuando tu web intenta conectarse a su base de datos (por ejemplo, MySQL o MariaDB), pueden aparecer mensajes como "Error de conexión", "No se puede conectar al servidor MySQL" o "Access denied for user". Las causas más comunes son:

  • Credenciales incorrectas: usuario, contraseña o nombre de base de datos mal escritos.
  • Servicio de base de datos detenido: el motor MySQL/MariaDB no está corriendo.
  • Firewall bloqueando conexiones: el puerto 3306 (MySQL) o 5432 (PostgreSQL) puede estar cerrado.
  • Límite de conexiones alcanzado: demasiadas conexiones simultáneas.
  • Problemas de permisos: el usuario no tiene acceso a la base de datos.
  • Configuración remota incorrecta: si intentas conectar desde otro servidor.

Vamos a solucionar cada uno de estos escenarios.


Primeros pasos: verifica el estado del servicio

Antes de hacer cambios complejos, comprueba que el motor de base de datos esté funcionando.

### Accede a DirectAdmin y revisa el servicio

  1. Inicia sesión en DirectAdmin (normalmente en tudominio.com:2222).
  2. Ve a Servicios del sistema (en el menú izquierdo, busca "Servicios" o "System Services").
  3. Busca MySQL o MariaDB. Debe aparecer como "Running" (en ejecución).
  4. Si está detenido, haz clic en el botón "Start" (Iniciar).

[WARNING] Si el servicio no arranca, puede haber un error de configuración. Más adelante veremos cómo revisar logs.

### Comprueba desde la línea de comandos (si tienes acceso SSH)

Si tienes acceso SSH, ejecuta:

systemctl status mysql
# o para MariaDB:
systemctl status mariadb

Si está inactivo, inícialo con:

systemctl start mysql

Solución 1: Credenciales incorrectas (el error más común)

Uno de cada tres errores de conexión se debe a que los datos de acceso no coinciden. Revisa esto con cuidado.

### ¿Dónde están las credenciales?

Normalmente en un archivo de configuración de tu web (como wp-config.php en WordPress, config.php en Joomla, .env en Laravel, etc.). Busca líneas como:

define('DB_NAME', 'nombre_base');
define('DB_USER', 'usuario_base');
define('DB_PASSWORD', 'contraseña');
define('DB_HOST', 'localhost');

### Cómo verificar en DirectAdmin

  1. Ve a Base de Datos MySQL (o Base de Datos PostgreSQL).
  2. Allí verás listadas todas tus bases de datos y usuarios.
  3. Haz clic en el icono de ojo (👁️) junto al usuario para ver la contraseña actual. Cópiala exactamente.
  4. Compara con la que tienes en tu archivo de configuración. Un solo carácter mal (mayúscula, minúscula, espacio) provoca error.

[TIP] Si cambias la contraseña en DirectAdmin, recuerda actualizarla también en el archivo de configuración de tu web.

### ¿Qué hago si no recuerdo la contraseña?

Desde DirectAdmin:

  1. Selecciona la base de datos afectada.
  2. Haz clic en "Cambiar contraseña".
  3. Elige una nueva contraseña segura (usa mayúsculas, minúsculas, números y símbolos).
  4. Actualiza el archivo de configuración de tu web con la nueva contraseña.

Solución 2: El host de conexión no es "localhost"

A veces, el error aparece porque tu web intenta conectar a un servidor remoto o el nombre del host es incorrecto.

### ¿Debe ser "localhost" o algo más?

  • Si tu web y la base de datos están en el mismo servidor: usa localhost o 127.0.0.1.
  • Si la base de datos está en otro servidor: debes usar la IP del servidor remoto o su nombre de dominio (ej. db.tudominio.com). Además, el servidor remoto debe permitir conexiones externas.

### Cómo configurar el host en DirectAdmin

  1. En Base de Datos MySQL, al crear o editar un usuario, verás un campo "Host".
  2. Por defecto suele ser localhost. Si necesitas conexión remota, cambia a % (cualquier host) o una IP específica.
  3. Importante: si pones %, cualquier IP podrá intentar conectar (menos seguro). Mejor usa una IP concreta.

[WARNING] Si tu web y base de datos están en el mismo servidor, siempre usa localhost. Usar 127.0.0.1 también funciona, pero a veces causa problemas de resolución.


Solución 3: Servicio de base de datos caído o sobrecargado

Si el servicio no arranca o se cae constantemente, puede deberse a falta de recursos o errores de configuración.

### Revisar logs de errores

  1. Accede por SSH (o desde el panel de archivos de DirectAdmin en /var/log/).
  2. Busca logs como:
    • /var/log/mysql/error.log
    • /var/log/mariadb/mariadb.log
  3. Abre el archivo y busca palabras como "Error", "Out of memory", "Table corruption".

### Soluciones rápidas si el servicio no arranca

  • Aumentar la memoria: si tu servidor tiene poca RAM, MySQL puede negarse a iniciar. Contacta con tu proveedor de hosting para aumentar recursos.
  • Reparar tablas corruptas: desde DirectAdmin, en Base de Datos MySQL, selecciona la base de datos y haz clic en "Reparar".
  • Reiniciar el servicio: desde Servicios del sistema o con systemctl restart mysql.

Solución 4: Firewall bloqueando el puerto de conexión

Si tu base de datos está en un servidor diferente, el firewall puede estar bloqueando el puerto.

### Puertos comunes

  • MySQL/MariaDB: puerto 3306
  • PostgreSQL: puerto 5432

### Cómo verificar en DirectAdmin (si tienes firewall integrado)

  1. Ve a Configuración del servidor > Firewall (o CSF si está instalado).
  2. Busca en la lista de puertos permitidos. Asegúrate de que el puerto 3306 (o 5432) esté en la sección "TCP_IN" y "TCP_OUT".
  3. Si no está, agrégalo (ej. 3306).

### Si usas un firewall externo (como iptables)

Desde SSH, puedes comprobar con:

iptables -L -n | grep 3306

Si no ves nada, permite el tráfico:

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

[INFO] Recuerda que si tu base de datos está en otro servidor, también debes configurar el firewall de ese servidor para permitir conexiones desde tu IP.


Solución 5: Demasiadas conexiones simultáneas

Si tu web recibe mucho tráfico o hay un script mal optimizado, puedes alcanzar el límite de conexiones.

### Síntomas típicos

  • "Too many connections"
  • "User already has more than 'max_user_connections' active connections"

### Cómo solucionarlo temporalmente

  1. Desde DirectAdmin, ve a Base de Datos MySQL > Administrar.
  2. Busca la opción "Conexiones activas" o "Processlist".
  3. Mata procesos zombies (consultas que llevan mucho tiempo) con el botón "Kill".

### Solución permanente: aumentar el límite

  1. Accede a Configuración del servidor > MySQL Management > Variables.
  2. Busca max_connections y aumenta el valor (ej. de 150 a 300). Ten cuidado: más conexiones requieren más RAM.
  3. También puedes ajustar max_user_connections (límite por usuario).

[WARNING] Si no ves estas opciones, pide a tu proveedor de hosting que las modifique. Un cambio incorrecto puede dejar tu base de datos inaccesible.


Solución 6: Permisos de usuario incorrectos

A veces el usuario tiene acceso a la base de datos, pero no a todas las tablas o acciones.

### Cómo verificar y corregir permisos en DirectAdmin

  1. Ve a Base de Datos MySQL.
  2. Selecciona la base de datos y luego "Gestión de usuarios".
  3. Verás los usuarios asignados y sus privilegios (SELECT, INSERT, UPDATE, DELETE, etc.).
  4. Si falta algún privilegio, márcalo y guarda. Para una web normal, suele bastar con ALL PRIVILEGES (todos).

### Si el error persiste, revisa desde SSH

SHOW GRANTS FOR 'usuario'@'localhost';

Si ves que faltan permisos, revísalos con:

GRANT ALL PRIVILEGES ON `basededatos`.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;

Solución 7: Problemas con el archivo de configuración de DirectAdmin

A veces, el propio panel puede tener configuraciones erróneas. Si todo lo anterior falla:

### Revisa el archivo my.cnf (MySQL)

  1. Desde SSH, abre /etc/my.cnf o /etc/mysql/my.cnf.
  2. Busca líneas como bind-address. Si está en 127.0.0.1, solo acepta conexiones locales. Si necesitas conexiones remotas, cámbialo a 0.0.0.0.
  3. Reinicia MySQL.

### ¿Usas Syspanel (HestiaCP)? Puerto 2106

Si tu panel de control es Syspanel (el que antes se llamaba HestiaCP), ten en cuenta que el acceso por defecto es en el puerto 2106. La gestión de bases de datos es similar, pero los archivos de configuración pueden estar en /usr/local/hestia/conf/. Si tienes problemas con Syspanel, contacta con su soporte, ya que su estructura es diferente.

[INFO] Syspanel (HestiaCP) usa el puerto 2106 para el panel web. No confundas con el puerto de base de datos (3306).


Solución 8: Conexión desde fuera del servidor (remota)

Si tu web está en un servidor y la base de datos en otro, necesitas configurar ambos.

### En el servidor de base de datos (DirectAdmin)

  1. Asegúrate de que el usuario tenga host % o la IP del servidor web.
  2. En el firewall, permite el puerto 3306 desde la IP del servidor web.
  3. En my.cnf, cambia bind-address a 0.0.0.0.

### En el servidor web

  1. En tu archivo de configuración, cambia DB_HOST por la IP del servidor de base de datos.
  2. Prueba la conexión con un script simple (PHP):
<?php
$conexion = new mysqli("IP_DEL_SERVIDOR_BASE", "usuario", "contraseña", "basededatos");
if ($conexion->connect_error) {
    die("Error: " . $conexion->connect_error);
} else {
    echo "Conexión exitosa";
}
?>

Preguntas frecuentes (FAQ)

### ¿Qué hago si el error dice "Access denied for user 'usuario'@'localhost' (using password: YES)"?

Significa que la contraseña es incorrecta. Revisa que no tenga espacios, mayúsculas/minúsculas y que coincida con la de DirectAdmin. Si no, cámbiala.

### ¿Por qué mi web funciona y de repente da error de conexión?

Puede ser que el servicio MySQL se haya caído (revisa el estado) o que hayas superado el límite de conexiones. También un cambio en la contraseña o en los permisos.

### ¿Puedo tener más de una base de datos en DirectAdmin?

Sí, puedes crear todas las que necesites desde Base de Datos MySQL. Cada base de datos puede tener sus propios usuarios.

### ¿Cómo sé si mi base de datos está en el mismo servidor que mi web?

Si tu web está en un hosting compartido, lo más probable es que sí. Si tienes un VPS o servidor dedicado, puedes tenerlas separadas. Revisa el archivo de configuración de tu web: si DB_HOST es localhost, están juntas.

### ¿Qué es Syspanel y por qué mencionas el puerto 2106?

Syspanel es un panel de control alternativo (basado en HestiaCP). Si tu hosting usa Syspanel, accedes a él mediante tudominio.com:2106. La gestión de bases de datos es muy parecida a DirectAdmin, pero si tienes dudas específicas, consulta la documentación de Syspanel.


Resumen: checklist rápido para solucionar errores de conexión

  1. Verifica que el servicio MySQL/MariaDB esté corriendo en DirectAdmin.
  2. Revisa las credenciales (usuario, contraseña, nombre de base de datos) en tu archivo de configuración.
  3. Comprueba el host de conexión: debe ser localhost si están en el mismo servidor.
  4. Asegúrate de que el firewall no bloquea el puerto 3306.
  5. Mata procesos zombies si hay demasiadas conexiones.
  6. Revisa los permisos del usuario en DirectAdmin.
  7. Si todo falla, mira los logs (/var/log/mysql/error.log).

[TIP] Si después de todo esto el error persiste, contacta con tu proveedor de hosting. A veces hay problemas de infraestructura que solo ellos pueden resolver.

Espero que esta guía te haya ayudado. Recuerda que la paciencia es clave: un error de conexión suele tener una solución sencilla. ¡Ánimo y a seguir creando tu web!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel