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

Cómo solucionar el error 'Connection refused' al conectar a MySQL en WordPress

Actualizado el 26 de septiembre de 2025

¡Hola! Si estás leyendo esto, es muy probable que te hayas encontrado con un mensaje de error bastante frustrante al intentar acceder a tu sitio web o al panel de administración de WordPress. Ese mensaje, que suele decir algo como "Error establishing a database connection" o, si estás revisando los registros, "Connection refused", puede parecer el fin del mundo, pero no te preocupes. En la gran mayoría de los casos, tiene una solución sencilla que puedes aplicar tú mismo, paso a paso, sin necesidad de ser un experto en servidores.

En esta guía extensa y detallada, vamos a desglosar exactamente qué significa el error connection refused mysql, por qué ocurre, y lo más importante: cómo solucionarlo de forma clara y segura. Vamos a ello.

¿Qué significa exactamente "Connection refused" en MySQL?

Antes de lanzarnos a arreglar nada, es fundamental entender qué está pasando. Imagina que tu sitio web de WordPress es una tienda y la base de datos MySQL es el almacén donde guardas todos tus productos (entradas, páginas, comentarios, configuración). Cuando alguien visita tu web, el código de WordPress va al almacén (la base de datos) a buscar los productos para mostrarlos.

El error connection refused mysql es como si el encargado del almacén (el servidor MySQL) le dijera al dependiente de la tienda (WordPress): "Lo siento, no puedo atenderte ahora, no acepto conexiones". No es que el almacén haya desaparecido, sino que la puerta está cerrada o el dependiente está llamando a una puerta equivocada.

Técnicamente, significa que el servidor de base de datos MySQL está rechazando activamente la conexión. Esto se diferencia de otros errores como "Connection timed out" (que significa que el servidor no responde en absoluto, quizás está apagado o bloqueado por un firewall). "Connection refused" indica que el servidor MySQL está en funcionamiento, pero está configurado para no aceptar la conexión que WordPress está intentando realizar.

Diferencias clave con otros errores de conexión

Para que puedas diagnosticar mejor, aquí tienes una comparativa rápida:

  • Connection refused: El servidor MySQL está activo, pero no acepta la conexión en el puerto o la interfaz que le estás indicando. Es un problema de configuración o de permisos.
  • Connection timed out: El servidor MySQL no responde. Puede estar caído, sobrecargado o bloqueado por un firewall de red.
  • Access denied for user: El servidor MySQL acepta la conexión, pero el usuario o la contraseña que le has dado a WordPress son incorrectos o no tienen permisos para esa base de datos.

En esta guía nos centraremos en el error mysql wordpress de tipo "Connection refused", que es uno de los más comunes y, afortunadamente, uno de los más fáciles de resolver.

Causas más comunes del error "Connection refused"

El error connection refused mysql suele deberse a una de estas tres causas principales:

  1. Configuración incorrecta en el archivo wp-config.php: Este es el archivo de configuración principal de WordPress. Si la dirección del servidor de base de datos (host) es incorrecta, WordPress intentará conectarse al lugar equivocado.
  2. El servidor MySQL está configurado para escuchar solo en una dirección específica: Por defecto, MySQL a menudo se configura para aceptar conexiones solo desde la misma máquina (localhost). Si tu WordPress está en un servidor diferente al de la base de datos, o si el archivo de configuración apunta a una dirección IP externa cuando debería ser local (o viceversa), obtendrás este error.
  3. El puerto de conexión es incorrecto o está bloqueado: MySQL, por defecto, usa el puerto 3306. Si tu servidor utiliza un puerto personalizado o el puerto está bloqueado, la conexión será rechazada.

Ahora que sabemos qué buscar, vamos a ponernos manos a la obra. Sigue estos pasos en orden, ya que van de lo más simple a lo más complejo.

Paso 1: Verifica la configuración del archivo wp-config.php

El primer paso es revisar el archivo más importante para la conexión a la base de datos. Este archivo se llama wp-config.php y se encuentra en la carpeta raíz de tu instalación de WordPress (normalmente public_html o www).

Para acceder a él, necesitas un cliente FTP (como FileZilla) o el administrador de archivos de tu panel de control de hosting.

Cómo hacerlo:

  1. Conéctate a tu servidor mediante FTP o al administrador de archivos de tu hosting.

  2. Busca el archivo wp-config.php y ábrelo con un editor de texto (como el Bloc de notas o un editor de código).

  3. Busca las siguientes líneas (normalmente al principio del archivo):

    define( 'DB_NAME', 'tu_nombre_de_base_de_datos' );
    define( 'DB_USER', 'tu_usuario_de_base_de_datos' );
    define( 'DB_PASSWORD', 'tu_contraseña' );
    define( 'DB_HOST', 'localhost' ); // Esta es la línea clave
    
  4. Revisa la línea DB_HOST. Esta es la que casi siempre causa el error.

    • Si tu base de datos y tu WordPress están en el mismo servidor (lo más común en hosting compartido), el valor debería ser localhost.
    • Si tu hosting te ha proporcionado una dirección específica para la base de datos (a veces es algo como mysql.tudominio.com o una IP), ese valor debería estar aquí.
  5. Asegúrate de que no haya espacios o caracteres extraños alrededor de los valores. Debe ser exactamente 'localhost' o la dirección que te haya dado tu proveedor.

[TIP]: Si acabas de cambiar la contraseña de tu base de datos desde el panel de control de tu hosting (como cPanel o Syspanel), asegúrate de actualizarla también en este archivo. Un simple cambio de contraseña puede provocar este error si no se sincroniza.

Si todo parece correcto aquí, pasa al siguiente paso.

Paso 2: Verifica el estado y la configuración del servidor MySQL

Si el archivo wp-config.php está perfecto, el problema podría estar en el propio servidor MySQL. Esto es más común en entornos de servidor privado (VPS) o dedicados, donde tienes más control sobre la configuración.

### 2.1. ¿Está el servicio MySQL en funcionamiento?

Lo primero es verificar que el servicio MySQL esté activo. Esto se hace a través de la terminal (SSH). Si no sabes qué es SSH, es una forma de acceder a la línea de comandos de tu servidor. Muchos paneles de control también ofrecen esta opción.

Dependiendo de tu sistema operativo del servidor (normalmente Linux), el comando puede variar:

  • En sistemas con systemd (Ubuntu 16.04+, Debian 8+, CentOS 7+):

    sudo systemctl status mysql
    

    o

    sudo systemctl status mysqld
    
  • En sistemas más antiguos:

    sudo service mysql status
    

Deberías ver un mensaje que indique que el servicio está activo (running). Si no lo está, puedes iniciarlo con:

sudo systemctl start mysql

o

sudo service mysql start

### 2.2. ¿Está MySQL escuchando en la dirección correcta?

Este es el punto más crítico para el error connection refused mysql. MySQL por defecto escucha (acepta conexiones) en una dirección específica. Si está configurado para escuchar solo en 127.0.0.1 (localhost), no aceptará conexiones desde otras IPs.

Para verificar esto, necesitas revisar el archivo de configuración de MySQL, que suele estar en /etc/mysql/mysql.conf.d/mysqld.cnf o /etc/my.cnf.

  1. Abre el archivo de configuración con un editor de texto (necesitas permisos de administrador):
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. Busca la línea que comienza con bind-address.
    • Si ves bind-address = 127.0.0.1, significa que MySQL solo acepta conexiones desde la misma máquina. Esto es correcto si tu WordPress está en el mismo servidor.
    • Si ves bind-address = 0.0.0.0, significa que MySQL acepta conexiones desde cualquier dirección IP. Esto es necesario si tu WordPress está en un servidor diferente.

¿Cuál es el problema entonces? Si tu WordPress está en el mismo servidor y tu wp-config.php dice localhost, pero MySQL está configurado con bind-address = 0.0.0.0, la conexión podría ser rechazada en algunos sistemas. Del mismo modo, si WordPress está en otro servidor y tu MySQL solo escucha en 127.0.0.1, la conexión será rechazada.

[WARNING]: Modificar bind-address a 0.0.0.0 tiene implicaciones de seguridad. Asegúrate de que tu firewall solo permita el acceso al puerto 3306 desde las IPs de tus servidores de aplicación, no desde todo Internet.

Si necesitas cambiar esta configuración:

  1. Modifica la línea bind-address según tu necesidad.
  2. Guarda el archivo (Ctrl+O, luego Enter, y Ctrl+X para salir en nano).
  3. Reinicia el servicio MySQL para que los cambios surtan efecto:
    sudo systemctl restart mysql
    

Paso 3: Verifica el puerto de conexión a MySQL

Como mencionamos, MySQL usa el puerto 3306 por defecto. Sin embargo, a veces se configura para usar otro puerto por seguridad.

  1. En el mismo archivo de configuración de MySQL, busca la línea port. Si no está, por defecto es 3306.

  2. Si el puerto es diferente, asegúrate de que WordPress lo sepa. En el archivo wp-config.php, puedes añadir el puerto al final del host de la siguiente manera:

    define( 'DB_HOST', 'localhost:3307' ); // Si tu puerto es 3307
    

    o

    define( 'DB_HOST', '127.0.0.1:3307' );
    
  3. También verifica que el firewall de tu servidor (como ufw o iptables) permita el tráfico en ese puerto.

[INFO]: Si estás usando un panel de control como Syspanel (el cual se accede por el puerto 2106), es muy probable que la gestión de bases de datos se realice a través de su interfaz. Asegúrate de que los datos de la base de datos que ves en Syspanel coinciden exactamente con los de tu wp-config.php.

Paso 4: Comprueba los permisos del usuario de la base de datos

Otra causa común del error mysql wordpress es que el usuario de la base de datos no tenga permisos para conectarse desde el host desde el que lo intenta.

  • Si tu WordPress y MySQL están en el mismo servidor, el usuario debería tener permisos para localhost o 127.0.0.1.
  • Si están en servidores diferentes, el usuario debe tener permisos para conectarse desde la IP del servidor de WordPress.

Para verificar y cambiar esto, necesitas acceder a la línea de comandos de MySQL (como administrador).

  1. Accede a MySQL:

    mysql -u root -p
    

    (Te pedirá la contraseña de root de MySQL).

  2. Una vez dentro, ejecuta el siguiente comando para ver los permisos del usuario:

    SELECT user, host FROM mysql.user;
    

    Esto te mostrará una tabla con los usuarios y los hosts desde los que pueden conectarse. Si ves algo como 'tusuario'@'localhost', solo puede conectarse desde la misma máquina.

  3. Si necesitas que se conecte desde otro servidor, puedes crear un nuevo usuario o modificar el existente. Por ejemplo, para permitir la conexión desde cualquier host (no recomendado para producción) o desde una IP específica:

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

    (Reemplaza la IP, el usuario, la contraseña y la base de datos con tus valores).

Paso 5: Prueba la conexión manualmente desde la línea de comandos

Para aislar el problema, es muy útil intentar conectarse a MySQL desde la línea de comandos usando los mismos datos que usa WordPress. Esto te dirá si el problema es de configuración o de red.

mysql -h localhost -u tu_usuario -p tu_nombre_de_base_de_datos

O si usas una IP específica:

mysql -h 127.0.0.1 -u tu_usuario -p tu_nombre_de_base_de_datos

Si la conexión es exitosa, verás el prompt de MySQL (mysql>). Si falla, verás un mensaje de error que te dará más pistas.

  • Si te da ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2), significa que el servicio no está corriendo o el socket no existe (vuelve al Paso 2.1).
  • Si te da ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (111 "Connection refused"), confirma el error de conexión y que el servidor no está escuchando en esa dirección/puerto.

[TIP]: Prueba tanto con localhost como con 127.0.0.1. A veces, por configuración del sistema, uno funciona y el otro no.

Paso 6: Revisa los logs de error de MySQL

Si todo lo anterior falla, los registros de MySQL pueden darte la respuesta definitiva. Estos logs suelen estar en /var/log/mysql/error.log o /var/log/mysqld.log.

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

Mientras observas el log, intenta conectarte desde WordPress. Verás aparecer mensajes de error específicos que te indicarán exactamente qué está fallando (por ejemplo, "Access denied for user 'x'@'y'" o "Connection refused").

Soluciones específicas para entornos de hosting compartido

Si estás en un hosting compartido, no tendrás acceso a la terminal ni a los archivos de configuración de MySQL. En este caso, el error connection refused mysql es casi siempre un problema de configuración en wp-config.php o un problema temporal del servidor.

  • Revisa la información de tu base de datos en el panel de control: Inicia sesión en tu panel de control (cPanel, Plesk, o Syspanel si tu proveedor lo usa, que recuerda que se accede por el puerto 2106). Ve a la sección de "Bases de datos MySQL" y verifica el nombre de la base de datos, el usuario y el host. Copia y pega esos valores exactamente en tu wp-config.php.
  • Contacta con el soporte: Si los datos son correctos y el error persiste, es muy probable que haya un problema en el servidor de bases de datos que solo ellos pueden solucionar. Proporciónales el mensaje de error exacto y el archivo wp-config.php (sin la contraseña, por seguridad).

Preguntas Frecuentes (FAQ) sobre el error "Connection refused"

¿Qué significa "connection refused mysql" en términos sencillos?
Significa que tu sitio web de WordPress está intentando hablar con la base de datos, pero el servidor de la base de datos le está "colgando el teléfono". No es que la base de datos haya desaparecido, sino que no está aceptando la llamada en ese momento.

¿Puedo perder mis datos si intento arreglar este error?
No. Este error es de conexión, no de pérdida de datos. Tus datos están seguros en la base de datos. Lo que estás arreglando es la comunicación entre WordPress y la base de datos. Los pasos que hemos visto no borran ni modifican datos.

¿Por qué este error aparece de repente si mi web funcionaba bien?
Puede deberse a varios motivos:

  • Un cambio de contraseña de la base de datos que no se ha actualizado en wp-config.php.
  • Una actualización de WordPress o de un plugin que ha modificado algo.
  • Un cambio en la configuración del servidor por parte de tu proveedor de hosting.
  • Un pico de tráfico o un ataque

¿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