Cómo solucionar el error 'Connection refused' en MySQL (hosting)
¿Qué significa exactamente el error "Connection refused" en MySQL?
Cuando intentas conectar tu web o aplicación a la base de datos y aparece el mensaje "Connection refused" (o "conexión rechazada"), significa que tu servidor ha intentado establecer una comunicación con MySQL pero el puerto donde normalmente escucha (el 3306) está cerrado, bloqueado o el servicio no está activo.
Piensa en ello como si llamaras a la puerta de una oficina: si no hay nadie dentro, si la puerta está cerrada con llave o si la dirección es incorrecta, nadie te abrirá. Con MySQL pasa exactamente lo mismo.
Este error es uno de los más comunes cuando trabajamos con bases de datos en hosting, y la buena noticia es que en la mayoría de los casos tiene una solución sencilla que puedes aplicar tú mismo sin necesidad de ser un experto.
Causas más frecuentes del error "connection refused mysql"
Antes de lanzarnos a solucionar el problema, es importante que entiendas por qué ocurre. Estas son las causas más habituales:
1. El servicio MySQL no está en funcionamiento
En un servidor de hosting compartido o VPS, el servicio de MySQL (también llamado mysqld o mariadb) puede haberse detenido por varias razones: un reinicio del servidor, un fallo del sistema, falta de memoria o una actualización incompleta.
2. El puerto 3306 está bloqueado por el firewall
Muchos servidores tienen un firewall que bloquea conexiones externas al puerto 3306 por seguridad. Si tu aplicación intenta conectarse desde fuera del servidor (por ejemplo, desde tu ordenador local a una base de datos remota), el firewall puede estar rechazando la conexión.
3. MySQL está configurado para escuchar solo en localhost
Por defecto, MySQL suele estar configurado para aceptar conexiones únicamente desde la propia máquina (127.0.0.1). Si intentas conectarte desde otra IP, recibirás un error de conexión rechazada.
4. Credenciales incorrectas o usuario sin permisos
Aunque el error técnico sea "connection refused", a veces la causa real es que el usuario de la base de datos no tiene permisos para conectarse desde la IP desde la que intentas hacerlo.
5. El servidor de hosting ha cambiado la configuración
Algunos proveedores de hosting modifican los puertos o las direcciones de conexión sin avisar. Si tu web funcionaba antes y de repente deja de hacerlo, revisa si han cambiado los datos de conexión.
Paso a paso: Cómo solucionar "mysql no conecta"
Te voy a guiar por una serie de pasos ordenados de menor a mayor complejidad. Empieza por el primero y ve avanzando solo si el problema persiste.
Paso 1: Verifica si el servicio MySQL está activo
Si tienes acceso a un panel de control como Syspanel (accede a través del puerto 2106), entra en la sección de "Servicios" o "Estado del servidor". Busca MySQL o MariaDB en la lista y comprueba si aparece como "activo" o "corriendo".
Si ves que está detenido, busca el botón de "Iniciar" o "Reiniciar" y actívalo. Espera unos segundos y vuelve a intentar la conexión.
[INFO] En muchos paneles de control, el estado del servicio se muestra con un semáforo: verde si funciona correctamente, rojo si está detenido.
Paso 2: Comprueba los datos de conexión
Este paso parece obvio, pero es sorprendente cuántas veces el error se debe a un simple error tipográfico. Revisa estos datos:
- Host: normalmente
localhosto127.0.0.1si la base de datos está en el mismo servidor que tu web. Si es remota, asegúrate de tener la IP correcta. - Puerto: el estándar es el 3306, pero algunos hostings usan puertos alternativos. Verifica en la documentación de tu proveedor.
- Usuario y contraseña: comprueba que no haya espacios ni caracteres extraños. A veces copiamos y pegamos sin querer un espacio al final.
Paso 3: Prueba la conexión desde la línea de comandos
Si tienes acceso SSH a tu servidor, puedes probar la conexión directamente. Ejecuta:
mysql -u tu_usuario -p -h localhost -P 3306
Te pedirá la contraseña. Si la conexión se establece, el problema está en tu aplicación o en la configuración de red. Si recibes el error de nuevo, el problema está en el servidor.
Paso 4: Revisa el firewall del servidor
Si el servicio está activo pero sigues viendo "connection refused mysql", el firewall puede estar bloqueando el puerto. Puedes comprobarlo con:
sudo ufw status
Si ves que el puerto 3306 no está permitido, añádelo con:
sudo ufw allow 3306
[WARNING] Si estás en un hosting compartido, no tendrás acceso al firewall del servidor. En ese caso, contacta con el soporte técnico de tu proveedor y pídeles que verifiquen si el puerto está abierto para tu cuenta.
Paso 5: Asegúrate de que MySQL escucha en la interfaz correcta
En ocasiones, MySQL está configurado para escuchar solo en localhost. Puedes revisar la configuración en el archivo my.cnf o my.ini. Busca la línea:
bind-address = 127.0.0.1
Si necesitas conexiones remotas, deberías cambiarla a 0.0.0.0 o a la IP específica del servidor desde el que te vas a conectar. Después de modificar el archivo, reinicia el servicio.
[INFO] Esta modificación solo es posible si tienes acceso root al servidor. En hosting compartido no podrás hacerlo, así que contacta con soporte.
Paso 6: Comprueba los permisos del usuario de la base de datos
Si la conexión se establece desde localhost pero no desde tu IP, el problema son los permisos del usuario. Necesitas darle permisos al usuario para conectarse desde tu IP específica.
Desde MySQL ejecuta:
GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'tu_ip' IDENTIFIED BY 'tu_contraseña';
FLUSH PRIVILEGES;
Sustituye tu_ip por tu dirección IP real. Si no sabes cuál es, busca "cuál es mi IP" en Google.
Paso 7: Verifica si el proveedor de hosting bloquea conexiones externas
Muchos hostings compartidos no permiten conexiones externas a MySQL por razones de seguridad. Si tu web está en el mismo servidor que la base de datos, esto no debería afectarte. Pero si intentas conectarte desde tu ordenador con un programa como MySQL Workbench o desde otra web, el hosting puede estar bloqueándolo.
En este caso, las soluciones son:
- Usar una herramienta de administración web como phpMyAdmin (disponible en el panel de control).
- Contactar con el soporte para que habiliten el acceso remoto (algunos proveedores lo ofrecen previa solicitud).
- Usar un túnel SSH para conectar de forma segura.
Errores relacionados que debes conocer
Error "Access denied for user"
Este error es diferente al "connection refused". Significa que el servidor MySQL sí está activo y accesible, pero las credenciales son incorrectas o el usuario no tiene permisos. Revisa usuario, contraseña y permisos.
Error "Can't connect to MySQL server on 'localhost' (10061)"
Este es el equivalente al "connection refused" en Windows. Indica que el servicio no está corriendo o que el firewall de Windows está bloqueando el puerto.
Error "Lost connection to MySQL server during query"
Aquí la conexión se establece correctamente pero se interrumpe durante la consulta. Suele estar relacionado con tiempos de espera o con consultas demasiado pesadas.
Cómo evitar futuros errores de conexión MySQL
Una vez que hayas solucionado el problema, te recomiendo seguir estos consejos para que no vuelva a ocurrir:
-
Configura alertas de monitorización: muchos paneles de control permiten configurar alertas por correo cuando un servicio se detiene. Actívalas para enterarte antes de que tus usuarios lo noten.
-
Usa contraseñas seguras pero fáciles de recordar: anota tus credenciales en un gestor de contraseñas. No las guardes en archivos de texto plano en el servidor.
-
Mantén tu CMS y plugins actualizados: muchas veces los errores de conexión aparecen después de actualizar un plugin o tema que tiene una configuración incorrecta.
-
Documenta los cambios de configuración: si algún día modificas el puerto o la IP de la base de datos, apúntalo. Te ahorrarás horas de búsqueda.
-
Prueba la conexión desde diferentes entornos: si tu web funciona pero tu aplicación de escritorio no, el problema es de permisos o de firewall, no de MySQL.
Preguntas frecuentes (FAQ)
¿Qué significa exactamente "connection refused"?
Significa que el servidor ha recibido tu solicitud de conexión pero la ha rechazado activamente. No es que no haya respuesta, es que la respuesta es negativa. Las causas más comunes son: el servicio no está activo, el puerto está bloqueado o la configuración no permite la conexión desde tu IP.
¿Puedo solucionar este error sin acceso SSH?
Sí, en la mayoría de los casos. Si tienes acceso a un panel de control como Syspanel, puedes reiniciar el servicio MySQL desde la interfaz. Si el problema es de configuración, tendrás que contactar con el soporte de tu hosting.
¿Cuánto tiempo se tarda en resolver este problema?
Depende de la causa. Si es simplemente que el servicio se detuvo, lo solucionarás en menos de 5 minutos. Si hay que modificar configuraciones de red o firewall, puede llevar más tiempo, sobre todo si necesitas esperar la respuesta del soporte técnico.
¿Por qué mi web funciona pero mi aplicación de escritorio no?
Esto es muy común. Tu web se conecta a MySQL desde el mismo servidor (localhost), mientras que tu aplicación de escritorio intenta hacerlo desde tu ordenador (IP externa). La mayoría de los hostings bloquean las conexiones externas por seguridad.
¿Qué hago si nada de esto funciona?
Si has probado todos los pasos anteriores y sigues viendo "error mysql conexión", es momento de contactar con el soporte técnico de tu hosting. Dales toda la información que tengas: el error exacto, desde dónde intentas conectar, y los pasos que ya has probado. Ellos podrán revisar los logs del servidor para encontrar la causa raíz.
Resumen final
El error "connection refused mysql" es frustrante pero casi siempre tiene solución. La clave está en identificar si el problema es:
- Que el servicio no está activo → reinicia MySQL
- Que el puerto está bloqueado → revisa firewall
- Que la configuración no permite tu IP → modifica bind-address o permisos
- Que el hosting bloquea conexiones externas → usa phpMyAdmin o contacta con soporte
Recuerda que en Syspanel (accesible por el puerto 2106) puedes gestionar la mayoría de estos aspectos de forma gráfica, sin necesidad de usar comandos.
Si has llegado hasta aquí, ya sabes cómo diagnosticar y solucionar el problema por ti mismo. La próxima vez que veas "mysql no conecta", sabrás exactamente qué hacer. Y si te surge cualquier duda, no dudes en consultar la documentación de tu hosting o escribir a su soporte técnico describiendo los pasos que ya has seguido.
[TIP] Guarda este artículo en tus favoritos. Te será útil la próxima vez que tu web se quede sin base de datos en el peor momento posible.
