Пишите письма → alex@covax.me

Сбрасываем пароль администратора [Drupal 7]

Если вы забыли пароль от аккаунта главного админа сайта на Drupal 7, то это не беда. Главное, не потерять доступ к БД сайта. Пароли всех пользователей храняться в БД в таблице USERS, в поле pass, но не все так просто.

Узнать старый пароль из БД не получится, потому что он, естественно, шифруется. Но вы можете заменить старый пароль в этом поле на новый и зайти в аккаунт уже с ним. Для этого потребуется зашифровать новый пароль (друпал шифрует пароли в MD5) и вставить его в поле pass вместо старого.

Итак, вам нужно проделать следующие действия:

  1. Создать текстовый файл и назвать его например reset.php
  2. Добавить в него код
    <?
    define('DRUPAL_ROOT', getcwd());
    require_once DRUPAL_ROOT . '/includes/password.inc';
    require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    echo user_hash_password('qwerty');
    die();
    

    где 'qwerty' — ваш новый пароль

  3. Залить этот файл в корень сайта и обратиться к нему через браузер.
  4. Полученную строку скопировать и вставить в поле pass таблицы USERS нужному акку.
  5. Зайти на сайт с новым паролем.

Что делать, если это не помогло?

Данный способ помогает в повальном большинстве случаев. Однако есть и исключения. Мне, например, один раз не помогло. Моя трудность заключалась в том, что друпал почему-то не авторизовывал пользователя с uid=1, именно его, под остальными можно было зайти свободно. И дело было не в паролях, т.к. вышеописанным способом пароль я поменял на новый, да и с другими юзерами замена пароля через БД прекрасно работает.

Так что же делать, если по дефолту у главного админа uid=1, но под ним друпал вас не пускает? Я выбрал самое банальное решение — добавил через БД нового пользователя с uid=3 (у меня закрыта регистрация, а под админом не пускает, поэтому пришлось добавлять через БД) и опять же в БД выставил ему приоритет главного админа, который снял с аккаунта uid=1.

Как это сделать?

  1. Через phpVyAdmin заходим в базу, дальше находим таблицу USERS и добавляем строку (если не знаете что значат те или иные поля, то вот тут можно посмотреть значение всех пунктов) с новым юзером.
  2. Идем в таблицу users_roles и в строке uid меняем '1' на тот uid, который присвоили новому пользователю. Строку rid не трогаем, это номер роли.
  3. Заходим под новым аккаунтом и радуемся правам root'а.

Такие дела.