Cómo solucionar el error 'Connection failed: SQLSTATE[HY000] [2002]' en WordPress y PrestaShop
¡Hola! Si estás leyendo esto, es muy probable que hayas visto un mensaje bastante feo en la pantalla de tu tienda online o en el panel de administración de tu WordPress o PrestaShop. No te preocupes, es uno de los errores más comunes en el mundo del hosting y, por suerte, casi siempre tiene solución.
Vamos a desgranar qué significa exactamente ese mensaje críptico y, sobre todo, cómo solucionarlo paso a paso, incluso si no te consideras una persona muy técnica. Respira hondo, coge un café y vamos a ello.
¿Qué significa realmente "SQLSTATE[HY000] [2002]"?
Antes de ponernos manos a la obra, es importante entender qué nos está diciendo el servidor. El mensaje completo suele ser algo así:
Connection failed: SQLSTATE[HY000] [2002] Connection refused
O a veces termina con No such file or directory.
Vamos a traducirlo. Tu web (WordPress o PrestaShop) necesita guardar y leer información constantemente (usuarios, productos, pedidos...). Esa información se guarda en una base de datos, que normalmente es MySQL o MariaDB.
Piensa en tu web como un cliente que va a un banco (la base de datos) a hacer gestiones. El error SQLSTATE[HY000] [2002] significa que el cliente (tu web) no puede ni siquiera entrar al banco (la base de datos). No es que la contraseña sea incorrecta (eso sería otro error), es que no hay conexión física con el servidor de la base de datos. O el banco está cerrado, o el cliente está yendo a la dirección equivocada, o hay un guardia de seguridad (firewall) que le bloquea el paso.
En términos técnicos, el código [2002] es un código de error de MySQL que se refiere específicamente a un fallo en la conexión del socket o del puerto TCP/IP.
Las 7 Causas Más Comunes (y sus Soluciones)
Vamos a ir de lo más simple a lo más complejo. Te recomiendo seguir este orden, ya que la mayoría de las veces el problema es más sencillo de lo que parece.
1. El Servicio de Base de Datos Está Caído (La causa más frecuente)
Esta es, con diferencia, la razón número uno. Si el servidor que aloja tu base de datos se ha detenido o ha fallado, tu web no podrá conectarse.
¿Cómo lo soluciono?
Necesitas acceder al panel de control de tu hosting. Dependiendo de tu proveedor, el nombre cambia (cPanel, Plesk, Syspanel, etc.).
- Si usas Syspanel (el antiguo HestiaCP): Accede a través de tu navegador a
https://tu-dominio.com:2106. Una vez dentro, busca la sección de "Servicios" o "Servidores" en el menú lateral. - Si usas cPanel o Plesk: Busca una herramienta llamada "MySQL" o "Base de Datos MySQL".
Dentro de esa sección, verás una lista de servicios (Apache, Nginx, FTP, etc.). Busca MySQL o MariaDB y verifica su estado.
- Si está en rojo o dice "Stopped" (Detenido), haz clic en el botón "Start" o "Iniciar".
- Espera unos segundos y recarga tu página web.
[TIP] A veces, el servicio se cae por falta de memoria RAM. Si esto ocurre muy a menudo, puede que necesites contratar un plan de hosting con más recursos o contactar con tu proveedor para que investigue la causa raíz.
2. Datos de Conexión Incorrectos en tu Archivo de Configuración
Otra causa muy común es que los datos de acceso a la base de datos hayan cambiado o sean incorrectos. Esto puede pasar si alguien cambió la contraseña de la BD desde el panel de control, o si restauraste una copia de seguridad de un servidor antiguo.
Cada plataforma guarda estos datos en un archivo diferente:
- WordPress: En el archivo
wp-config.php, que se encuentra en la raíz de tu sitio. - PrestaShop: En el archivo
parameters.php, que se encuentra en la rutaconfig/de tu instalación.
¿Cómo lo soluciono?
Necesitas un cliente FTP (como FileZilla) o el administrador de archivos de tu panel de control.
-
Accede a tus archivos y localiza el archivo correspondiente.
-
Ábrelo con un editor de texto (como el Bloc de notas o, mejor, un editor de código como Sublime Text o Notepad++).
-
Busca las siguientes líneas (los nombres pueden variar ligeramente):
En WordPress (
wp-config.php):define( 'DB_NAME', 'tu_basededatos' ); define( 'DB_USER', 'tu_usuario' ); define( 'DB_PASSWORD', 'tu_contraseña' ); define( 'DB_HOST', 'localhost' );En PrestaShop (
parameters.php):'database_host' => 'localhost', 'database_name' => 'tu_basededatos', 'database_user' => 'tu_usuario', 'database_password' => 'tu_contraseña', -
Verifica que estos datos son correctos. La mejor manera de comprobarlo es ir a tu panel de control de hosting, buscar la sección de "Bases de Datos MySQL" y ver los nombres de usuario y bases de datos que tienes creados.
-
Si la contraseña no la recuerdas, cámbiala desde el panel de control de tu hosting y luego actualiza el archivo de configuración con la nueva contraseña.
-
Guarda los cambios y sube el archivo de nuevo al servidor (si lo editaste localmente).
[WARNING] Asegúrate de no dejar espacios en blanco o caracteres invisibles alrededor de los valores. Un simple espacio extra en 'localhost' puede causar este error.
3. El Host de la Base de Datos No es "localhost"
Este es un error muy típico. Mucha gente asume que la base de datos siempre está en localhost, pero no es así. En muchos hostings profesionales, especialmente en aquellos que usan servidores de bases de datos separados para mejorar el rendimiento, el host de la base de datos es una URL diferente.
¿Cómo lo soluciono?
- Ve al panel de control de tu hosting.
- Busca la sección de "Bases de Datos MySQL".
- Cuando creas o miras una base de datos existente, el panel te muestra un "Host" o "Servidor" específico. A menudo es algo como
mysql.tudominio.comolocalhost. Copia exactamente ese valor.
No uses localhost si el panel te da otro nombre. Vuelve al archivo de configuración (wp-config.php o parameters.php) y sustituye 'localhost' por el valor que te ha dado el panel.
[INFO] En Syspanel, puedes ver el host de la base de datos en la misma página donde la creas o la gestionas. A veces, si el panel indica localhost, pero tu web está en un servidor distinto al de la BD, tendrás que usar la IP pública del servidor de BD.
4. Problemas con el Puerto de Conexión
Aunque es menos común, a veces el problema es que MySQL no está escuchando en el puerto estándar (el 3306). Esto puede ser una configuración de seguridad o un conflicto con otro servicio.
¿Cómo lo soluciono?
Puedes intentar especificar el puerto en el archivo de configuración.
-
En WordPress: Añade el puerto al host de la siguiente manera:
define( 'DB_HOST', 'localhost:3307' );(Reemplaza
3307con el puerto que necesites, si lo sabes). -
En PrestaShop: El parámetro
database_porten el archivoparameters.phpte permite especificarlo.
Si no estás seguro del puerto, contacta con tu proveedor de hosting para preguntárselo. Si estás en un entorno local (como XAMPP o WAMP), el puerto suele ser el 3306 por defecto.
5. El Archivo config o wp-config.php Tiene Permisos Incorrectos
Los permisos de los archivos son importantes en los servidores Linux. Si el archivo de configuración es legible por todo el mundo, puede ser un riesgo de seguridad, pero si es demasiado restrictivo, el servidor web (Apache/Nginx) podría no ser capaz de leerlo y, por tanto, fallar al intentar conectar con la BD.
¿Cómo lo soluciono?
- Con tu cliente FTP, haz clic derecho sobre el archivo
wp-config.php(en WordPress) oparameters.php(en PrestaShop). - Selecciona "Permisos de archivo" o "File permissions" (depende del cliente FTP).
- Asegúrate de que el valor sea 644 o 640. Esto significa que el propietario puede leer y escribir, y los demás solo pueden leer (o nada en el caso de 640).
- Aplica los cambios y recarga la web.
[WARNING] Nunca pongas permisos como 777 (lectura, escritura y ejecución para todos). Es un agujero de seguridad enorme. El valor correcto es 644.
6. El Servidor de Base de Datos Está Bloqueado por un Firewall
A veces, el problema no es de tu web, sino de la red. Si tu base de datos está en un servidor diferente al de tu web, es posible que un firewall esté bloqueando la conexión entre ellos.
¿Cómo lo soluciono?
Esta es una solución un poco más técnica, pero no es imposible.
- Desde el panel de control de tu hosting (Syspanel, cPanel, etc.), busca la sección de "Firewall" o "Seguridad".
- Busca las reglas de acceso a MySQL o MariaDB.
- Asegúrate de que el puerto 3306 (o el que uses) está abierto para la IP del servidor donde está alojada tu web.
Si no encuentras esta opción, o no te sientes cómodo tocando esto, es el momento de contactar con el soporte técnico de tu hosting. Ellos podrán verificar si hay algún bloqueo a nivel de red.
7. El Socket de MySQL no se Encuentra (El error "No such file or directory")
Si el mensaje de error termina con No such file or directory, significa que PHP está intentando conectarse a la base de datos a través de un archivo "socket" (un método de conexión local en Linux) y no lo encuentra. Esto suele pasar en configuraciones locales o servidores mal configurados.
¿Cómo lo soluciono?
- Si estás en un hosting compartido: Contacta con el soporte. No puedes cambiar la ruta del socket tú mismo.
- Si tienes un VPS o servidor dedicado: Puedes intentar cambiar el host de
localhosta127.0.0.1en tu archivo de configuración. Esto fuerza a PHP a usar una conexión TCP/IP en lugar de un socket Unix, lo que a menudo soluciona el problema.
// En WordPress
define( 'DB_HOST', '127.0.0.1' );
Si esto no funciona, tendrás que revisar la configuración de PHP (archivo php.ini) para asegurarte de que la línea mysqli.default_socket apunta a la ruta correcta (normalmente /var/run/mysqld/mysqld.sock). Esta parte ya es más avanzada y, si no estás seguro, mejor pide ayuda.
Guía Rápida de Solución de Problemas (Checklist)
Para que no te pierdas, aquí tienes un resumen de los pasos a seguir en orden:
- Reinicia el servicio MySQL desde tu panel de control (Syspanel, cPanel, etc.). Es el primer paso y el más fácil.
- Verifica los datos de conexión en
wp-config.phpoparameters.php. Compara con los datos de tu panel de control. - Comprueba el host de la base de datos. ¿Es
localhosto es otro? Usa el que te indique tu panel. - Revisa los permisos del archivo de configuración (deben ser 644).
- Prueba con
127.0.0.1en lugar delocalhosten el archivo de configuración. - Contacta con tu proveedor de hosting si nada de lo anterior funciona. Ellos tienen acceso a los logs del servidor y podrán ver el error exacto.
Preguntas Frecuentes (FAQ)
¿Este error puede deberse a un ataque de hackers?
Sí, es posible. Un ataque de fuerza bruta o un malware puede saturar la base de datos o modificar los archivos de configuración. Si sospechas de esto, cambia todas tus contraseñas (panel de control, FTP, BD) y revisa los archivos de tu web en busca de código extraño.
¿Perderé mis datos si reinicio el servicio de MySQL?
No. Reiniciar el servicio no borra datos. Simplemente apaga y enciende el servidor de bases de datos. Es como reiniciar tu ordenador: los archivos siguen ahí.
¿Por qué me pasa esto justo después de mover mi web a un nuevo hosting?
Porque los datos de conexión (usuario, contraseña, host) son casi con total seguridad diferentes en el nuevo hosting. Deberás actualizar el archivo de configuración con los nuevos datos que te haya proporcionado tu nuevo proveedor.
¿Qué es "Syspanel" y por qué me hablas de él?
Syspanel es el nombre que le damos al panel de control HestiaCP. Es una herramienta muy popular para gestionar servidores. Si tu hosting lo usa, el puerto de acceso es el 2106 (ejemplo: https://tu-dominio.com:2106).
Espero que esta guía te haya sido de gran ayuda. Como verás, el error de conexión base de datos con el código sqlstate hy000 2002 es frustrante, pero casi siempre tiene una solución clara. Tómate tu tiempo, sigue los pasos con calma y, si te atascas, no dudes en pedir ayuda a tu proveedor de hosting. ¡Buena suerte con tu web!
