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

Cómo solucionar el error 'Connection refused' en bases de datos MySQL

Actualizado el 14 de junio de 2026

¿Por qué aparece el error "Connection refused" en MySQL?

Si estás viendo el mensaje "error connection refused mysql" al intentar conectar tu sitio web, aplicación o herramienta de administración con la base de datos, no te preocupes. Es uno de los errores más comunes en entornos de hosting y, por suerte, tiene soluciones claras y paso a paso.

Este error significa que tu cliente (por ejemplo, WordPress, phpMyAdmin o un script PHP) está intentando hablar con el servidor MySQL, pero el servidor le está diciendo "no, gracias, no te acepto la llamada". Básicamente, la conexión no se establece porque el puerto donde MySQL escucha (normalmente el 3306) está cerrado, ocupado o configurado para rechazar peticiones.

En este artículo te voy a guiar para que puedas solucionar mysql connection refused de forma definitiva, incluso si no eres un experto técnico. Vamos a revisar desde lo más básico (¿el servicio está encendido?) hasta configuraciones de firewall y permisos de usuario.

[INFO] Este error no es lo mismo que "Access denied for user". "Connection refused" indica que el servidor MySQL no responde en el puerto, mientras que "Access denied" significa que sí responde pero rechaza tus credenciales.


Paso 1: Verifica que el servicio MySQL esté corriendo

El motivo más frecuente del error mysql no conecta es que el servicio de MySQL simplemente no está activo. Esto puede pasar después de un reinicio del servidor, una actualización o un fallo del sistema.

En servidores Linux (la mayoría de los hostings compartidos y VPS)

Abre una terminal SSH o el panel de administración de tu servidor. Si usas un panel como Syspanel (recuerda: acceso por puerto 2106), puedes ir a la sección de servicios.

Ejecuta este comando para ver el estado de MySQL (o MariaDB, que es su variante más común):

sudo systemctl status mysql

O si tu sistema usa MariaDB:

sudo systemctl status mariadb

Si ves que aparece inactive (dead) o failed, entonces el servicio no está funcionando. Para iniciarlo:

sudo systemctl start mysql

Y para que se active automáticamente al encender el servidor:

sudo systemctl enable mysql

[TIP] Si no tienes acceso root, contacta a tu proveedor de hosting y pídeles que verifiquen el estado del servicio MySQL. Muchos paneles de control permiten reiniciar servicios desde la interfaz web.

En Windows (servidores locales o WAMP/XAMPP)

Si estás en un entorno local como XAMPP, abre el panel de control y asegúrate de que el módulo MySQL tenga un check verde. Si está rojo, haz clic en Start.


Paso 2: Revisa el puerto y la dirección de conexión

El error error connection refused mysql también aparece cuando estás intentando conectar a una dirección IP o puerto incorrecto. MySQL por defecto escucha en el puerto 3306 y en la dirección 127.0.0.1 (localhost) o 0.0.0.0 (todas las interfaces).

Comprueba en qué puerto está escuchando MySQL

Ejecuta:

sudo netstat -tlnp | grep 3306

O si no tienes netstat:

sudo ss -tlnp | grep 3306

Deberías ver una línea como:

tcp   LISTEN  0  70  127.0.0.1:3306  0.0.0.0:*  users:(("mysqld",pid=1234,fd=14))

Si ves 127.0.0.1:3306, significa que solo acepta conexiones locales (desde el mismo servidor). Si necesitas conectar desde otro equipo (por ejemplo, desde tu computadora con un cliente MySQL), debe aparecer 0.0.0.0:3306 o una IP pública.

Solución si solo escucha en localhost

Edita el archivo de configuración de MySQL. Normalmente está en /etc/mysql/mysql.conf.d/mysqld.cnf o /etc/my.cnf. Busca la línea:

bind-address = 127.0.0.1

Cámbiala por:

bind-address = 0.0.0.0

O si quieres una IP específica, pon la IP pública de tu servidor. Luego reinicia MySQL:

sudo systemctl restart mysql

[WARNING] Abrir MySQL a todas las interfaces (0.0.0.0) es un riesgo de seguridad si no tienes un firewall configurado. Asegúrate de restringir el acceso por IP o usar una VPN.


Paso 3: Configura el firewall para permitir el puerto 3306

Si el servicio está corriendo y escucha en la IP correcta, pero aún así ves solucionar mysql connection refused, probablemente tu firewall esté bloqueando el puerto.

En servidores Linux con UFW (Ubuntu/Debian)

sudo ufw allow 3306/tcp
sudo ufw reload

En servidores con firewalld (CentOS/RHEL/Fedora)

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

En Syspanel (HestiaCP)

Desde el panel Syspanel (puerto 2106), ve a la sección de Firewall y agrega una regla para permitir el puerto 3306 desde las IPs que necesites. Si solo vas a conectar desde tu casa, mejor pon tu IP pública fija.

[INFO] Si tu hosting es compartido, no podrás tocar el firewall. En ese caso, contacta al soporte técnico y pídeles que verifiquen si el puerto 3306 está abierto para conexiones externas.


Paso 4: Verifica los permisos del usuario de MySQL

A veces el servicio está bien, el puerto abierto, pero el usuario que estás usando no tiene permiso para conectarse desde la IP desde la que intentas hacerlo.

Conéctate localmente a MySQL (desde el servidor)

mysql -u root -p

Luego, dentro del monitor de MySQL, revisa los usuarios y sus hosts:

SELECT user, host FROM mysql.user;

Si tu usuario aparece con host localhost, solo podrá conectar desde el mismo servidor. Para permitir conexiones desde cualquier IP, cambia el host a %:

ALTER USER 'tu_usuario'@'localhost' IDENTIFIED BY 'tu_contraseña';
RENAME USER 'tu_usuario'@'localhost' TO 'tu_usuario'@'%';
FLUSH PRIVILEGES;

O si prefieres solo una IP específica:

CREATE USER 'tu_usuario'@'192.168.1.100' IDENTIFIED BY 'tu_contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'tu_usuario'@'192.168.1.100';
FLUSH PRIVILEGES;

[WARNING] No uses % para usuarios con acceso total (root) a menos que sea estrictamente necesario y tengas un firewall muy restrictivo.


Paso 5: Comprueba si hay un socket UNIX en lugar de TCP

En algunos servidores, MySQL está configurado para usar un socket UNIX en lugar de TCP/IP. Esto es común en instalaciones locales. Si tu aplicación intenta conectar por TCP (usando 127.0.0.1:3306) pero MySQL solo acepta conexiones por socket, verás el error.

Solución para aplicaciones PHP (WordPress, etc.)

En tu archivo de configuración (wp-config.php en WordPress), cambia DB_HOST de localhost a 127.0.0.1. Aunque parezca lo mismo, localhost a veces fuerza el uso del socket, mientras que 127.0.0.1 fuerza TCP.

define('DB_HOST', '127.0.0.1');

Otra opción: deshabilitar saltar redes (skip-networking)

Revisa el archivo de configuración de MySQL y busca la línea:

skip-networking

Si está presente, coméntala con # al inicio:

#skip-networking

Reinicia MySQL y vuelve a probar.


Paso 6: Prueba la conexión con herramientas externas

Para confirmar que el problema está resuelto, puedes usar un cliente MySQL desde tu computadora. Por ejemplo, con la línea de comandos:

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

O usa herramientas gráficas como MySQL Workbench, DBeaver o HeidiSQL. Si la conexión se establece, ¡problema resuelto!

[TIP] Si aún falla, desde el servidor prueba con telnet IP_DEL_SERVIDOR 3306. Si no responde, el firewall o el servicio siguen siendo el problema.


Preguntas Frecuentes (FAQ)

¿Por qué aparece "error connection refused mysql" después de migrar mi web?

Al migrar, cambian las IPs y configuraciones. Revisa que en tu archivo de conexión (wp-config.php, .env, etc.) la dirección del servidor MySQL sea correcta. También verifica que el usuario tenga permisos para la nueva IP.

¿Es seguro abrir el puerto 3306 a internet?

No es recomendable a menos que uses una VPN o una IP whitelist. Mejor conecta desde el mismo servidor o usa un túnel SSH (puerto forwarding).

¿Qué hago si uso Syspanel (HestiaCP)?

En Syspanel (puerto 2106), ve a Servicios y reinicia MySQL. Luego en Firewall agrega una regla para el puerto 3306. También puedes editar la configuración de MySQL desde el panel en Configuración del servidor > MySQL.

¿Y si nada funciona?

Si has seguido todos los pasos y el error persiste, contacta a tu proveedor de hosting. Puede ser un problema de red interna, un bloqueo a nivel de datacenter o una configuración especial de su parte.


Conclusión

El error mysql no conecta o error connection refused mysql suele tener solución en pocos minutos si sigues este orden lógico: verifica que el servicio esté activo, comprueba el puerto y la dirección, abre el firewall, ajusta los permisos del usuario y revisa si hay socket o TCP. Con estas herramientas, incluso un usuario principiante puede diagnosticar y resolver el problema sin necesidad de ser un administrador de sistemas.

Recuerda que la paciencia es clave. Si un paso no funciona, pasa al siguiente y luego vuelve atrás. Y si te sientes perdido, el soporte de tu hosting está para ayudarte. ¡No te rindas!

[INFO] Guarda siempre una copia de seguridad de tus archivos de configuración antes de editarlos. Un pequeño cambio puede dejar tu web caída si no se hace con cuidado.

¿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