NuevoBlack Friday: 50 % de descuento en tu primer pago
Solución de problemas de WordPress

Error estableciendo una conexión de base de datos

WordPress cargado, leer wp-config.php, y no pudo obtener una respuesta de MySQL. Cada página en el sitio está en blanco hasta que pueda.

Error establishing a database connection

Respuesta breve

Nueve veces en diez las credenciales en wp-config.php ya no coinciden con la base de datos. Confirme con una conexión directa usando exactamente esos cuatro valores; si eso se conecta, el problema no es las credenciales y la siguiente sección le dice dónde buscar en su lugar.

Diagnóstico

Las causas más probables primero.

Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.

CausaCómo comprobarloSolución
credenciales incorrectas en wp-config.phpConectar a mano con los mismos cuatro valores wp-config.php utiliza. Si eso falla con "Access denied", el archivo es el problema y nada más necesita pruebas.DB_NAME, DB_USER, DB_PASSWORD y DB_HOST. Una migración es la razón habitual por la que se desvían: el archivo trajo los valores del antiguo anfitrión con él.
El servidor de bases de datos no está funcionandoLa misma conexión directa falla con "No se puede conectar" en lugar de "Access denied". La distinción entre esos dos mensajes es todo el diagnóstico.Inicio MySQL. Si no se mantendrá en pie, su propio registro de errores nombra la razón, y en el alojamiento compartido que la razón es generalmente la memoria.
La base de datos alcanzó su límite de conexiónEl error es intermitente - el sitio funciona, entonces no, entonces lo hace. Una conexión directa tiene éxito mientras los visitantes todavía están viendo el error.Elevar max_connections, o encontrar lo que está manteniendo conexiones abiertas. Un plugin que abre una conexión por petición y nunca cerrar es el culpable común.
Una mesa corruptaSólo algunas páginas fallan, o cargas wp-admin mientras que el extremo frontal no. WordPress puede ofrecer un enlace de reparación en lugar de este error.Ejecutar una reparación. Establecer WP_ALLOW_REPAIR en wp-config.php, visite /wp-admin/maint/repair.php, luego retire la constante - que página no tiene autenticación.
DB_HOST nombra algo inalcableLas credenciales son correctas y MySQL está levantado, pero el host en wp-config.php no resuelve desde el servidor web.Usa el nombre de host que el servidor web puede llegar. En las pilas containerizzate que es un nombre de servicio, no localhost, y localhost es lo que contienen la mayoría de los configs migrados.
Guía

Solución paso a paso.

Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.

  1. Lea lo que wp-config.php dice en realidad

    No es lo que recuerdas establecer, las cuatro constantes que importan están cerca de la parte superior del archivo.

    grep -E "DB_(NAME|USER|PASSWORD|HOST)" wp-config.php
  2. Prueba esos valores exactos contra MySQL

    Esta es la prueba que divide el problema en dos. "Access denied" significa que las credenciales están equivocadas; "No se puede conectar" significa que el servidor no está respondiendo.

    mysql --user='DB_USER' --password='DB_PASSWORD' --host='DB_HOST' 'DB_NAME' -e 'SELECT 1;'
  3. Si las credenciales estaban equivocadas, corrígelas

    Editar wp-config.php, o establecerlos con WP-CLI para que no tenga que encontrar las citas correctas usted mismo.

    wp config set DB_PASSWORD 'the-real-password'
    wp db check
  4. Si el servidor estaba abajo, mira por qué antes de reiniciarlo

    Un MySQL que murió una vez morirá de nuevo. Su registro de errores nombra la razón, y fuera de memoria es la respuesta más común en un pequeño servidor.

    tail -n 50 /var/log/mysql/error.log
  5. Confirmación de WordPress, no de la cáscara

    Una conexión de shell demuestra que MySQL es accesible desde la cáscara. Sólo WordPress puede probar que es accesible desde WordPress.

    wp db check && wp option get siteurl
En MagicWP

De esto se encarga la plataforma.

Las credenciales nunca se derivan aquí, porque wp-config.php no las lleva: las lee del medio ambiente con getenv(), por lo que rotar una contraseña es un cambio en un lugar en lugar de una edición que tiene que repetirse en un archivo. La base de datos se ejecuta en su propio contenedor con su propio margen de memoria, por lo que un proceso PHP ocupado no puede morir de hambre, y fijar sitio re-punte un sitio restaurado en la base de una sola acción.

Preguntas frecuentes

Preguntas frecuentes.

¿Por qué empezó esto por sí solo, sin nada cambió?
Algo cambió incluso si no lo cambiaste: un host rota una contraseña, un servidor de base se quedó sin memoria y fue reiniciado, o un plugin de respaldo restaurado un wp-config.php más antiguo. La prueba de conexión directa te dice cuál de los que era, porque el mensaje de fallo difiere.
¿Significa que mis datos se han ido?
Casi nunca. El error es acerca de llegar a la base de datos, no sobre el contenido de la misma. La corrupción es la causa menos común en esta lista, e incluso entonces es generalmente una tabla en lugar de todo.
¿Debería usar la página de reparación incorporada?
Sólo brevemente. La configuración WP_ALLOW_REPAIR abre /wp-admin/maint/repair.php a cualquiera que conozca la URL, sin necesidad de login, así que retírese el momento en que la reparación termine.
El sitio funciona y luego se rompe cada pocos minutos. ¿Qué es eso?
El agotamiento de la conexión en lugar de las credenciales malas. Las solicitudes tienen éxito mientras una conexión es libre y falla mientras que ninguna es, por lo que parece aleatoria. Encuentre lo que está manteniendo conexiones en lugar de elevar el límite y la espera.
Errores relacionados

Si el problema era otro.

Estos errores pueden parecerse en el navegador.