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

Cómo solucionar el error 'mysqli_connect(): Connection refused' en WordPress

Actualizado el 3 de septiembre de 2025

¿Qué significa exactamente “mysqli_connect(): Connection refused”?

Cuando ves el error mysqli_connect(): Connection refused en WordPress, lo primero que debes saber es que no es un problema de tu web en sí, sino de la comunicación entre WordPress y la base de datos MySQL.

Piensa en tu sitio web como un edificio: WordPress es la recepción, y MySQL es el almacén donde se guardan todos los muebles (tus entradas, páginas, usuarios y configuraciones). El error "Connection refused" (conexión rechazada) significa que la recepción está intentando abrir la puerta del almacén, pero alguien le está diciendo "no, no puedes pasar". No es que los muebles estén rotos, es que la puerta está cerrada o la dirección es incorrecta.

Este error es diferente a otros como "Error establishing a database connection". Mientras que ese error suele ser más genérico, el mysqli_connect(): Connection refused es más específico y suele estar relacionado con problemas de red, configuración del servidor o permisos. La buena noticia es que, en la mayoría de los casos, tiene solución y puedes hacerlo tú mismo sin ser un experto.

A lo largo de esta guía, vamos a desglosar las causas más comunes y, lo más importante, te daré soluciones paso a paso, explicadas de forma sencilla, para que puedas recuperar tu sitio web en pocos minutos.


Primeros pasos: identifica el alcance del problema

Antes de lanzarte a cambiar archivos o reiniciar servicios, es fundamental que sepas qué es exactamente lo que está fallando. Esto te ahorrará tiempo y evitará que hagas cambios innecesarios.

¿El error aparece en todo el sitio o solo en una página?

  • En todo el sitio: Si tanto la portada como el panel de administración (wp-admin) muestran el error, el problema es general y afecta a toda la conexión con la base de datos.
  • Solo en algunas páginas: Si algunas páginas cargan y otras no, podría ser un problema de caché o de un plugin específico, aunque es menos común con este error concreto.

¿El error cambia si recargas la página?

A veces, el error aparece de forma intermitente. Si recargas y a veces funciona y otras no, es muy probable que el problema sea de recursos del servidor (memoria o conexiones agotadas) o que el servicio de MySQL esté reiniciándose constantemente.

Revisa el archivo wp-config.php

Este es el archivo de configuración más importante de WordPress. Contiene los datos de acceso a la base de datos. Accede a tu hosting mediante FTP o el administrador de archivos de tu panel de control y busca un archivo llamado wp-config.php en la raíz de tu instalación.

Ábrelo con un editor de texto (como el Bloc de notas) y busca las líneas que empiezan por define('DB_HOST'. Normalmente verás algo como:

define('DB_NAME', 'tu_base_de_datos');
define('DB_USER', 'tu_usuario');
define('DB_PASSWORD', 'tu_contraseña');
define('DB_HOST', 'localhost');

El valor de DB_HOST es clave. Lo más habitual es que sea localhost, pero en algunos servidores puede ser una IP (por ejemplo, 127.0.0.1) o un nombre de servidor específico. Anota este valor, lo necesitaremos más adelante.


Solución 1: Cambiar “localhost” por “127.0.0.1” (la más común)

Esta es la primera solución que debes probar, y funciona en un altísimo porcentaje de casos. El motivo es que, en muchos servidores, especialmente en aquellos que usan configuraciones de red más estrictas, localhost puede intentar conectarse a través de un socket Unix o una ruta de red que no está disponible. En cambio, 127.0.0.1 fuerza la conexión a través del protocolo TCP/IP, que es más universal.

Pasos a seguir:

  1. Accede a tu archivo wp-config.php como te expliqué antes.
  2. Localiza la línea que contiene define('DB_HOST', 'localhost');.
  3. Cámbiala por define('DB_HOST', '127.0.0.1');.
  4. Guarda el archivo y súbelo de nuevo si lo estabas editando en local.
  5. Recarga tu sitio web.

[TIP]: Si no encuentras el archivo wp-config.php en la raíz, asegúrate de que tu cliente FTP o el administrador de archivos esté configurado para mostrar archivos ocultos, ya que el punto al principio del nombre lo hace invisible en muchos sistemas.

¿Por qué funciona esto?

Al usar 127.0.0.1, le estás diciendo a WordPress que se conecte al servidor MySQL a través de la dirección de bucle invertido (loopback) de tu propia máquina, usando el protocolo de red estándar. Esto evita problemas con la resolución de nombres o la configuración de sockets que a veces dan lugar al error mysqli_connect(): Connection refused.


Solución 2: Verifica que el servicio MySQL esté activo

Si el cambio a 127.0.0.1 no funciona, el siguiente paso es comprobar que el servidor de bases de datos (MySQL o MariaDB) esté realmente funcionando.

Si usas un hosting compartido

En este caso, no puedes reiniciar el servidor tú mismo. Lo que debes hacer es:

  1. Contactar con el soporte técnico de tu proveedor de hosting.
  2. Menciónales el error exacto: "mysqli_connect(): Connection refused".
  3. Pregúntales si el servicio de MySQL está activo y si hay algún bloqueo de red para tu cuenta.

Muchas veces, el soporte puede verificar al instante si el servicio se cayó o si hay un problema de configuración en el servidor.

Si tienes un VPS o un servidor dedicado

Si gestionas tu propio servidor, aquí tienes los comandos para comprobar y reiniciar el servicio.

[WARNING]: Estos comandos requieren acceso SSH (terminal) y permisos de administrador (root). Si no te sientes cómodo con la terminal, es mejor que consultes con tu proveedor o un técnico.

  1. Conéctate por SSH a tu servidor.

  2. Comprueba el estado del servicio con uno de estos comandos (depende de tu sistema operativo):

    sudo systemctl status mysql
    # o
    sudo systemctl status mariadb
    # o
    sudo service mysql status
    
  3. Si el estado muestra "inactive" o "failed", reinícialo con:

    sudo systemctl restart mysql
    # o
    sudo systemctl restart mariadb
    # o
    sudo service mysql restart
    
  4. Vuelve a comprobar el estado para asegurarte de que está "active" o "running".


Solución 3: Revisa el puerto de conexión de MySQL

Por defecto, MySQL escucha en el puerto 3306. Sin embargo, a veces, por seguridad o por configuración del servidor, este puerto se cambia.

¿Cómo saber qué puerto usa tu MySQL?

  1. Si tienes acceso a cPanel o a la herramienta de administración de tu hosting, busca la sección de "Bases de datos MySQL". A menudo, el puerto se muestra junto al nombre del servidor.

  2. Si tienes acceso SSH, puedes ejecutar:

    sudo netstat -tlnp | grep mysql
    

    O también:

    sudo ss -tlnp | grep mysql
    

    Busca la línea que termina en :3306 o similar. Ese número es el puerto.

Cómo añadir el puerto en wp-config.php

Si descubres que el puerto es diferente (por ejemplo, 3307), debes añadirlo a la línea DB_HOST de la siguiente manera:

define('DB_HOST', '127.0.0.1:3307');

Es decir, primero la dirección IP, dos puntos y luego el número de puerto. Guarda el archivo y recarga tu web.


Solución 4: Comprueba los límites de conexión y los recursos

A veces, el error mysqli_connect(): Connection refused no es un problema de configuración, sino de recursos. Si tu sitio recibe mucho tráfico o tienes muchos plugins que hacen consultas a la base de datos, el servidor MySQL puede agotar el número máximo de conexiones permitidas.

¿Cómo saber si es este el problema?

  • El error aparece de forma intermitente.
  • El problema empeora en horas punta de tráfico.
  • Puedes acceder al panel de control de tu hosting y ver que el uso de CPU o memoria está muy alto.

Soluciones a corto plazo

  1. Desactiva temporalmente los plugins que no uses. Puedes hacerlo desde el panel de administración (si puedes acceder) o mediante FTP, renombrando la carpeta wp-content/plugins a wp-content/plugins_bak. Esto desactivará todos los plugins de golpe.
  2. Cambia a un tema por defecto (como Twenty Twenty-Four). Si el error desaparece, el problema es de tu tema.

Soluciones a largo plazo

  • Optimiza tu base de datos: Usa plugins como WP-Optimize para limpiar transitorios, revisiones y tablas innecesarias.
  • Mejora el plan de hosting: Si estás en un plan compartido, puede que sea hora de pasar a un VPS o a un plan con más recursos.
  • Implementa una caché: Un plugin de caché como W3 Total Cache o WP Super Cache reduce la carga en la base de datos al servir versiones estáticas de tus páginas.

Solución 5: Verifica los permisos del usuario de la base de datos

Es posible que el usuario de la base de datos que usa WordPress no tenga los permisos correctos para conectarse desde la dirección IP o el host desde el que se intenta conectar.

Si usas cPanel o similar

  1. Ve a la sección de "Bases de datos MySQL".
  2. Busca el usuario que configuraste en tu archivo wp-config.php.
  3. Asegúrate de que esté añadido a la base de datos correcta.
  4. Verifica que tenga todos los privilegios (SELECT, INSERT, UPDATE, DELETE, etc.). La opción "ALL PRIVILEGES" es la más segura.

Si tienes acceso SSH

Puedes comprobar y otorgar permisos con comandos SQL. Entra a MySQL con:

mysql -u root -p

Y luego ejecuta:

SHOW GRANTS FOR 'tu_usuario'@'localhost';

Si los permisos no son los correctos, puedes otorgarlos con:

GRANT ALL PRIVILEGES ON tu_base_de_datos.* TO 'tu_usuario'@'localhost';
FLUSH PRIVILEGES;

Solución 6: Revisa los logs de error del servidor

Si has probado todo lo anterior y el error persiste, es hora de mirar los registros del sistema. Los logs te darán pistas más concretas sobre el origen del problema.

¿Dónde encontrar los logs?

  • En cPanel o Plesk: Busca la sección "Registros de errores" o "Error Logs".

  • En un VPS con SSH: Los logs de MySQL suelen estar en /var/log/mysql/ o /var/log/mysqld.log. Puedes ver las últimas líneas con:

    sudo tail -f /var/log/mysql/error.log
    

    O para ver los logs de acceso a la web:

    sudo tail -f /var/log/apache2/error.log
    # o
    sudo tail -f /var/log/nginx/error.log
    

¿Qué buscar en los logs?

  • Líneas que contengan "connection refused" o "access denied".
  • Mensajes de error que mencionen la IP o el puerto.
  • Errores de "Too many connections" (demasiadas conexiones).

[INFO]: Los logs pueden ser abrumadores al principio. No te preocupes si no entiendes todo. Busca las palabras clave mencionadas y, si encuentras algo relevante, puedes buscarlo en Google para obtener más información o contactar con tu proveedor de hosting con esos datos.


Solución 7: El caso especial de Syspanel (antes HestiaCP)

Si tu sitio está alojado en un servidor que utiliza el panel de control Syspanel (anteriormente conocido como HestiaCP), el error mysqli_connect(): Connection refused puede deberse a una configuración específica de red.

[INFO]: Syspanel es un panel de control de hosting gratuito y de código abierto. Su acceso se realiza a través del puerto 2106 (por ejemplo, https://tu-dominio.com:2106).

En Syspanel, la configuración de red para las bases de datos puede ser más estricta. Te recomiendo que:

  1. Accedas a Syspanel usando el puerto 2106.
  2. Vayas a la sección de Bases de Datos.
  3. Edita la base de datos que usa tu WordPress.
  4. Asegúrate de que el host de conexión permitido sea 127.0.0.1 y no solo localhost.

Además, en algunos casos, Syspanel configura MySQL para que solo escuche en la interfaz de red local. Verifica que el archivo de configuración de MySQL (/etc/mysql/mysql.conf.d/mysqld.cnf o similar) tenga la línea:

bind-address = 127.0.0.1

Esta línea asegura que MySQL solo acepte conexiones desde el propio servidor, lo cual es correcto para WordPress instalado en el mismo servidor.


Preguntas frecuentes (FAQ) sobre el error de conexión MySQL en WordPress

¿Qué es exactamente "mysqli_connect(): Connection refused"?

Es un error de PHP que indica que el intento de conectarse al servidor de base de datos MySQL fue rechazado. Esto significa que el servidor MySQL no está escuchando en la dirección o puerto especificado, o que hay un firewall o configuración que bloquea la conexión.

¿Cuál es la diferencia entre "Connection refused" y "Connection timed out"?

  • Connection refused: El servidor MySQL está activo pero rechaza la conexión. Es como llamar a la puerta de una casa y que te digan "no, no puedes pasar".
  • Connection timed out: El servidor MySQL no responde en absoluto. Es como llamar a la puerta de una casa vacía y esperar sin que nadie conteste.

¿Puedo solucionar este error sin acceso al servidor?

Sí, en muchos casos sí. La solución de cambiar localhost por 127.0.0.1 se puede hacer solo con acceso al archivo wp-config.php vía FTP o el administrador de archivos de tu hosting. También puedes desactivar plugins y temas desde el panel de administración si tienes acceso.

¿Por qué aparece este error después de migrar mi sitio a un nuevo hosting?

Es muy común. Al migrar, la configuración de la base de datos cambia (nuevo servidor, nuevo puerto, nuevos permisos). Es probable que el archivo wp-config.php siga teniendo los datos antiguos. Asegúrate de actualizar DB_HOST, DB_NAME, DB_USER y DB_PASSWORD con los datos del nuevo hosting.

¿Un plugin puede causar este error?

Sí, aunque es menos común. Un plugin mal codificado que realice consultas masivas a la base de datos puede agotar el límite de conexiones. Desactivar todos los plugins y volver a activarlos uno a uno es una buena forma de diagnosticarlo.

¿Debo cambiar mi contraseña de la base de datos?

No necesariamente. El error "Connection refused" no suele estar relacionado con la contraseña. Si la contraseña fuera incorrecta, verías un error diferente: "Access denied for user". Sin embargo, si sospechas que tu base de datos ha sido comprometida, es una buena práctica cambiarla.

¿Qué hago si ninguna de estas soluciones funciona?

Si has probado todas las soluciones de esta guía y el error persiste, te recomiendo que contactes con el soporte técnico de tu proveedor de hosting. Ellos tienen acceso directo a los servidores y pueden diagnosticar el problema mucho más rápido. Proporciónales el error exacto y los pasos que ya has seguido.


Resumen final: Tu plan de acción

Para que no te pierdas, aquí tienes un resumen de los pasos que debes seguir en orden:

  1. Cambia localhost por 127.0.0.1 en tu archivo wp-config.php. Esta es la solución más rápida y efectiva.
  2. **Verifica que el servicio

¿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