====== 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)]].