Este mensaje es el mismo tanto si la contraseña está mal, como si el servidor está parado, el disco lleno o se ha alcanzado el límite de conexiones. Adivinar entre cuatro es más lento que probar, y la prueba es una sola orden.

Prueba las credenciales, no el sitio

mysql -u dbuser -p -h localhost dbname
  • Access denied for user: usuario o contraseña equivocados, o el usuario no tiene permisos sobre esa base.
  • Can't connect to local MySQL server: el servicio no está en marcha.
  • Unknown database: el nombre está mal, o la base nunca se creó en este servidor.
  • Too many connections: se ha alcanzado el límite.

Acceso denegado

Lee las credenciales que el sitio usa de verdad, no las que recuerdas.

grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" wp-config.php

Una contraseña con una comilla o una barra invertida es una causa frecuente: está bien en el panel y mal en el archivo, porque se perdió el escapado.

El servicio no está en marcha

systemctl status mariadb
systemctl start mariadb
journalctl -u mariadb --since "30 min ago" | tail -30

Si arranca y se vuelve a parar, el registro nombra el motivo. Un disco lleno y una tabla corrupta son los dos habituales.

Demasiadas conexiones

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
Subir max_connections cuando el problema real son las consultas lentas solo compra minutos. Cada conexión cuesta memoria, y un servidor que se queda sin RAM es peor que uno que rechaza una conexión.

Después de una mudanza

Una base trasladada a otro servidor suele necesitar que DB_HOST pase de localhost a una dirección, y un usuario con permisos desde esa dirección en vez de desde localhost.

En el alojamiento de EGPHP las credenciales están en EGPNL, dentro de Bases de datos, y el panel muestra el host que debe usar el sitio. Copia de ahí en vez de teclear.