Drupal 7 смена пароля администратора через MysQL

В Drupal 7 система кодирования паролей отличается от прошлых версий, где пароль был просто закодирован алгоритмом md5.

Представим гипотетичесскую ситуацию, что вы забыли пароль администратора к сайту. У вас есть доступ к MySQL, но почта с сайта не отправляется, поэтому воспользоваться восстановлением пароля на e-mail вы не можете.

Что можно предпринять в данном случае?

  1. Если есть доступ к SSH то запускаем скрипт
    scripts/password-hash.sh some-password копируем полученный хэш и в phpMyAdmin выполняем команду
    UPDATE `user` SET pass = 'хэш пароля' WHERE uid = 1 Вместо uid = 1 можно подставить идентификатор другого нужного нам пользователя.
    Еще проще вставить хэш прямо в строку нужного пользователя в таблице users, так можно сменить пароль не только у админа, но и у любого пользователя.
  2. Если доступа к SSH нет, то это не беда, создаем в корне сайта php скрипт, например, reset-pass.php следующего содержания
    1. <?
    2. define('DRUPAL_ROOT', getcwd());
    3. require_once DRUPAL_ROOT . '/includes/password.inc';
    4. require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    5. drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    6. header("Content-Type: text/plain; charset=utf-8");
    7. echo user_hash_password('новый_пароль');
    8. die();
    Запускаем его и получаем тот же самый хэш, что и в первом пункте

  3. Используем Drush
    drush user-password UserName --password=NewPassword