Questo messaggio è identico che la password sia sbagliata, che il server sia fermo, che il disco sia pieno o che il limite di connessioni sia stato raggiunto. Indovinare fra quattro è più lento che provare, e la prova è un solo comando.

Prova le credenziali, non il sito

mysql -u dbuser -p -h localhost dbname
  • Access denied for user — utente o password sbagliati, oppure l'utente non ha permessi su quel database.
  • Can't connect to local MySQL server — il servizio non è in esecuzione.
  • Unknown database — il nome è sbagliato, oppure il database su questo server non è mai stato creato.
  • Too many connections — il limite è stato raggiunto.

Accesso negato

Leggi le credenziali che il sito usa davvero, non quelle che ricordi.

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

Una password che contiene un apice o una barra rovesciata è una causa frequente: nel pannello è giusta e nel file è sbagliata, perché la protezione dei caratteri è andata perduta.

Il servizio non è in esecuzione

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

Se parte e si ferma subito, il registro nomina il motivo. Un disco pieno e una tabella danneggiata sono i due soliti.

Troppe connessioni

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
Alzare max_connections quando il problema vero sono le interrogazioni lente compra solo qualche minuto. Ogni connessione costa memoria, e un server che resta senza RAM è peggio di uno che rifiuta una connessione.

Dopo un trasloco

Un database spostato su un altro server richiede di solito che DB_HOST passi da localhost a un indirizzo, e un utente autorizzato da quell'indirizzo anziché da localhost.

Sull'hosting EGPHP le credenziali stanno in EGPNL, sotto Database, e il pannello mostra l'host che il sito deve usare. Copia da lì invece di digitare.