Sources :
.
Si votre hébergement Drupal ne rempli pas ces prérequis1), il existe des échappatoires:
php ./scripts/password-hash.sh mon-mdp
où mon-mdp est remplacé par le nouveau mot de passe souhaité
$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML
drush vset maintenance_mode 1
drush sqlq 'UPDATE users SET pass="$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML" WHERE uid = 1;'
sans oublier de remplacer $S$CTo9G7… par la chaîne de caractères correspondant à votre mot de passe
drush vset maintenance_mode 0
Si vous ne disposez pas de drush, vous n'avez pas pu passer la commande cruciale de mise à jour du mot de passe : drush sqlq …
Heureusement, il existe plusieurs manières d'atteindre le même objectif. Quelques-unes sont présentées ci-après. Dans tous les cas, on souhaite passer la requête SQL suivante :
UPDATE users SET pass="$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML" WHERE uid = 1;
où l'on aura pris soin de remplacer $S$CTo… par le mot de passe chiffré.
mysql -udb-user -pdb-pwd -e 'UPDATE users SET pass="$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML" WHERE uid = 1;' db-name
où vous aurez remplacé les 3 db-xxx par les valeurs appropriées et $S$CTo… par votre nouveau mot de passe chiffré.
Si vous avez oublié vos identifiants de base de données (les 3 db-xxx) :
cat sites/default/settings.php | grep -E "^.[^\*].*(database|username|password)"
Si vous ne disposez pas d'un accès à un shell (terminal) sur votre espace d'hébergement2), vous pouvez vous rabattre sur votre accès par FTP.
La procédure est décrite sur Drupal.org : Recovering the administrator password with a PHP file (Drupal7).