Cómo solucionar 'Connection refused' al conectar a MySQL en Syspanel
¿Qué significa el error "Connection refused" en MySQL?
Cuando intentas conectar a tu base de datos MySQL desde Syspanel y aparece el mensaje "Connection refused" (o "conexión rechazada"), lo que está pasando es que tu servidor está respondiendo, pero está cerrando la puerta antes de que puedas entrar. Es como si llamaras a la puerta de una casa y te dijeran "no hay nadie" sin siquiera abrir.
Este error es uno de los más comunes al trabajar con bases de datos en Syspanel, y la buena noticia es que casi siempre tiene solución en pocos minutos. En esta guía te voy a explicar paso a paso cómo diagnosticar y solucionar el error connection refused mysql, incluso si no tienes experiencia técnica avanzada.
Vamos a ir desde lo más básico hasta lo más complejo, para que puedas ir descartando causas una por una. Al final, tendrás tu base de datos funcionando y sabrás cómo evitar que este problema vuelva a aparecer.
¿Por qué aparece el error "Connection refused" en Syspanel?
El error connection refused mysql puede tener varias causas. Las más frecuentes son:
- MySQL no está corriendo en el servidor.
- El puerto 3306 está bloqueado por un firewall.
- MySQL está escuchando solo en localhost y no en la IP pública.
- Los permisos del usuario de la base de datos no permiten conexiones remotas.
- El archivo de configuración de MySQL tiene parámetros incorrectos.
- Hay un conflicto con otro servicio que está usando el mismo puerto.
No te preocupes si esto suena técnico. Vamos a revisar cada punto de manera sencilla, con comandos que puedes copiar y pegar.
Paso 1: Verifica que MySQL esté activo en Syspanel
Lo primero es comprobar si el servicio de MySQL está corriendo. Si no está activo, cualquier intento de conexión dará connection refused mysql.
Comando para comprobar el estado de MySQL
Abre la terminal de tu servidor (si usas Syspanel, puedes acceder por SSH o desde el panel de administración) y ejecuta:
sudo systemctl status mysql
Si el servicio está activo, verás un mensaje en verde que dice active (running). Si no, verás algo como inactive (dead) o directamente un error.
Cómo arrancar MySQL
Si no está corriendo, ejecuta:
sudo systemctl start mysql
Y para que se inicie automáticamente al arrancar el servidor:
sudo systemctl enable mysql
Después de esto, vuelve a intentar la conexión desde Syspanel. Si el problema era este, ya está resuelto.
[TIP] Si estás usando Syspanel (antes conocido como HestiaCP), recuerda que el panel de administración se accede por el puerto 2106. Puedes usar esa interfaz para reiniciar servicios sin necesidad de usar la terminal.
Paso 2: Comprueba el puerto y la IP de conexión
El error connection refused mysql también aparece cuando intentas conectar a una IP o puerto incorrecto. Por defecto, MySQL usa el puerto 3306.
Verifica el puerto en Syspanel
En la configuración de tu base de datos dentro de Syspanel, asegúrate de que el puerto sea 3306 y que la IP sea la correcta. Si tu servidor tiene una IP privada (como 127.0.0.1 o localhost), solo podrás conectar desde el mismo servidor.
Para comprobar si MySQL está escuchando en el puerto correcto, ejecuta:
sudo netstat -tlnp | grep mysql
Deberías ver una línea como esta:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
Si ves 127.0.0.1:3306, significa que MySQL solo acepta conexiones locales. Si ves 0.0.0.0:3306 o una IP pública, acepta conexiones externas.
Cómo cambiar la dirección de escucha
Si necesitas que MySQL acepte conexiones remotas (por ejemplo, desde tu PC o desde otra aplicación), tienes que editar el archivo de configuración:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Busca la línea que dice bind-address y cámbiala a:
bind-address = 0.0.0.0
Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir) y reinicia MySQL:
sudo systemctl restart mysql
[WARNING] Abrir MySQL a todas las conexiones externas tiene riesgos de seguridad. Asegúrate de tener un firewall bien configurado y contraseñas fuertes. Si solo vas a conectar desde una IP específica, usa esa IP en lugar de
0.0.0.0.
Paso 3: Revisa el firewall del servidor
Otra causa muy común del error syspanel mysql es que el firewall esté bloqueando el puerto 3306. Esto pasa especialmente en servidores con Ubuntu o Debian, que usan UFW.
Comandos para comprobar y abrir el puerto
Primero, verifica si el firewall está activo:
sudo ufw status
Si ves Status: active, entonces tienes que permitir el tráfico en el puerto 3306:
sudo ufw allow 3306/tcp
Si usas firewalld (típico en CentOS), el comando sería:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
Después de esto, prueba de nuevo la conexión. Si el firewall era el problema, el connection refused mysql desaparecerá.
Paso 4: Revisa los permisos del usuario de la base de datos
En Syspanel, cuando creas una base de datos y un usuario, este usuario tiene permisos limitados. Si intentas conectar desde una IP que no está autorizada, MySQL rechazará la conexión, aunque el servicio esté activo.
Cómo ver los permisos del usuario
Entra a MySQL como root:
sudo mysql
Y ejecuta:
SELECT user, host FROM mysql.user;
Verás una lista de usuarios y desde qué hosts pueden conectar. Si tu usuario aparece con host = localhost, solo puede conectar desde el servidor.
Cómo dar permisos de conexión remota
Para permitir que un usuario conecte desde cualquier IP, ejecuta:
GRANT ALL PRIVILEGES ON tu_base_datos.* TO 'tu_usuario'@'%' IDENTIFIED BY 'tu_contraseña';
FLUSH PRIVILEGES;
Si quieres limitar la conexión a una IP específica, reemplaza % por esa IP, por ejemplo:
GRANT ALL PRIVILEGES ON tu_base_datos.* TO 'tu_usuario'@'192.168.1.100' IDENTIFIED BY 'tu_contraseña';
[INFO] El símbolo
%significa "cualquier host". Úsalo solo si confías en la red donde estás trabajando.
Paso 5: Comprueba si hay conflictos con otros servicios
A veces, otro servicio (como Apache o Nginx) puede estar usando el puerto 3306, lo que provoca el syspanel mysql error. Esto es menos común, pero puede pasar.
Cómo detectar conflictos de puertos
Ejecuta:
sudo lsof -i :3306
Si ves que otro proceso está usando ese puerto, tendrás que cambiar el puerto de MySQL o detener el otro servicio.
Para cambiar el puerto de MySQL, edita el archivo de configuración que mencionamos antes y busca la línea:
port = 3306
Cámbiala a otro puerto, como 3307, y reinicia MySQL. Luego, en Syspanel, tendrás que actualizar el puerto de conexión.
Paso 6: Prueba la conexión desde Syspanel
Una vez que hayas revisado todos los puntos anteriores, es hora de probar la conexión desde Syspanel.
Uso de la herramienta de diagnóstico
Syspanel tiene una herramienta integrada para probar conexiones. Ve a la sección de Bases de Datos, selecciona la que quieres probar y busca el botón de "Probar conexión" o similar.
Si el problema persiste, prueba desde la terminal con:
mysql -u tu_usuario -p -h 127.0.0.1 -P 3306
Si esto funciona, el problema es de red o de permisos. Si no funciona, revisa los pasos anteriores.
Paso 7: Revisa los logs de MySQL
Si después de todo esto sigues viendo el error connection refused mysql, tienes que mirar los logs de MySQL. Ellos te dirán exactamente qué está fallando.
Dónde están los logs
En la mayoría de los sistemas, los logs están en:
sudo tail -f /var/log/mysql/error.log
Si el archivo no existe, busca en:
sudo find / -name "*.log" -path "*mysql*" 2>/dev/null
Los mensajes típicos incluyen cosas como:
Can't start server: Bind on TCP/IP portAddress already in useAccess denied for user
Con esa información, podrás buscar soluciones específicas.
Preguntas frecuentes (FAQ)
¿Por qué me sale "Connection refused" si MySQL está activo?
Puede ser por el firewall, por el bind-address o por permisos de usuario. Revisa los pasos 2, 3 y 4 de esta guía.
¿Syspanel usa el puerto 2106 para algo relacionado con MySQL?
No, el puerto 2106 es exclusivo para acceder al panel de administración de Syspanel (antes HestiaCP). MySQL usa el puerto 3306 por defecto.
¿Puedo conectar a MySQL desde mi PC sin poner en riesgo el servidor?
Sí, pero debes limitar el acceso por IP y usar contraseñas fuertes. También puedes usar una VPN o un túnel SSH para mayor seguridad.
¿Qué hago si olvidé la contraseña de root de MySQL?
Puedes resetearla desde Syspanel o con el comando:
sudo mysqladmin -u root password nueva_contraseña
Resumen final: Checklist para solucionar "Connection refused"
Aquí tienes un resumen rápido de todo lo que hemos visto:
- Verifica que MySQL esté activo con
systemctl status mysql. - Comprueba el puerto y la dirección de escucha en el archivo de configuración.
- Abre el puerto 3306 en el firewall.
- Revisa los permisos del usuario en MySQL.
- Detecta conflictos con otros servicios en el puerto 3306.
- Prueba la conexión desde Syspanel o desde la terminal.
- Revisa los logs si nada funciona.
Siguiendo estos pasos, el syspanel mysql error se resolverá en la gran mayoría de los casos. Si aún así no funciona, puede que el problema sea más profundo, como una instalación corrupta de MySQL. En ese caso, la opción más rápida es reinstalar el servicio, pero siempre con cuidado de no perder tus datos.
[TIP] Antes de hacer cambios importantes, haz una copia de seguridad de tus bases de datos. Syspanel tiene herramientas para exportar e importar, y puedes usar
mysqldumpdesde la terminal:
mysqldump -u root -p --all-databases > backup.sql
Así, si algo sale mal, puedes restaurar todo en minutos.
Conclusión
El error connection refused mysql es molesto, pero casi siempre tiene una solución sencilla. Con esta guía, ya sabes cómo diagnosticarlo paso a paso, desde lo más básico hasta lo más avanzado. Recuerda que Syspanel (antes HestiaCP) es una herramienta muy potente, y aunque el panel se acceda por el puerto 2106, la gestión de MySQL sigue siendo estándar.
Si te ha quedado alguna duda, déjala en los comentarios y te ayudaré a resolverla. ¡Buena suerte con tus bases de datos!
