Error de conexión con la base de datos en WordPress: las 6 causas reales y cómo diagnosticarlas sin romper nada
"Error establishing a database connection" es uno de los mensajes más aterradores en WordPress. Tu sitio se ve muerto, el admin no carga, y nadie sabe qué pasó. Te explicamos las 6 causas reales, cómo diagnosticarlas paso a paso, y cuándo es una emergencia que requiere intervención inmediata.
En una línea: El error de conexión con la base de datos casi nunca es "la base de datos se rompió". En el 80% de los casos es credenciales mal configuradas, un servidor MySQL saturado, o un disco lleno. En el 20% restante es corrupción de tablas o un problema de infraestructura más serio. Este artículo te enseña a distinguirlos.
1. Qué significa realmente este error
Cuando WordPress te muestra el mensaje "Error establishing a database connection", lo que está diciendo es simple: no puede comunicarse con el servidor de base de datos MySQL/MariaDB.
WordPress guarda todo el contenido (entradas, páginas, productos, usuarios, configuraciones) en una base de datos MySQL. Cada vez que alguien visita tu sitio, WordPress hace consultas a esa base de datos para obtener el contenido y mostrarlo. Si esa conexión falla, el sitio no puede cargar nada.
No confundas este error con "One or more database tables are unavailable". Ese segundo error significa que WordPress SÍ se conecta a la base de datos, pero encuentra tablas corruptas o faltantes. Son problemas distintos con soluciones distintas. Este artículo se enfoca en el primero: cuando WordPress no puede conectarse en absoluto.
El error se ve así en el frontend:
Y en el admin puede verse igual, o mostrar un mensaje adicional:
# Si activas WP_DEBUG, puedes ver más detalles:
WordPress database error: [Access denied for user 'usuario'@'localhost']
2. Las 6 causas reales
Después de más de 9,700 casos resueltos desde 2015, estas son las causas que vemos consistentemente. No son teorías: son los diagnósticos reales de nuestra bitácora.
Credenciales incorrectas en wp-config.php
El archivo wp-config.php contiene las credenciales de conexión a la base de datos: nombre de usuario, contraseña, nombre de la base de datos y host del servidor MySQL. Si cualquiera de estos valores es incorrecto, WordPress no puede conectarse.
¿Por qué pasa? Después de una migración mal ejecutada, un cambio de hosting, o una edición manual del archivo. También es común después de que el hosting cambia las credenciales de MySQL sin avisar.
Cómo verificarlo: Revisa las siguientes líneas en wp-config.php:
define( 'DB_USER', 'usuario_mysql' );
define( 'DB_PASSWORD', 'contraseña_mysql' );
define( 'DB_HOST', 'localhost' ); // o la IP del servidor MySQL
Si los valores no coinciden con los que te dio tu hosting, ese es tu problema.
Servidor MySQL saturado o caído
El servidor MySQL puede estar funcionando pero saturado: demasiadas conexiones simultáneas, queries lentas que bloquean la base de datos, o falta de memoria asignada. En estos casos, WordPress intenta conectarse pero el servidor no responde a tiempo.
¿Por qué pasa? Es especialmente común en servidores compartidos donde múltiples sitios comparten el mismo MySQL. También ocurre en VPS mal configurados o con catálogos grandes de WooCommerce que generan queries pesadas.
Cómo verificarlo: Si tienes acceso SSH al servidor, ejecuta:
# o
sudo service mysql status
Si el servicio está caído, ese es tu problema. Si está corriendo pero lento, revisa los procesos activos con mysqladmin processlist.
Disco del servidor lleno
MySQL necesita espacio en disco para escribir logs, archivos temporales y datos. Si el disco está al 100%, MySQL no puede funcionar correctamente y rechaza nuevas conexiones.
¿Por qué pasa? Logs de errores que crecen sin control, backups que se guardan en el mismo servidor, o sitios con catálogos enormes sin optimización.
Cómo verificarlo: Por SSH:
Si / o /var están al 100%, ese es tu problema. Necesitas liberar espacio antes de que MySQL pueda volver a funcionar.
Base de datos corrupta o inexistente
La base de datos existe pero está corrupta (tablas dañadas, índices rotos), o directamente no existe (fue eliminada por error o nunca se creó correctamente durante una migración).
¿Por qué pasa? Cortes de energía durante operaciones de escritura, migraciones mal ejecutadas, o errores humanos al manipular phpMyAdmin.
Cómo verificarlo: Accede a phpMyAdmin o por SSH y verifica que la base de datos existe y tiene las tablas esperadas (wp_posts, wp_users, wp_options, etc.). Si las tablas están marcadas como "en uso" o "corruptas", ese es tu problema.
Firewall o restricciones de red bloqueando la conexión
El servidor MySQL está funcionando y las credenciales son correctas, pero un firewall (del hosting, del servidor, o de red) está bloqueando la conexión entre WordPress y MySQL.
¿Por qué pasa? Es común en configuraciones donde WordPress y MySQL están en servidores separados (arquitectura distribuida), o después de cambios en las reglas de firewall del hosting.
Cómo verificarlo: Desde el servidor donde está WordPress, intenta conectarte manualmente a MySQL:
Si recibes un error de timeout o "connection refused", es un problema de red/firewall.
Límite de conexiones MySQL alcanzado
MySQL tiene un límite máximo de conexiones simultáneas (max_connections). Si tu sitio tiene mucho tráfico o hay queries lentas que mantienen conexiones abiertas, puedes alcanzar ese límite y nuevas conexiones serán rechazadas.
¿Por qué pasa? Sitios con tráfico alto sin caché adecuada, plugins mal optimizados que hacen queries innecesarias, o ataques de fuerza bruta que saturan el login.
Cómo verificarlo: Por SSH:
Revisa el valor de Threads_connected vs max_connections. Si están cerca, ese es tu problema.
No reinstales WordPress. No borres el archivo wp-config.php. No elimines la base de datos "para empezar de cero". Cada una de estas acciones puede convertir un problema diagnosticable en una pérdida total de datos. Primero diagnostica, después actúa.
3. Protocolo de diagnóstico paso a paso
Este es el orden que seguimos en los sitios bajo nuestra custodia. No lo cambies: seguir el orden correcto te ahorra horas de pruebas innecesarias.
Verifica que el servicio MySQL está corriendo
Antes de tocar cualquier archivo, confirma que el servidor MySQL está activo. Si tienes acceso al panel de hosting (cPanel, Plesk, etc.), busca la sección de servicios o estado del servidor. Si tienes SSH, ejecuta sudo systemctl status mysql. Si el servicio está caído, ese es tu problema: reinícialo y monitorea.
Revisa el espacio en disco
Un disco lleno es una causa frecuente y fácil de verificar. Por SSH: df -h. Si / o /var están al 100%, necesitas liberar espacio antes de continuar. Revisa logs antiguos, backups en el servidor, y archivos temporales.
Verifica las credenciales en wp-config.php
Abre el archivo wp-config.php y revisa las constantes DB_NAME, DB_USER, DB_PASSWORD y DB_HOST. Compáralas con las credenciales que te dio tu hosting. Si no coinciden, ese es tu problema. Si no tienes las credenciales, contacta a tu hosting.
Prueba la conexión manualmente
Desde el servidor, intenta conectarte a MySQL manualmente con las credenciales de wp-config.php:
Si te conectas correctamente, el problema no es MySQL ni las credenciales: es WordPress. Si no te conectas, el error está en MySQL, las credenciales o la red.
Revisa el log de errores de MySQL
El log de MySQL (usualmente en /var/log/mysql/error.log o /var/log/mysqld.log) te dirá exactamente qué está pasando: errores de autenticación, disco lleno, tablas corruptas, o límites alcanzados. Este log es tu mejor fuente de verdad.
Verifica la integridad de las tablas
Si todo lo anterior está bien, el problema puede ser tablas corruptas. Desde phpMyAdmin o por SSH, ejecuta CHECK TABLE wp_posts (y otras tablas críticas). Si encuentras errores, necesitas repararlas con REPAIR TABLE o restaurar desde backup.
4. Caso real: el servidor que no era el problema
Sitio corporativo con error de base de datos intermitente
Síntoma: Un sitio corporativo con 3,000 visitas diarias mostraba el error de conexión con la base de datos de forma intermitente. A veces cargaba, a veces no. El cliente estaba convencido de que el servidor estaba fallando y pidió migración urgente.
Diagnóstico: Revisamos el log de errores de MySQL y encontramos el mensaje: Too many connections. El servidor estaba alcanzando el límite de max_connections (151 por defecto). El problema no era el servidor en sí, sino que el sitio tenía un plugin de estadísticas que hacía una query a la base de datos en cada visita, sin caché. Con 3,000 visitas diarias, eso eran cientos de conexiones simultáneas.
Solución: (1) Aumentar max_connections a 500 en la configuración de MySQL. (2) Desactivar el plugin de estadísticas y reemplazarlo por una solución que use caché. (3) Implementar caché de objetos con Redis para reducir queries repetitivas.
Resultado: El error desapareció por completo. No fue necesaria ninguna migración. El cliente ahorró el costo de una migración innecesaria (estimado en $25,000 MXN) y resolvió el problema real con una inversión de $8,000 MXN en optimización.
El error de conexión con la base de datos casi nunca es lo que parece. El instinto es culpar al servidor, al hosting, o a WordPress. Pero en el 80% de los casos, el problema es una configuración específica que se puede diagnosticar y resolver sin migraciones dramáticas.
— Manuel Macedo, Mexico WordPress5. Cuándo es urgente y cuándo puede esperar
No todos los errores de base de datos requieren atención inmediata. Esta tabla te ayuda a priorizar:
| Situación | Urgencia | Qué hacer |
|---|---|---|
| Sitio en producción completamente caído | Crítica | Diagnóstico inmediato. Cada hora son visitas y ventas perdidas. |
| Ecommerce con checkout fallando | Crítica | Emergencia comercial. Intervención en menos de 1 hora. |
| Error intermitente (a veces carga, a veces no) | Alta | Diagnóstico en las próximas 24 horas. Puede escalar. |
| Error solo en el admin, frontend funciona | Media | Investigar en los próximos 3-5 días. No es urgente pero debe resolverse. |
| Error en sitio de staging o desarrollo | Baja | Resolver cuando haya tiempo disponible. No afecta producción. |
6. Cómo prevenir este error
La mayoría de los errores de conexión con la base de datos son prevenibles. Estas son las prácticas que recomendamos:
- Backups verificados fuera del servidor: Si tu base de datos se corrompe, necesitas un backup que restaura. No basta con generar el backup: hay que probar que restaura. Y debe estar fuera del servidor (S3, Backblaze, almacenamiento externo).
- Monitoreo de recursos del servidor: Si sabes que tu disco está al 80% o que MySQL está cerca del límite de conexiones, puedes actuar antes de que el sitio se caiga.
- Caché de objetos con Redis o Memcached: Reduce drásticamente las queries a la base de datos, especialmente en sitios con tráfico alto o catálogos grandes de WooCommerce.
- Optimización de queries lentas: Si tu sitio tiene queries que tardan más de 1 segundo, están saturando MySQL innecesariamente. Identifícalas y optimízalas.
- Actualizaciones con staging: Nunca actualices WordPress, plugins o tema directamente en producción sin probar primero en un entorno de staging. Muchas roturas de base de datos vienen de actualizaciones mal ejecutadas.
- Mantenimiento profesional: Si no tienes tiempo o conocimiento para monitorear recursos, optimizar queries y hacer backups verificados, contrata a alguien que lo haga. El costo del mantenimiento es una fracción del costo de una caída.
Un sitio bajo mantenimiento profesional rara vez tiene errores de base de datos catastróficos. No porque el mantenimiento los prevenga mágicamente, sino porque los problemas se detectan y resuelven antes de que se conviertan en caídas. El monitoreo continuo es la diferencia entre un incidente de 15 minutos y una emergencia de 3 días.
¿Tu sitio tiene error de conexión con la base de datos?
Revisamos tu sitio por fuera, sin costo. En 30 minutos sabes si el problema es de credenciales, servidor saturado, disco lleno o tablas corruptas. Si hay que entrar, el diagnóstico se descuenta al 100% si contratas la reparación.
7. Preguntas frecuentes
No necesariamente. El error de conexión con la base de datos significa que WordPress no puede comunicarse con MySQL, pero tu contenido sigue en la base de datos (a menos que haya corrupción o eliminación). En la mayoría de los casos, una vez que resuelves el problema de conexión, tu contenido vuelve a estar disponible. Por eso es crítico no tomar acciones drásticas como reinstalar WordPress o borrar la base de datos antes de diagnosticar.
Depende de la causa. Si es un problema de credenciales en wp-config.php y tienes acceso al archivo, puedes corregirlo tú mismo. Si es un problema de servidor MySQL saturado, disco lleno o tablas corruptas, necesitas acceso SSH y conocimiento técnico. Si no tienes experiencia con servidores, bases de datos o líneas de comando, lo más seguro es contratar a un profesional. Un error en el diagnóstico puede convertir un problema de 2 horas en una pérdida total de datos.
El 90% de las veces, el hosting dice que es WordPress y WordPress dice que es el hosting. La verdad suele estar en el log de errores de MySQL: si los errores mencionan límites de conexiones, disco lleno o problemas de permisos, es el servidor. Si los errores mencionan credenciales incorrectas o tablas faltantes, es la configuración de WordPress. Si no sabes leer los logs, necesitas un diagnóstico profesional. Solicita un diagnóstico aquí.
Depende de la causa. Un problema de credenciales mal configuradas puede resolverse en 30 minutos. Un problema de servidor MySQL saturado puede tomar 2-3 horas (diagnóstico, optimización, pruebas). Un problema de tablas corruptas con restauración de backup puede tomar 4-6 horas. El diagnóstico es pagado y se descuenta al 100% si contratas la reparación con nosotros.
Tres cosas: (1) Monitoreo continuo de recursos del servidor (disco, memoria, conexiones MySQL). (2) Backups verificados fuera del servidor, con pruebas de restauración periódicas. (3) Mantenimiento profesional que incluya actualizaciones con staging, optimización de queries y revisión de logs. Si tu sitio es crítico (ecommerce, medio de comunicación, corporativo con tráfico), considera un plan de mantenimiento con monitoreo 24/7. El costo del mantenimiento es una fracción del costo de una caída.
