Table des matières

Perte du mot de passe de "user 1"

Sources :

Un mot de passe perdu ne peut être retrouvé. Il doit être régénéré

.

Les procédures existantes dans Drupal 6 pour régénérer le mot de passe de user 1 sont inopérantes dans Drupal 7.

Procédure Drupal 7

Prérequis

Si votre hébergement Drupal ne rempli pas ces prérequis1), il existe des échappatoires:

Pas à pas

  1. ouvrir un shell (un terminal) à la racine de l'arborescence de l'application (du site), généralement via ssh
  2. générer un mot de passe par la commande suivante :
    php ./scripts/password-hash.sh mon-mdp

    mon-mdp est remplacé par le nouveau mot de passe souhaité

  3. en retour, votre mot de passe chiffré est affiché, ça ressemble à :
    $S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML
  4. copier la chaîne de caractère renvoyée et la mettre de côté (attention à à bien prendre tous les caractères sans “attraper” d'espace avant ni après)
  5. mettre le site en maintenance (pas obligatoire mais recommandé) :
    drush vset maintenance_mode 1
  6. mettre à jour le mot de passe, dans la base de données :
    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

  7. remettre le site en fonctionnement (selon étape 5)
    drush vset maintenance_mode 0

Passer la requête SQL sans drush

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é.

Virtualmin

  1. Edit Databases
  2. Manage (sur la ligne de la base voulue)
  3. Execute SQL
  4. saisir la requête SQL (sans oublier le “;” final !)
  5. cliquer sur Execute

Webmin

  1. Servers > MySQL Database Server
  2. cliquer sur la base voulue
  3. Execute SQL
  4. saisir la requête SQL (sans oublier le “;” final !)
  5. - cliquer sur Execute

PHPMyAdmin

  1. se connecter à sa base de données
  2. cliquer sur l'onglet SQL
  3. taper la requête SQL (sans oublier le “;” final !)
  4. cliquer sur Exécuter

En ligne de commande

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)"

Pas d'accès shell

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.

Cette procédure de secours est intrinsèquement non-sécurisée et totalement déconseillée si vous pouvez faire autrement.

La procédure est décrite sur Drupal.org : Recovering the administrator password with a PHP file (Drupal7).

1)
Dommage, c'est un mauvais hébergement Drupal :-\
2)
Pensez à changer d'hébergeur…