Ce message est le même que le mot de passe soit faux, que le serveur soit arrêté, que le disque soit plein ou que la limite de connexions soit atteinte. Deviner entre quatre est plus lent que tester, et le test tient en une commande.

Testez les identifiants, pas le site

mysql -u dbuser -p -h localhost dbname
  • Access denied for user — mauvais utilisateur ou mauvais mot de passe, ou l'utilisateur n'a aucun droit sur cette base.
  • Can't connect to local MySQL server — le service ne tourne pas.
  • Unknown database — le nom est faux, ou la base n'a jamais été créée sur ce serveur.
  • Too many connections — la limite est atteinte.

Accès refusé

Lisez les identifiants que le site utilise réellement — pas ceux dont vous vous souvenez.

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

Un mot de passe contenant une apostrophe ou une barre oblique inverse est une cause fréquente : il est juste dans le panneau et faux dans le fichier, parce que l'échappement s'est perdu.

Le service ne tourne pas

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

S'il démarre puis s'arrête aussitôt, le journal nomme la raison. Un disque plein et une table corrompue sont les deux habituelles.

Trop de connexions

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';
Relever max_connections quand le vrai problème est la lenteur des requêtes n'achète que des minutes. Chaque connexion coûte de la mémoire, et un serveur à court de RAM est pire qu'un serveur qui refuse une connexion.

Après un déménagement

Une base déplacée sur un autre serveur demande en général de changer DB_HOST de localhost vers une adresse, et un utilisateur autorisé depuis cette adresse plutôt que depuis localhost.

Sur l'hébergement EGPHP, les identifiants se trouvent dans EGPNL sous « Bases de données », et le panneau indique l'hôte que le site doit utiliser. Copiez depuis là plutôt que de taper.