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

Cómo arreglar el error 'Connection refused' al conectar a MySQL en DirectAdmin

Actualizado el 29 de noviembre de 2025

¿Qué significa el error "Connection refused" en MySQL?

Imagina que intentas entrar a tu casa, pero al llegar, la puerta está cerrada con llave y nadie responde al timbre. Eso es exactamente lo que ocurre cuando ves el error "Connection refused" (conexión rechazada) al intentar conectar con tu base de datos MySQL en DirectAdmin.

Este mensaje, que también puede aparecer como "error connection refused mysql", indica que tu servidor está intentando establecer una conexión con MySQL, pero el servicio de base de datos no está aceptando conexiones. Las causas pueden variar desde que MySQL no está corriendo, hasta problemas de configuración de red, permisos o incluso firewalls bloqueando el acceso.

Lo bueno es que, en la mayoría de los casos, es un problema que puedes resolver tú mismo siguiendo una serie de pasos lógicos. A continuación, te guiaré a través de las soluciones más efectivas para arreglar este directadmin mysql error y volver a tener tus bases de datos funcionando en poco tiempo.

Primeros pasos: verifica si MySQL está en ejecución

El error más común y la causa más simple de una conexión mysql fallida es que el servicio MySQL simplemente no está activo. Esto puede ocurrir después de un reinicio del servidor, una actualización o un fallo del sistema.

Cómo comprobar el estado del servicio

Accede a tu servidor a través de SSH (si tienes acceso root) o mediante el administrador de archivos de DirectAdmin. Si usas SSH, escribe:

systemctl status mysql

O si tu sistema usa el antiguo comando de servicio:

service mysql status

Si el resultado te muestra que el servicio está inactivo (dead) o fallando, entonces ya tienes el diagnóstico. Para iniciarlo, ejecuta:

systemctl start mysql

Y para asegurarte de que se inicie automáticamente en cada reinicio del servidor:

systemctl enable mysql

[TIP] En algunos servidores, el servicio puede llamarse mysqld en lugar de mysql. Prueba ambos nombres si el primero no funciona.

Verifica los puertos y la configuración de red

Si MySQL está corriendo pero sigues viendo el error "Connection refused", el problema puede estar en que MySQL está escuchando en un puerto diferente al esperado o solo en una interfaz de red específica.

¿En qué puerto está escuchando MySQL?

Por defecto, MySQL usa el puerto 3306. Para verificar en qué puerto está escuchando, usa:

netstat -tlnp | grep mysql

O también:

ss -tlnp | grep mysql

Deberías ver una línea similar a:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1234/mysqld

Si ves 127.0.0.1:3306 en lugar de 0.0.0.0:3306, significa que MySQL solo está aceptando conexiones locales. Esto es normal si solo te conectas desde el mismo servidor, pero si necesitas conexiones remotas, deberás cambiar la configuración.

Cómo modificar la configuración de bind-address

Edita el archivo de configuración de MySQL:

nano /etc/my.cnf

Busca la línea que dice bind-address y cámbiala a:

bind-address = 0.0.0.0

Esto hará que MySQL acepte conexiones desde cualquier interfaz de red. Después, reinicia el servicio:

systemctl restart mysql

[WARNING] Si tu servidor está expuesto a internet, permitir conexiones remotas a MySQL puede ser un riesgo de seguridad. Asegúrate de tener contraseñas fuertes y considera limitar el acceso por IP mediante el firewall.

El firewall puede estar bloqueando la conexión

Otra causa muy común de un directadmin mysql error es que el firewall del servidor esté bloqueando el puerto 3306. Tanto si usas CSF (ConfigServer Security & Firewall), iptables o cualquier otro firewall, debes asegurarte de que el puerto está abierto.

Abrir el puerto en CSF (el más común en DirectAdmin)

Si tienes CSF instalado, abre el archivo de configuración:

nano /etc/csf/csf.conf

Busca la línea TCP_IN y añade el puerto 3306 al final. Debería quedar algo así:

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,3306"

Luego, guarda el archivo y reinicia CSF:

csf -r

Abrir el puerto en iptables

Si usas iptables directamente:

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

Y guarda los cambios:

service iptables save

[INFO] También puedes comprobar si el puerto está abierto desde tu ordenador local usando herramientas como Telnet o NC (netcat). Por ejemplo: telnet tu-servidor.com 3306. Si recibes un mensaje de "Connection refused", el problema está en el servidor. Si se queda colgado esperando, el firewall está bloqueando.

Problemas con los permisos y usuarios de MySQL

A veces, el error no es de red, sino de autenticación. El mensaje "Connection refused" puede aparecer cuando el usuario de MySQL no tiene permisos para conectarse desde el host desde el que intentas hacerlo.

Cómo verificar los permisos de usuario

Conéctate a MySQL desde la línea de comandos del servidor:

mysql -u root -p

Y ejecuta:

SELECT user, host FROM mysql.user;

Si tu usuario aparece con host localhost, solo podrá conectarse localmente. Si necesitas permitir conexiones remotas, deberás crear un nuevo usuario o modificar el existente:

GRANT ALL PRIVILEGES ON *.* TO 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña' WITH GRANT OPTION;
FLUSH PRIVILEGES;

El símbolo % indica que se permite la conexión desde cualquier host. Puedes reemplazarlo por una IP específica para mayor seguridad.

Revisa los logs de MySQL para más detalles

Los logs de MySQL son como el diario del servicio: registran todo lo que ocurre, incluyendo los errores. Revisarlos te dará pistas precisas sobre la causa del error connection refused mysql.

Dónde encontrar los logs

Normalmente, los logs están en /var/log/mysql/ o /var/log/mysqld.log. Puedes ver las últimas líneas con:

tail -100 /var/log/mysql/error.log

O si usas el log general:

tail -100 /var/log/mysql/mysql.log

Busca líneas que contengan "ERROR", "refused" o "denied". Algunos mensajes comunes incluyen:

  • "Can't start server: Bind on TCP/IP port. Got error: 98"
  • "Address already in use"
  • "Access denied for user 'usuario'@'host'"

El puerto ya está en uso

Si ves el error "Address already in use", significa que otro proceso está ocupando el puerto 3306. Puedes ver qué proceso es con:

lsof -i :3306

Y si es un proceso fantasma, puedes matarlo y reiniciar MySQL:

kill -9 PID
systemctl restart mysql

La solución definitiva: reiniciar el servicio completo

Si has probado todos los pasos anteriores y sigues con el problema, a veces la solución más simple es la más efectiva: reiniciar tanto MySQL como el servidor web (Apache o LiteSpeed) para asegurarte de que todos los servicios se cargan correctamente.

Reiniciar servicios en DirectAdmin

Desde el panel de DirectAdmin, ve a la sección "System Info" o "Services" (dependiendo de la versión). Busca MySQL y haz clic en "Restart". También puedes hacerlo desde SSH:

systemctl restart mysql
systemctl restart httpd

O si usas LiteSpeed:

systemctl restart lsws

[TIP] Después de reiniciar, espera unos 10 segundos antes de intentar conectar de nuevo. MySQL puede tardar un poco en iniciarse completamente, especialmente si tienes muchas bases de datos.

Soluciones adicionales si usas Syspanel (HestiaCP)

Si tu servidor usa Syspanel (el antiguo HestiaCP), los pasos son muy similares, pero con algunas diferencias. Recuerda que el panel de administración de Syspanel se accede por el puerto 2106.

Verificar servicios en Syspanel

Accede a http://tu-servidor.com:2106 y usa tus credenciales de administrador. Ve a la sección de servicios y verifica que MySQL esté activo. Si no lo está, actívalo desde ahí.

Configuración específica en Syspanel

En Syspanel, la configuración de MySQL se encuentra en /etc/mysql/my.cnf o /etc/my.cnf. Los comandos para reiniciar son los mismos:

systemctl restart mysql

Preguntas frecuentes sobre este error

¿Puedo perder mis datos si reinicio MySQL?

No. Reiniciar MySQL no borra datos. Solo detiene y vuelve a iniciar el servicio. Tus bases de datos permanecen intactas en el disco.

¿Por qué MySQL se detiene solo?

Las causas más comunes son: falta de memoria en el servidor, corrupción en las tablas, o que el sistema operativo lo mata por uso excesivo de recursos. Revisa los logs y considera optimizar tus consultas si el problema es recurrente.

¿Cómo puedo prevenir este error en el futuro?

Configura un monitoreo básico del servicio. Puedes crear una tarea cron que verifique si MySQL está corriendo y lo reinicie si no lo está. Por ejemplo, añade esto al crontab:

* * * * * systemctl status mysql || systemctl start mysql

¿Qué hago si nada de esto funciona?

Si has agotado todas las opciones, puede que el problema sea más profundo, como una corrupción en los archivos de configuración o un conflicto con otra aplicación. En ese caso, contacta con tu proveedor de hosting o un administrador de sistemas profesional.

Conclusión

El error "Connection refused" al conectar a MySQL en DirectAdmin puede ser frustrante, pero como has visto, la mayoría de las veces tiene una solución clara y sencilla. Recuerda seguir estos pasos en orden:

  1. Verifica que MySQL esté corriendo.
  2. Comprueba el puerto y la configuración de bind-address.
  3. Revisa el firewall.
  4. Asegúrate de que los permisos de usuario sean correctos.
  5. Analiza los logs para obtener pistas.
  6. Reinicia los servicios.

Con paciencia y siguiendo esta guía, podrás solucionar mysql directadmin y volver a tener tus aplicaciones funcionando sin interrupciones. No olvides que la prevención es clave: configura un monitoreo básico y mantén tus servicios actualizados para evitar futuros sustos.

Si este artículo te ha sido útil, compártelo con otros administradores de servidores que puedan estar enfrentando el mismo problema. Y recuerda, ante cualquier duda, siempre es mejor consultar con un experto antes de realizar cambios drásticos en tu servidor.

¿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