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

Solucionar error 'Connection refused' en MySQL (cPanel, Plesk, DirectAdmin)

Actualizado el 28 de noviembre de 2025

[INFO] Este artículo está pensado para que cualquier persona, aunque no sea una experta en servidores, pueda entender y seguir los pasos. Vamos a ir despacio y con calma. Si en algún momento te sientes perdido, respira hondo y vuelve a leer la sección. ¡Tú puedes!

Cuando tu sitio web o aplicación deja de funcionar y ves el temido mensaje “Connection refused” (Conexión rechazada) al intentar conectar con MySQL, el corazón se te para un segundo. Es uno de los errores más comunes y, a la vez, más frustrantes, pero no te preocupes: en la gran mayoría de los casos tiene una solución clara y accesible.

En esta guía completa, vamos a desglosar qué significa exactamente este error, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso en los paneles de control más populares: cPanel, Plesk y DirectAdmin. También hablaremos de alternativas como Syspanel (antes conocido como HestiaCP) para que tengas una visión global.

Al final, tendrás un plan de acción claro para diagnosticar y arreglar el problema, o al menos, sabrás exactamente qué información necesitas para pedir ayuda a tu proveedor de hosting.


¿Qué significa exactamente “Connection refused” en MySQL?

Antes de lanzarnos a tocar botones, es crucial entender qué nos está diciendo el servidor. El error “Connection refused” es diferente de otros errores como “Access denied” (Acceso denegado).

  • Access denied: Esto significa que el servidor MySQL está vivo, escuchando, y ha recibido tu solicitud, pero ha rechazado tus credenciales (usuario o contraseña incorrectos).
  • Connection refused: Esto significa que el servidor MySQL no está escuchando en el puerto y la dirección que le has indicado. Es como llamar a la puerta de una casa y que no haya nadie dentro, o que la casa ni siquiera exista en esa calle.

Las causas más comunes de que MySQL “no conecte” son:

  1. El servicio MySQL está caído: El proceso se ha detenido por un fallo, un reinicio del servidor o una actualización fallida.
  2. MySQL está escuchando en el puerto o IP incorrectos: A veces, por configuración, MySQL solo acepta conexiones locales (localhost) y no desde la IP pública, o viceversa.
  3. Un firewall está bloqueando el puerto: El puerto 3306 (el predeterminado para MySQL) puede estar bloqueado por un firewall del sistema operativo o del panel de control.
  4. El servidor está sobrecargado: En casos de mucho estrés, el servidor puede rechazar nuevas conexiones.
  5. El archivo de configuración tiene errores: Una mala configuración en my.cnf o my.ini puede impedir que el servicio arranque correctamente.

Ahora que sabemos qué buscar, vamos a la acción. Es fundamental que hagas una copia de seguridad antes de realizar cualquier cambio, especialmente si vamos a tocar archivos de configuración.


Primeros pasos: Diagnóstico inicial (para todos los paneles)

Independientemente de si usas cPanel, Plesk, DirectAdmin o Syspanel, hay dos pasos universales que debes hacer primero. Te recomiendo que los hagas en orden.

1. Verificar el estado del servicio MySQL

La forma más rápida de saber si el problema es que el servicio está caído es comprobarlo desde la terminal. Para ello, necesitas acceso SSH a tu servidor.

Abre tu cliente SSH favorito (como PuTTY en Windows o la terminal en Mac/Linux) y conéctate a tu servidor como usuario root.

Una vez dentro, ejecuta uno de estos comandos (depende del sistema operativo que use tu servidor, normalmente CentOS, AlmaLinux, Ubuntu o Debian):

Para sistemas con systemd (la mayoría de las distribuciones modernas):

systemctl status mysql

O si el servicio se llama mysqld:

systemctl status mysqld

O también puede llamarse mariadb si tu servidor usa MariaDB (un clon de MySQL muy común):

systemctl status mariadb

Para sistemas más antiguos (SysV init):

service mysql status

¿Qué deberías ver?

  • Si el servicio está activo (running): Verás un mensaje en verde que dice active (running). El problema no es que esté caído, sino que no escucha bien. Sigue leyendo.
  • Si el servicio está inactivo (dead): Verás un mensaje en rojo que dice inactive (dead) o failed. Este es el problema. Necesitas arrancarlo.

Para arrancar el servicio (si está caído), usa:

systemctl start mysql

O el nombre que corresponda (mysqld o mariadb).

Si el servicio no arranca, es muy probable que haya un error de configuración. Revisa los logs. Un buen comando para ver los últimos errores es:

journalctl -u mysql -n 50

O si usas MariaDB:

journalctl -u mariadb -n 50

Esto te mostrará las últimas 50 líneas del registro del sistema para ese servicio. Busca la palabra ERROR para encontrar pistas.

2. Verificar si MySQL está escuchando en el puerto correcto

Si el servicio está activo pero sigues viendo error connection refused mysql, es hora de ver qué puertos está usando.

Ejecuta este comando:

netstat -tlnp | grep -E 'mysql|mariadb'

O si netstat no está instalado, usa:

ss -tlnp | grep -E 'mysql|mariadb'

¿Qué deberías ver?

Deberías ver una línea similar a esta:

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

O también podría aparecer como :::3306 o 0.0.0.0:3306.

  • 127.0.0.1:3306 significa que MySQL solo escucha en la interfaz de bucle local (localhost). Esto es normal y seguro por defecto. Solo podrás conectar desde el mismo servidor.
  • 0.0.0.0:3306 o :::3306 significa que MySQL escucha en todas las interfaces de red, incluyendo tu IP pública. Esto es necesario si quieres conectar desde fuera del servidor.

¿Qué significa esto?

Si tu aplicación web está en el mismo servidor que MySQL, la conexión debería ser a localhost. Si ves 127.0.0.1:3306, el problema no es este. Si no ves nada en la salida, significa que MySQL no está escuchando en el puerto 3306, lo que confirma que el servicio no arrancó correctamente o está configurado para otro puerto.


Soluciones específicas por panel de control

Ahora que hemos hecho el diagnóstico básico, vamos a ver cómo aplicar las soluciones en cada panel de control.

Solucionar MySQL en cPanel

cPanel es uno de los paneles más utilizados. Aquí, la gestión de MySQL se suele hacer a través de WHM (Web Host Manager).

### Paso 1: Reiniciar MySQL desde WHM

  1. Inicia sesión en WHM (normalmente en https://tu-ip:2087).
  2. En el buscador de la izquierda, escribe “Restart MySQL” o “SQL Services”.
  3. Haz clic en “Restart MySQL”.
  4. Se te pedirá confirmación. Haz clic en “Yes, Restart MySQL”.

Esto reiniciará el servicio. A veces, un simple reinicio soluciona el problema si era un fallo temporal.

### Paso 2: Revisar la configuración de red y el firewall (ConfigServer Security & Firewall - CSF)

cPanel a menudo viene con CSF instalado. Si el reinicio no funciona, es hora de revisar el firewall.

  1. En WHM, busca “ConfigServer Security & Firewall” o “CSF”.
  2. Haz clic en “Firewall Configuration”.
  3. Busca la sección de “Port Settings”.
  4. Asegúrate de que el puerto 3306 está permitido si necesitas conexiones remotas. Para conexiones locales (localhost), no debería ser necesario, pero a veces CSF bloquea incluso las conexiones locales si la configuración es muy estricta.
  5. Si no ves el puerto 3306 en la lista de puertos permitidos, añádelo en el campo “TCP_IN” (para conexiones entrantes) y “TCP_OUT” (para salientes) si es necesario.
  6. Guarda los cambios y reinicia CSF.

[WARNING] Abrir el puerto 3306 a todo el mundo es un riesgo de seguridad enorme. Si solo necesitas conexiones locales, no lo abras. Si necesitas conexiones remotas desde una IP específica, añade esa IP a la lista blanca de CSF en lugar de abrir el puerto a todos.

### Paso 3: Verificar el archivo de configuración my.cnf

Si el problema persiste, el archivo de configuración puede tener un error.

  1. Accede a tu servidor por SSH como root.
  2. Navega al directorio de configuración: cd /etc.
  3. Abre el archivo my.cnf con un editor de texto (por ejemplo, nano my.cnf o vi my.cnf).
  4. Busca la línea que dice bind-address.
  5. Si está configurada como bind-address = 127.0.0.1, solo escuchará en local. Si necesitas conexiones remotas, cámbiala a bind-address = 0.0.0.0 (pero recuerda el warning anterior).
  6. Guarda el archivo y reinicia MySQL: systemctl restart mysql.

Solucionar MySQL en Plesk

Plesk tiene una interfaz más moderna y amigable. Los pasos son similares pero la navegación cambia.

### Paso 1: Reiniciar MySQL desde Plesk

  1. Inicia sesión en Plesk (normalmente en https://tu-ip:8443).
  2. En el panel de la izquierda, ve a “Tools & Settings” (Herramientas y Configuración).
  3. En la sección “Server Management” (Gestión del Servidor), haz clic en “Services Management” (Gestión de Servicios).
  4. Busca el servicio “MySQL” en la lista.
  5. Haz clic en el icono de “Restart” (Reiniciar) junto a él.

### Paso 2: Revisar el firewall de Plesk

Plesk tiene su propio firewall integrado.

  1. En “Tools & Settings”, ve a la sección “Security” (Seguridad).
  2. Haz clic en “Firewall”.
  3. Verás una lista de reglas. Busca una regla para el puerto 3306.
  4. Si no existe, créala. Asegúrate de permitir el tráfico en ese puerto, al menos para las IPs que lo necesiten.
  5. Aplica los cambios.

### Paso 3: Revisar el archivo de configuración

Al igual que en cPanel, el archivo my.cnf es clave.

  1. Accede por SSH.
  2. El archivo de configuración en Plesk suele estar en /etc/my.cnf o /etc/mysql/my.cnf.
  3. Revisa la línea bind-address y ajústala según lo que necesites.
  4. Guarda y reinicia: systemctl restart mysql.

[INFO] En Plesk, a veces el problema puede estar relacionado con los usuarios de MySQL y sus privilegios. Si el error persiste, revisa en “Databases” que el usuario de tu base de datos tenga permisos para conectarse desde localhost o desde la IP desde la que intentas conectar.


Solucionar MySQL en DirectAdmin

DirectAdmin es otro panel muy popular, conocido por su eficiencia.

### Paso 1: Reiniciar MySQL desde DirectAdmin

  1. Inicia sesión en DirectAdmin (normalmente en https://tu-ip:2222).
  2. Ve a la sección “System Info & Files” (Información del Sistema y Archivos).
  3. Haz clic en “Service Monitoring” (Monitorización de Servicios).
  4. Busca el servicio “MySQL” y haz clic en el botón “Restart”.

### Paso 2: Revisar la configuración de red

DirectAdmin usa el firewall del sistema operativo (iptables o nftables).

  1. Accede por SSH.
  2. Para ver las reglas actuales de iptables, ejecuta: iptables -L -n -v | grep 3306.
  3. Si no ves ninguna regla para el puerto 3306, puede que esté bloqueado. Para permitir el acceso desde localhost, no debería haber problema. Para acceso remoto, necesitas añadir una regla.

Para añadir una regla que permita el acceso al puerto 3306 desde una IP específica (por ejemplo, 203.0.113.10):

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

Para guardar los cambios en iptables (para que persistan tras un reinicio):

service iptables save

### Paso 3: Revisar la configuración de MySQL

  1. El archivo de configuración suele estar en /etc/my.cnf.
  2. Revisa la línea bind-address.
  3. Al igual que en los otros paneles, ajústala según sea necesario.
  4. Guarda y reinicia: systemctl restart mysql o service mysql restart.

Solución para Syspanel (HestiaCP)

[INFO] Syspanel es el nombre que le damos al panel de control anteriormente conocido como HestiaCP. El acceso a su panel de administración se realiza a través del puerto 2106. Por ejemplo, https://tu-ip:2106.

Syspanel es conocido por su ligereza, pero sus servicios son igual de susceptibles a fallos.

### Paso 1: Reiniciar MySQL desde Syspanel

  1. Accede a tu panel de Syspanel en https://tu-ip:2106.
  2. Ve a la sección “Server” (Servidor).
  3. Haz clic en “Services” (Servicios).
  4. Busca el servicio “MySQL” o “MariaDB”.
  5. Haz clic en el botón de “Restart” (Reiniciar).

### Paso 2: Comprobar el estado desde la terminal

Al ser un panel más minimalista, la gestión de servicios se hace mucho desde la línea de comandos.

  1. Accede por SSH como root.
  2. Ejecuta systemctl status mysql (o mariadb).
  3. Si está caído, ejecuta systemctl start mysql.
  4. Si no arranca, revisa los logs con journalctl -u mysql -n 50.

### Paso 3: Revisar la configuración

  1. El archivo de configuración está en /etc/mysql/my.cnf o /etc/my.cnf.
  2. Revisa bind-address y el puerto.
  3. Un error común en Syspanel es que, tras una actualización, el puerto cambie o el servicio se quede mal configurado. Asegúrate de que el puerto es el 3306 y que bind-address es 127.0.0.1 para conexiones locales.

¿Qué pasa si nada de esto funciona? (Casos avanzados)

Si has llegado hasta aquí y el error connection refused mysql persiste, es hora de pensar en soluciones más avanzadas.

1. El problema es de la aplicación

A veces, el servidor MySQL está perfectamente. El error está en la aplicación que intenta conectar.

  • Revisa el archivo de configuración de tu aplicación: Busca archivos como wp-config.php (WordPress), .env (Laravel, Django) o similares. Asegúrate de que el host de la base de datos es localhost o 127.0.0.1 si la app está en el mismo servidor.
  • Revisa el puerto: Asegúrate de que el puerto es 3306 a menos que lo hayas cambiado.
  • Revisa las credenciales: Verifica que el usuario y la contraseña son correct

¿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