Changer le mot de passe administrateur Drupal

Lorsque vous récupérez des installations Drupal sans autres informations (nom d'utilisateur et mot de passe de l'administrateur par exemple), vous devez d'abord de réinitialiser avant de pouvoir commencer à travailler. Pour cela il suffit de le modifier en base de données.

Sous Drupal 6, c'était simple, il suffisait de récupérer le hash MD5 de votre mot de passe (en passant par exemple par un service en ligne) et ensuite de l'insérer dans votre base via phpMyAdmin par exemple via une requête SQL maison :

1
        UPDATE users SET pass = 'votre hash ici' WHERE uid = 1;

Cependant, MD5 devenant de plus en plus utilisé, des dictionnaires sont apparus en permettent parfois de retrouver un mot de passe à partir d'un hash. Quelqu'un qui aurait accès à votre base de données serait alors capable de faire tout ce qu'il veut.

Drupal 7 a mis en place une sécurité accrue grâce à un mot de passe salted (salé) : on rajoute en fait une chaîne aléatoire avant de hasher le tout avec un algorithme plus récent : SHA512. La méthode de réinitialisation devient donc un poil plus compliquée. Le moyen le plus simple est de créer un fichier .php à la racine de votre installation Drupal et d'y coller le code ci dessous. Il suffit de modifier les variables de mot de passe et d'uid à votre convenance et de visiter cette page dans votre navigateur. N'oubliez pas de supprimer le fichier après cette opération !

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$pwd = 'admin';
$uid = 1;
 
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
 
$hash = user_hash_password($pwd);
echo db_query("UPDATE users SET pass = :hash WHERE uid = :uid", array(':hash'=> $hash, ':uid'=> $uid)) ? "Mot de passe change en '$pwd'" : 'Erreur lors du changement';
?>

EDIT: Astuce encore plus rapide qui m'a été reportée par Haza` si disposez d'un accès SSH et de drush, il suffit d'exécuter la commande drush upwd (ou drush user-password) pour modifier rapidement le mot de passe de n'importe quel utilisateur.