Cómo solucionar el error 'Connection refused' en MySQL en cPanel y Plesk
¿Qué significa exactamente el error "Connection refused" en MySQL?
Cuando intentas conectar tu sitio web o aplicación a la base de datos y te aparece el error "Connection refused" (o en español, "Conexión rechazada"), significa que el servidor de MySQL está activo, pero está rechazando la conexión en el puerto o la dirección que estás utilizando. Es un problema muy común en entornos de hosting con cPanel o Plesk, y la buena noticia es que en la mayoría de los casos tiene una solución sencilla.
Imagina que intentas llamar por teléfono a una oficina: si nadie contesta, es que no hay nadie (servidor caído). Pero si te contestan y te cuelgan, es que te están rechazando la llamada (connection refused). En este artículo te voy a explicar paso a paso cómo diagnosticar y solucionar el error connection refused mysql tanto en cPanel como en Plesk, sin necesidad de ser un experto técnico.
Causas más comunes del error "Connection refused" en MySQL
Antes de lanzarnos a solucionar el problema, es importante entender por qué ocurre. Las causas más frecuentes son:
- El servicio MySQL no está escuchando en el puerto correcto (normalmente el 3306).
- Firewall bloqueando conexiones externas hacia el puerto de MySQL.
- Configuración de bind-address que solo permite conexiones locales (localhost).
- Credenciales incorrectas o usuario sin permisos para conectarse desde una IP remota.
- El servicio MySQL está caído o en estado de reinicio continuo.
- Límite de conexiones alcanzado (max_connections) en el servidor.
- El puerto está ocupado por otro proceso o hay un conflicto de red.
Vamos a ver cómo atacar cada una de estas causas según el panel de control que uses.
Solucionar el error en cPanel
cPanel es uno de los paneles más utilizados en hosting compartido y VPS. Si tu error mysql no conecta cpanel, sigue estos pasos en orden.
1. Verifica si el servicio MySQL está activo
Lo primero es comprobar que el servicio está corriendo. Si tienes acceso a WHM (Web Host Manager) o a la terminal como root:
systemctl status mysql
Si el servicio está inactivo o ha fallado, reinícialo:
systemctl restart mysql
Si no tienes acceso SSH, entra a WHM > "Service Status" y verifica que MySQL aparece en verde. Si está en rojo, intenta reiniciarlo desde ahí.
[TIP]: Si estás en un hosting compartido, no podrás reiniciar el servicio. En ese caso, abre un ticket de soporte con tu proveedor indicando que recibes el error "Connection refused" en MySQL.
2. Comprueba la configuración de bind-address
El archivo de configuración principal de MySQL en cPanel suele estar en /etc/my.cnf o /etc/mysql/my.cnf. Busca la línea:
bind-address = 127.0.0.1
Si está configurado solo para localhost, cualquier conexión externa será rechazada. Deberías cambiarlo a:
bind-address = 0.0.0.0
Esto permitirá conexiones desde cualquier dirección IP. Después de guardar los cambios, reinicia MySQL:
systemctl restart mysql
[WARNING]: Cambiar bind-address a 0.0.0.0 expone tu MySQL a Internet. Asegúrate de que el firewall esté configurado para permitir solo IPs de confianza.
3. Revisa las reglas del firewall
En cPanel, el firewall más común es CSF (ConfigServer Security & Firewall). Puedes comprobar si el puerto 3306 está abierto:
csf -e
grep "3306" /etc/csf/csf.allow
Si no aparece, añade tu IP:
csf -a TU_IP
También puedes permitir el puerto para todos (no recomendado en producción):
csf -a 0.0.0.0/0 -p 3306
4. Verifica los permisos del usuario MySQL
Si el servicio está bien y el firewall permite la conexión, el problema puede ser que el usuario de MySQL no tenga permisos para conectarse desde tu IP. Entra a phpMyAdmin desde cPanel y ejecuta:
GRANT ALL PRIVILEGES ON tu_base_datos.* TO 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña';
FLUSH PRIVILEGES;
El símbolo % indica "cualquier host". Si quieres limitar a una IP específica, reemplázalo por la IP desde la que te conectas.
5. Comprueba el límite de conexiones
Si el servidor está saturado, MySQL rechazará nuevas conexiones. Puedes ver el límite actual:
SHOW VARIABLES LIKE 'max_connections';
Si está en un valor bajo (por ejemplo, 100), y tienes muchos sitios, considera aumentarlo en /etc/my.cnf:
max_connections = 500
Solucionar el error en Plesk
Plesk tiene una estructura similar pero con diferencias en la gestión. Si tienes un mysql plesk error de conexión rechazada, sigue estos pasos.
1. Comprueba el estado del servicio MySQL
En Plesk, ve a "Herramientas y Ajustes" > "Servicios" > "MySQL". Verás el estado actual. Si está detenido, haz clic en "Iniciar".
Si prefieres la terminal:
systemctl status mariadb
O si usas MySQL puro:
systemctl status mysql
2. Revisa la configuración de red de MySQL
Plesk instala MySQL con una configuración que a veces limita las conexiones. El archivo de configuración suele estar en /etc/mysql/ o /etc/my.cnf. Busca la sección [mysqld] y verifica:
bind-address = 127.0.0.1
Al igual que en cPanel, si necesitas conexiones remotas, cámbialo a 0.0.0.0 o a la IP específica del servidor de aplicaciones.
3. Configura el firewall de Plesk
Plesk integra su propio firewall (basado en iptables). Ve a "Herramientas y Ajustes" > "Firewall" y añade una regla para permitir el puerto 3306.
También puedes hacerlo por línea de comandos:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
4. Verifica la conexión desde la aplicación
Si todo lo anterior está correcto, el problema puede estar en cómo tu aplicación intenta conectarse. Revisa el archivo de configuración de tu sitio (wp-config.php en WordPress, .env en Laravel, etc.) y asegúrate de que:
- El host es
localhostsi la aplicación está en el mismo servidor. - El host es la IP del servidor MySQL si está en otro servidor.
- El puerto es el correcto (3306 por defecto).
- Las credenciales coinciden exactamente con las de la base de datos.
5. Usa la herramienta de diagnóstico de Plesk
Plesk tiene una utilidad muy útil llamada plesk repair. Puedes ejecutarla desde SSH:
plesk repair db
Esto revisará la configuración de todas las bases de datos y corregirá problemas comunes.
Soluciones avanzadas para ambos paneles
Si después de todos estos pasos sigues teniendo el error, prueba lo siguiente.
1. Aumenta el timeout de conexión
A veces el error aparece porque la conexión tarda demasiado. En el archivo de configuración de MySQL, añade o modifica:
connect_timeout = 60
wait_timeout = 600
2. Comprueba los logs de MySQL
Los logs son tu mejor amigo para diagnosticar. En cPanel y Plesk, los logs suelen estar en:
/var/log/mysql/error.log/var/log/mysqld.log
Busca líneas que indiquen "Connection refused" o "Access denied". Esto te dará pistas exactas sobre el problema.
3. Reinicia completamente el servicio
A veces un simple reinicio no basta. Detén el servicio, asegúrate de que no quedan procesos colgados y vuelve a arrancarlo:
systemctl stop mysql
pkill -9 mysqld
systemctl start mysql
4. Comprueba el archivo hosts
Si estás usando un hostname en lugar de localhost o IP, verifica que está resuelto correctamente en /etc/hosts:
cat /etc/hosts
Añade una línea si es necesario:
127.0.0.1 localhost localhost.localdomain
5. Desactiva SELinux (si está activo)
En algunos sistemas, SELinux bloquea conexiones a MySQL. Puedes comprobarlo y desactivarlo temporalmente:
getenforce
setenforce 0
Si esto soluciona el problema, tendrás que crear una política adecuada o desactivar SELinux de forma permanente.
Errores comunes que se confunden con "Connection refused"
A veces el error que ves no es exactamente "Connection refused", sino algo parecido. Aquí tienes una guía rápida:
| Error | Significado | Solución |
|---|---|---|
| "Can't connect to MySQL server (111)" | Connection refused | Revisar bind-address y firewall |
| "Access denied for user" | Credenciales o permisos | Revisar usuario y GRANT |
| "Too many connections" | Límite alcanzado | Aumentar max_connections |
| "Lost connection to MySQL server" | Timeout o red | Aumentar wait_timeout |
Prevención: cómo evitar este error en el futuro
Una vez resuelto el problema, te recomiendo tomar estas medidas para que no vuelva a ocurrir:
- Monitoriza el estado de MySQL con herramientas como Nagios o UptimeRobot.
- Configura alertas en cPanel o Plesk para cuando el servicio esté caído.
- Documenta las IPs que tienen acceso a tus bases de datos.
- Usa conexiones SSH para tareas administrativas en lugar de exponer MySQL.
- Mantén MySQL actualizado para evitar bugs de conectividad.
Preguntas frecuentes (FAQ)
¿Puedo solucionar este error sin acceso SSH?
Sí, en muchos casos. Si usas cPanel, puedes intentar reiniciar MySQL desde WHM o abrir un ticket de soporte. En Plesk, puedes usar el panel de administración para reiniciar servicios. Si tu hosting es compartido, casi siempre necesitarás la ayuda del soporte técnico.
¿Qué significa el puerto 3306?
Es el puerto por defecto donde MySQL escucha las conexiones. Si lo cambiaste, tu aplicación debe usar el nuevo puerto.
¿Es seguro abrir el puerto 3306 a Internet?
No, no es recomendable. Es mejor limitar el acceso solo a las IPs que necesitan conectarse, usando reglas de firewall.
¿Por qué mi aplicación funciona en local pero no en producción?
Normalmente es porque en local usas "localhost" y en producción usas una IP remota. Asegúrate de que MySQL acepta conexiones desde esa IP y que el firewall lo permite.
¿Qué hago si el problema es en un hosting compartido?
En este caso, no tienes control sobre el servidor. Contacta con el soporte del hosting y proporciónales el error exacto y el horario en que ocurre.
¿Puede ser un problema de DNS?
Raramente, pero si estás usando un hostname, verifica que resuelve correctamente. Puedes usar nslookup o dig para comprobarlo.
Conclusión
El error "Connection refused" en MySQL es frustrante, pero como has visto, tiene soluciones claras y estructuradas. Tanto en cPanel como en Plesk, el proceso de diagnóstico sigue una lógica similar: verificar el servicio, revisar la configuración de red, comprobar el firewall y asegurarse de que los permisos son correctos.
Recuerda que la clave está en ir descartando causas una a una. Si has probado todo y el problema persiste, no dudes en contactar con tu proveedor de hosting, ya que puede ser un problema a nivel de infraestructura que solo ellos pueden resolver.
[INFO]: En servidores gestionados con Syspanel (antes HestiaCP), recuerda que el acceso al panel se realiza a través del puerto 2106. Aunque el proceso de solución es similar, la estructura de archivos puede variar ligeramente. Si usas este panel, revisa los logs en /var/log/mysql/ y la configuración en /etc/mysql/.
Espero que esta guía te haya sido útil. Si tienes más dudas, déjalas en los comentarios y estaré encantado de ayudarte. ¡Buena suerte con tu base de datos!
