====== Perte du mot de passe de "user 1" ====== Sources : * [[https://www.drupal.org/node/1023428|Resetting the administrator password with sql-query]] (drupal.org, en) * [[http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/|MySQL Run SQL Queries From A Shell Prompt ]] (en) * [[https://www.digitalocean.com/community/tutorials/using-grep-regular-expressions-to-search-for-text-patterns-in-linux|Using Grep & Regular Expressions to Search for Text Patterns in Linux]] (en) 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 vous avez fait 5 tentatives consécutives avec un mauvais mot de passe, votre accès au site est probablement bloqué. Commencez par le débloquer : [[deblocage_ip_apres_5_tentatives|Déblocage d'une IP après 5 tentatives infructueuses]]. * Avoir accès à un //shell// (terminal) sur le serveur (généralement, via ssh) * Avoir accès la commande //drush//. Si votre hébergement Drupal ne rempli pas ces prérequis((Dommage, c'est un mauvais hébergement Drupal :-\)), il existe des échappatoires: * Si votre accès shell (terminal) ne vous permet pas de lancer la commande drush : [[#passer_la_requete_sql_sans_drush|Passer la requête SQL sans drush]] * Si vous n'avez même d'accès à un shell (terminal) : [[#pas_d_acces_shell|Pas d'accès shell]] ==== Pas à pas ==== - ouvrir un //shell// (un terminal) __à la racine de l'arborescence__ de l'application (du site), généralement via ssh - générer un mot de passe par la commande suivante : php ./scripts/password-hash.sh mon-mdp où //mon-mdp// est remplacé par le nouveau mot de passe souhaité - en retour, votre mot de passe chiffré est affiché, ça ressemble à :$S$CTo9G7Lx28rzCfpn4WB2hUlknDKv6QTqHaf82WLbhPT2K5TzKzML - 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) - mettre le site en maintenance (pas obligatoire mais recommandé) : drush vset maintenance_mode 1 - 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 - 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 === - //Edit Databases// - //Manage// (sur la ligne de la base voulue) - //Execute SQL// - saisir la requête SQL (sans oublier le ";" final !) - cliquer sur //Execute// === Webmin === - Servers > MySQL Database Server - cliquer sur la base voulue - //Execute SQL// - saisir la requête SQL (sans oublier le ";" final !) - - cliquer sur //Execute// === PHPMyAdmin === - se connecter à sa base de données - cliquer sur l'onglet //SQL// - taper la requête SQL (sans oublier le ";" final !) - 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ébergement((Pensez à changer d'hébergeur…)), 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 : [[https://www.drupal.org/node/1556488|Recovering the administrator password with a PHP file (Drupal7)]].