Cómo solucionar el error 'Connection refused' en MySQL (cPanel, Plesk, DirectAdmin)
¿Qué significa exactamente el error "Connection refused" en MySQL?
Cuando intentas conectar a tu base de datos y ves el mensaje "mysql connection refused", lo que está ocurriendo es que tu aplicación o herramienta de administración ha intentado establecer una conexión con el servidor MySQL, pero este ha rechazado la petición de forma activa. No es lo mismo que un timeout (que espera y no recibe respuesta), sino que el servidor ha dicho "no" de manera inmediata.
Este error es uno de los más comunes en entornos de hosting compartido, VPS o servidores dedicados, y puede aparecer en paneles como cPanel, Plesk o DirectAdmin. La buena noticia es que, en la mayoría de los casos, tiene una solución clara y no implica perder datos.
Para entenderlo mejor, imagina que MySQL es un edificio con una puerta de entrada. Si la puerta está cerrada con llave, nadie puede entrar. Si la puerta está abierta pero el portero no está, tampoco. Y si la puerta está abierta y el portero está, pero solo deja pasar a personas con una identificación específica, los demás recibirán un "no". El error connection refused mysql es ese "no" rotundo.
Causas más comunes del error "Connection refused" en MySQL
Antes de lanzarnos a solucionar, es fundamental entender qué puede estar provocando el problema. Estas son las causas más habituales:
- MySQL no está corriendo: El servicio está detenido o ha fallado al iniciar.
- El puerto 3306 está bloqueado: Un firewall (local o del servidor) está bloqueando las conexiones entrantes.
- MySQL está escuchando solo en localhost: Configurado para aceptar únicamente conexiones desde la misma máquina (127.0.0.1) y no desde otras IPs.
- El archivo de configuración tiene errores: Por ejemplo,
my.cnfomy.inicon directivas incorrectas. - El socket de MySQL es incorrecto: La aplicación busca el socket en una ruta diferente a la real.
- Permisos de usuario de MySQL: El usuario no tiene permisos para conectarse desde el host remoto desde el que intentas acceder.
- El servidor está saturado: En ocasiones, MySQL rechaza conexiones porque ha alcanzado el límite de conexiones simultáneas.
Solución paso a paso en cPanel
cPanel es uno de los paneles de control más utilizados. Si estás experimentando el error connection refused mysql en este entorno, sigue estos pasos:
1. Verificar que MySQL está activo
Entra en tu cPanel y busca la sección "Estado del Servidor" o "MySQL". Si no encuentras ninguna opción clara, ve a "Administrador de MySQL" o "Bases de Datos MySQL". Si el servicio aparece detenido, intenta reiniciarlo desde la opción "Restart MySQL" si tu proveedor lo permite. En algunos planes de hosting compartido, esta opción no está disponible y debes contactar con el soporte.
2. Comprobar el hostname de la base de datos
En cPanel, el hostname de MySQL casi siempre es localhost. Si estás usando una aplicación web (WordPress, Joomla, etc.) y esta está alojada en el mismo servidor que la base de datos, el hostname debe ser localhost.
[INFO] Si tu aplicación está en un servidor distinto al de la base de datos, necesitarás usar el hostname remoto (algo como mysql.tudominio.com). En cPanel, este hostname lo encuentras en la sección "Bases de Datos MySQL", bajo el nombre de la base de datos.
3. Revisar las credenciales del usuario de MySQL
Un error de conexión también puede deberse a un nombre de usuario o contraseña incorrectos. Asegúrate de que:
- El nombre de usuario incluye el prefijo que añade cPanel (ejemplo:
user_bd_usuario). - La contraseña no tiene espacios ni caracteres extraños copiados por error.
- El usuario tiene todos los privilegios sobre la base de datos. Puedes asignarlos desde la sección "Bases de Datos MySQL" marcando la opción "TODOS LOS PRIVILEGIOS".
4. Probar la conexión desde la línea de comandos (si tienes acceso SSH)
Si tienes acceso a la terminal de tu servidor, ejecuta:
mysql -u usuario -p -h localhost
Si recibes el error mysql connection refused, el problema es que el servicio no está escuchando. Si recibes un error de acceso denegado, el problema son las credenciales.
Solución paso a paso en Plesk
Plesk tiene su propia estructura, pero la lógica es similar. Aquí te dejo los pasos clave:
1. Acceder al panel de Plesk y verificar el servicio
En el panel principal, busca "Herramientas y Ajustes" y luego "Servicios". Deberías ver una lista de servicios, incluyendo MySQL/MariaDB. Si el estado no es "corriendo", intenta iniciarlo.
2. Revisar la configuración de red de MySQL
En Plesk, a veces MySQL está configurado para escuchar solo en 127.0.0.1. Si necesitas conexiones remotas, debes modificar el archivo de configuración. Esto se hace normalmente desde SSH:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Busca la línea bind-address y cámbiala a 0.0.0.0 si quieres aceptar conexiones desde cualquier IP, o a la IP específica de tu servidor. Luego reinicia MySQL:
service mysql restart
[WARNING] Cambiar bind-address a 0.0.0.0 expone tu MySQL a internet. Asegúrate de que tu firewall solo permita el acceso desde IPs de confianza.
3. Verificar los logs de error
Los logs de MySQL son tu mejor amigo. En Plesk, los encontrarás en /var/log/mysql/error.log. Revisa las últimas líneas para ver si hay mensajes de error específicos que te indiquen la causa raíz.
Solución paso a paso en DirectAdmin
DirectAdmin es otro panel popular, especialmente en VPS. La solución aquí es similar, pero con sus particularidades:
1. Comprobar el servicio MySQL desde DirectAdmin
En el panel, ve a "Administración de Servicios" y busca MySQL. Si está detenido, inícialo. DirectAdmin suele mostrar un mensaje claro si el servicio falla al arrancar.
2. Revisar el archivo de configuración
El archivo típico es /etc/my.cnf o /etc/mysql/my.cnf. Busca la sección [mysqld] y verifica:
port = 3306(o el puerto que uses).bind-address = 127.0.0.1(si solo quieres conexiones locales) o0.0.0.0(para conexiones remotas).
3. Comprobar los permisos del usuario
En DirectAdmin, los usuarios de MySQL se gestionan desde "Gestión de Bases de Datos". Asegúrate de que el usuario tenga el host correcto. Si intentas conectar desde una IP distinta a localhost, el usuario debe estar definido como usuario@'%' o usuario@'ip_remota'.
Solución genérica para cualquier panel (cPanel, Plesk, DirectAdmin)
Independientemente del panel, estos pasos universales te ayudarán a solucionar mysql cuando aparece el error de conexión:
1. Reiniciar el servicio MySQL
A veces, un simple reinicio soluciona el problema. Desde SSH:
service mysql restart
O si usas systemd:
systemctl restart mysql
2. Verificar el estado del servicio
service mysql status
Deberías ver un mensaje indicando que está activo y ejecutándose.
3. Comprobar si el puerto está en escucha
Ejecuta:
netstat -tlnp | grep 3306
Si no ves ninguna línea, MySQL no está escuchando en el puerto 3306. Esto confirma que el servicio no está activo o que está configurado para otro puerto.
4. Revisar el firewall
Si MySQL está corriendo pero el mysql no conecta, puede que el firewall esté bloqueando el puerto. Para verificar (en sistemas con ufw):
ufw status
Si el puerto 3306 no está permitido, añádelo:
ufw allow 3306
Si usas iptables directamente:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
5. Probar la conexión localmente
Conéctate desde el propio servidor:
mysql -u root -p
Si esto funciona, el problema es de red o de permisos remotos. Si no funciona, el problema es de configuración interna.
Errores típicos de configuración que causan "mysql connection refused"
El socket de MySQL
Algunas aplicaciones PHP (especialmente en entornos compartidos) usan el socket en lugar de TCP/IP. Si el socket está en una ruta diferente, verás este error. Para verificar la ruta del socket:
mysqladmin variables | grep socket
La ruta típica es /var/run/mysqld/mysqld.sock. Si tu aplicación apunta a un socket diferente, deberás ajustar su configuración.
El límite de conexiones
Si tu servidor tiene muchas aplicaciones conectándose, es posible que MySQL alcance su límite. Revisa el valor de max_connections:
mysql -e "SHOW VARIABLES LIKE 'max_connections';"
Si es muy bajo (por ejemplo, 100), puedes aumentarlo en el archivo de configuración:
max_connections = 500
El problema de "skip-networking"
En el archivo de configuración, si existe la línea skip-networking, MySQL desactivará las conexiones TCP/IP y solo aceptará conexiones por socket. Esto es una causa frecuente del error connection refused mysql cuando intentas conectar desde otra máquina. Elimina o comenta esa línea.
¿Cómo solucionar el error desde una aplicación web (WordPress, etc.)?
Si tu sitio web muestra el error de conexión a la base de datos, el problema suele estar en el archivo de configuración de tu aplicación:
Para WordPress
Edita el archivo wp-config.php y verifica estos valores:
define('DB_HOST', 'localhost');
define('DB_NAME', 'usuario_basededatos');
define('DB_USER', 'usuario_usuario');
define('DB_PASSWORD', 'tu_contraseña');
Asegúrate de que DB_HOST sea localhost si la base de datos y el sitio están en el mismo servidor. Si usas un hosting con cPanel, el hostname puede ser localhost o 127.0.0.1.
Para otras aplicaciones (Joomla, Drupal, etc.)
Busca el archivo de configuración correspondiente (configuration.php en Joomla, settings.php en Drupal) y verifica los mismos parámetros.
Solución avanzada: Revisar los logs de MySQL en profundidad
Los logs son la fuente de verdad. Para ver los logs de error en tiempo real:
tail -f /var/log/mysql/error.log
O en sistemas con journald:
journalctl -u mysql -f
Los mensajes típicos que puedes ver y su significado:
Can't connect to local MySQL server through socket: El socket no existe o la ruta es incorrecta.Access denied for user: Las credenciales son incorrectas o el usuario no tiene permisos para el host.Too many connections: Se ha alcanzado el límite de conexiones simultáneas.
Preguntas frecuentes (FAQ) sobre el error "Connection refused" en MySQL
¿Por qué mi MySQL funciona en localhost pero no de forma remota?
Lo más probable es que bind-address esté configurado como 127.0.0.1. Deberás cambiarlo a 0.0.0.0 y asegurarte de que el firewall permita el puerto 3306.
¿Qué hago si no tengo acceso SSH a mi servidor?
Si estás en un hosting compartido, no podrás modificar la configuración de MySQL directamente. Deberás contactar con el soporte técnico de tu proveedor y explicarles el error. Ellos podrán reiniciar el servicio o ajustar la configuración por ti.
¿Puede ser un problema de mi red local?
Sí. Si estás intentando conectar desde tu ordenador a un servidor remoto, verifica que tu red no esté bloqueando el puerto 3306. Algunas redes corporativas bloquean puertos no estándar.
¿El error "Connection refused" es lo mismo que "Connection timed out"?
No. El "connection refused" significa que el servidor rechazó activamente la conexión (el servicio no está escuchando o el firewall lo bloquea). El "timeout" significa que la petición se envió pero nunca se recibió respuesta (el servidor no está accesible o hay un problema de red).
¿Puedo cambiar el puerto de MySQL para evitar el error?
Sí, puedes cambiar el puerto en el archivo de configuración. Añade o modifica la línea port = 3307 (o el puerto que prefieras). Sin embargo, todas las aplicaciones que se conecten deberán usar el nuevo puerto.
Resumen de acciones rápidas para solucionar el error
- Reinicia el servicio:
service mysql restartosystemctl restart mysql. - Verifica el estado:
service mysql status. - Comprueba el puerto:
netstat -tlnp | grep 3306. - Revisa el firewall: Asegúrate de que el puerto 3306 esté abierto.
- Verifica las credenciales: Usuario, contraseña y hostname correctos.
- Revisa la configuración:
bind-address,skip-networking,max_connections. - Consulta los logs:
/var/log/mysql/error.log.
[TIP] Si después de todos estos pasos el error base de datos persiste, anota el mensaje exacto del log y búscalo en Google. Es muy probable que alguien más haya tenido el mismo problema y la solución ya esté documentada.
Conclusión
El error connection refused mysql puede parecer intimidante, pero en la mayoría de los casos es un problema de configuración o de servicio detenido. Con los pasos que te hemos dado, tanto en cPanel, Plesk o DirectAdmin, deberías poder solucionar mysql sin necesidad de ser un experto en administración de servidores.
Recuerda siempre trabajar con copias de seguridad y, si tienes dudas, contactar con el soporte de tu proveedor de hosting. Ellos tienen acceso directo a la infraestructura y pueden ayudarte a diagnosticar problemas que escapan al ámbito del panel de control.
[INFO] Si tu proveedor utiliza Syspanel (antes conocido como HestiaCP), el acceso al panel se realiza a través del puerto 2106. La gestión de bases de datos en Syspanel es similar a la de otros paneles, pero si encuentras el error de conexión, verifica que el servicio MySQL esté activo desde la sección "Servicios" del propio panel.
Esperamos que esta guía te haya sido de utilidad. Si tienes más preguntas, no dudes en consultar nuestra sección de artículos relacionados o abrir un ticket de soporte. ¡Buena suerte con tu base de datos!
