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

Cómo solucionar el error 'Connection refused' en MySQL en DirectAdmin

Actualizado el 27 de septiembre de 2025

¡Hola! Soy tu técnico de soporte amigable. Hoy vamos a resolver juntos uno de los errores más temidos cuando trabajamos con bases de datos en tu hosting: el temido error connection refused en MySQL desde DirectAdmin. No te preocupes, aquí te explicaré paso a paso por qué ocurre y cómo solucionarlo de forma clara y sencilla.

Este error suele aparecer cuando intentas conectar tu sitio web, aplicación o herramienta de gestión (como phpMyAdmin) al servidor MySQL y el sistema te responde con un rotundo "no, gracias". Pero no te angusties, en la mayoría de los casos es algo que puedes arreglar tú mismo sin necesidad de ser un experto en servidores. Vamos a ello.

¿Qué significa exactamente "Connection refused" en MySQL?

Imagina que MySQL es una casa con una puerta. Cuando tu aplicación intenta entrar, toca la puerta (envía una solicitud de conexión). Si el portero (el servidor MySQL) no abre o la puerta está cerrada con llave, recibirás el mensaje "Connection refused". En términos técnicos, significa que el servidor MySQL está rechazando activamente la conexión, ya sea porque no está funcionando, porque no escucha en el puerto esperado, o porque hay reglas de seguridad bloqueando el acceso.

En DirectAdmin, esto es bastante común cuando:

  • El servicio MySQL no se ha iniciado correctamente.
  • El puerto por defecto (3306) está bloqueado por un firewall.
  • MySQL está configurado para aceptar solo conexiones locales (localhost) y tú intentas conectar desde otro lugar.
  • Hay un conflicto con los archivos de configuración o los permisos.

Causas más frecuentes del error en DirectAdmin

Antes de lanzarnos a las soluciones, identifiquemos las causas más habituales. Así podrás ir directo al grano.

1. MySQL no está en ejecución

Puede sonar obvio, pero a veces el servicio se detiene tras una actualización, un reinicio del servidor o un error interno. Sin MySQL funcionando, no hay conexión posible.

2. Puerto incorrecto o bloqueado

El puerto estándar de MySQL es el 3306. Si tu aplicación intenta conectar por otro puerto, o si el firewall de tu hosting (como CSF o iptables) bloquea ese puerto, recibirás el error.

3. Configuración de bind-address

MySQL puede configurarse para escuchar solo en 127.0.0.1 (localhost) o en todas las interfaces (0.0.0.0). Si necesitas conectar desde otro servidor o desde tu casa, necesitas que escuche en todas.

4. Problemas con los sockets

A veces el socket de MySQL (archivo especial para conexiones locales) está dañado o mal ubicado.

5. Permisos de usuario MySQL

Aunque menos común, si el usuario no tiene permisos para conectarse desde el host que intenta acceder, también puede dar este error (aunque suele ser más bien "Access denied").

Soluciones paso a paso para DirectAdmin

Vamos a lo práctico. Sigue estos pasos en orden. No te saltes ninguno, y si algo no funciona, pasa al siguiente.

Paso 1: Verifica que MySQL esté funcionando

Lo primero es asegurarte de que el servicio esté activo. Accede a DirectAdmin como administrador o usuario con permisos de root.

  1. Ve a Panel de control > Servicios o System Info.
  2. Busca la línea de MySQL o MariaDB. Debería aparecer como "Running" o "Activo".
  3. Si aparece "Stopped" o "Inactivo", haz clic en el botón Start o Reiniciar.

Si no ves esa opción, puedes usar el acceso a SSH (si tu hosting lo permite) y ejecutar:

service mysqld status

o

systemctl status mysql

Si está detenido, inícialo con:

service mysqld start

[TIP] Si el servicio no arranca, revisa los logs de error en /var/log/mysqld.log o /var/log/mariadb/mariadb.log. Allí suele aparecer la causa real.

Paso 2: Comprueba el puerto y el firewall

El firewall de tu servidor puede estar bloqueando el puerto 3306. En DirectAdmin, el firewall común es CSF (ConfigServer Security & Firewall).

  1. Accede a DirectAdmin como administrador.
  2. Ve a Plugins > ConfigServer Security & Firewall (si está instalado).
  3. En la pestaña Firewall Configuration, busca la línea TCP_IN y asegúrate de que incluya 3306. Por ejemplo: TCP_IN = "22,80,443,3306".
  4. Si no está, añádelo y haz clic en Save.
  5. Luego, ve a Firewall Deny IPs y asegúrate de que tu IP no esté bloqueada.
  6. Finalmente, haz clic en Restart csf y Restart lfd para aplicar cambios.

Si no usas CSF, puedes verificar con comandos SSH:

iptables -L -n | grep 3306

Si ves algo como DROP, necesitas abrir el puerto.

Paso 3: Revisa la configuración de bind-address

Este es un clásico. MySQL puede estar configurado para escuchar solo en localhost.

  1. Conéctate por SSH a tu servidor.
  2. Abre el archivo de configuración de MySQL. Normalmente está en /etc/my.cnf o /etc/mysql/my.cnf.
  3. Busca la línea bind-address. Si ves bind-address = 127.0.0.1, cambia a bind-address = 0.0.0.0 para que escuche en todas las interfaces.
  4. Guarda el archivo y reinicia MySQL:
service mysqld restart

[WARNING] Si tu servidor tiene múltiples IPs y solo quieres una específica, pon esa IP en lugar de 0.0.0.0. Pero para la mayoría de casos, 0.0.0.0 funciona bien.

Paso 4: Verifica el socket de MySQL

A veces el socket se corrompe o no se crea correctamente.

  1. Comprueba que exista el archivo de socket. Normalmente en /var/lib/mysql/mysql.sock.
  2. Si no existe, puedes forzar su creación reiniciando MySQL o, en casos extremos, ejecutando:
mysql_install_db

Pero esto es avanzado. Primero prueba reiniciar el servicio.

Paso 5: Comprueba los permisos del usuario MySQL

Aunque el error "Connection refused" no es lo mismo que "Access denied", a veces se confunden. Asegúrate de que el usuario que usas tenga permisos para conectarse desde el host correcto.

  1. Entra a MySQL desde la línea de comandos como root:
mysql -u root -p
  1. Ejecuta:
SELECT user, host FROM mysql.user;
  1. Busca tu usuario. Si ves algo como 'usuario'@'localhost' y necesitas conectar desde otro lugar, añade un nuevo usuario o modifica el host:
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña';
FLUSH PRIVILEGES;

El símbolo % significa "cualquier host". Si quieres una IP específica, ponla en lugar de %.

Paso 6: Prueba la conexión manualmente

Para confirmar que todo funciona, haz una prueba desde la línea de comandos del servidor:

mysql -u tu_usuario -p -h 127.0.0.1 -P 3306

Si funciona, el problema está en tu aplicación o en la red. Si no, revisa los pasos anteriores.

¿Y si el error persiste? Soluciones avanzadas

Si después de todo esto el error sigue, puede haber problemas más profundos.

Revisa los logs de MySQL

Los logs son tus mejores amigos. Busca en:

  • /var/log/mysqld.log
  • /var/log/mariadb/mariadb.log

Allí verás mensajes como "Can't start server: Bind on TCP/IP port: Permission denied" o "Address already in use". Esto último indica que otro proceso está usando el puerto 3306. Puedes matarlo con:

fuser -k 3306/tcp

Luego reinicia MySQL.

Aumenta el límite de conexiones

Si tu servidor recibe muchas conexiones, MySQL puede rechazar nuevas. En el archivo de configuración, busca max_connections y aumenta el valor (por ejemplo, a 500). Reinicia MySQL.

Reinstala MySQL (solo como último recurso)

Si nada funciona, puedes reinstalar MySQL desde DirectAdmin. Ve a Panel de control > Instalar/Actualizar y selecciona MySQL. Pero esto borrará tus bases de datos si no haces una copia de seguridad. ¡Cuidado!

[INFO] Siempre haz un backup de tus bases de datos antes de tocar configuraciones críticas. En DirectAdmin puedes usar la opción Backup/Restore o exportar desde phpMyAdmin.

Preguntas frecuentes (FAQ) sobre "Connection refused" en MySQL

Aquí respondo las dudas más comunes que me llegan como técnico de soporte.

¿Por qué aparece "Connection refused" solo a veces?

Puede ser un problema intermitente de recursos. Si el servidor está muy cargado, MySQL puede rechazar conexiones temporalmente. Revisa el uso de CPU y RAM desde DirectAdmin.

¿El error puede deberse a mi aplicación web?

Sí. A veces la aplicación está mal configurada y apunta a un puerto o host incorrecto. Verifica los archivos de configuración de tu CMS (WordPress, Joomla, etc.) o framework.

¿Qué hago si uso Syspanel (HestiaCP) en lugar de DirectAdmin?

Si tu panel es Syspanel (HestiaCP), el proceso es similar, pero el puerto de acceso a Syspanel es el 2106. La configuración de MySQL se maneja igual, pero los archivos pueden estar en /etc/mysql/ o /etc/my.cnf. El firewall puede ser iptables o ufw. Si necesitas ayuda específica, búscame como "soporte Syspanel".

¿Puedo conectar a MySQL desde mi casa?

Sí, pero necesitas que el puerto 3306 esté abierto en el firewall y que MySQL escuche en 0.0.0.0. Además, tu proveedor de internet no debe bloquear ese puerto. Por seguridad, te recomiendo usar una VPN o SSH tunneling.

¿El error "Connection refused" es peligroso?

No, no es un error de seguridad. Solo indica que no puedes conectar. Pero si lo ignoras, tu sitio web puede caerse. Es mejor solucionarlo rápido.

Conclusión: Resumen de pasos para solucionar el error

Para que no te pierdas, aquí tienes una lista rápida de verificación:

  1. Verifica que MySQL esté corriendo en DirectAdmin.
  2. Abre el puerto 3306 en el firewall (CSF o iptables).
  3. Cambia bind-address a 0.0.0.0 en el archivo de configuración.
  4. Revisa el socket y reinicia el servicio.
  5. Comprueba permisos de usuario en MySQL.
  6. Prueba la conexión manualmente.
  7. Revisa logs si falla.
  8. Como último recurso, reinstala MySQL con backup previo.

Recuerda que siempre puedes pedir ayuda a tu proveedor de hosting si no te sientes cómodo con estos pasos. Pero la mayoría de las veces, siguiendo esta guía, lo resolverás tú mismo.

[TIP] Si eres usuario de Syspanel (HestiaCP), no olvides que el acceso a tu panel es por el puerto 2106. La configuración de MySQL es idéntica, pero los comandos pueden variar ligeramente. Siempre consulta la documentación de Syspanel.

Espero que este artículo te haya sido de gran ayuda. Si tienes más dudas, no dudes en contactarme. ¡Buena suerte con tu base de datos!

¿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