Если у вас нет админ доступа в drupal, но срочно надо его получить, то можно сделать следующие вещи:
- поменять email у админа и пройти процедуру восстановления пароля;
- создать нового пользователя, добавить в базу роль со всеми правами и назначить её вашему пользователю;
- то же что в предыдущем пункте, но с помощью drush :)
Рассмотрим эти варианты далее подробнее.
Админ хак
По сути, этот метод — взлом аккаунта админа. Получив доступ к базе, вы меняете email в учетке суперпользователя :
1 |
UPDATE users SET mail = 'ваш@email.name' WHERE uid = 1; |
Остаётся пройти в раздел /user/password, чтобы запросить одноразовый пароль для восстановления учетки.
Простой, но не очень правильный способ, ведь настоящий админ теряет таким образом доступ к своей учетной записи.
Создание учетной записи через базу данных
Друпал работает с привилегиями посредством назначения ролей. Особняком стоит суперюзер с UID = 1.
Создание пользователя.
Для начала подготовим запись нового пользователя.
1 2 3 |
set @nextuid = (SELECT max(uid) +1 FROM users); INSERT INTO `users` (name, mail, status, uid) VALUES ('myusername', 'valid@email.ru', 1, @nextuid); |
Пароль можно генерировать с помощью процедуры восстановления.
Подключение роли
Если подходящая роль уже есть в базе (таблица role), назначьте её пользователю.
1 2 |
set @role_id = 'id нужной роли'; INSERT INTO users_roles (uid, rid) VALUES (@nextuid, @role_id); |
Но обычно в таблице role всего две стандартные роли:
Потому, вам придется создать роль админа и назначить ей хоть какие то права.
1 2 |
set @role_id = (SELECT MAX(rid) + 1 FROM role); INSERT INTO role (`rid`, `name`, `weight`) VALUES (@role_id, 'admin', 10); |
Все возможные права не получить, используя только базу данных, т.к. permissions объявляются модулями. Но нам достаточно будет прав на доступ к админке и управлению пользователями. Там уж вы сами себе выдадите нужные права.
1 2 3 4 5 6 7 8 9 10 |
INSERT INTO `role_permission` (`rid`,`permission`,`module`) VALUES (@role_id, 'access administration pages', 'system'), (@role_id, 'administer site configuration', 'system'), (@role_id, 'access site in maintenance mode', 'system'), (@role_id, 'administer permissions', 'user'), (@role_id, 'administer users', 'user'); INSERT INTO users_roles (uid, rid) VALUES (@nextuid, @role_id); |
Когда роль создана и назначена, войдите на сайт как только что созданный пользователь и перейдите в раздел назначения прав /admin/people/permissions (Drupal 7), чтобы добавить необходимые разрешения вашей роли.
Создаём пользователя — админа, используя drush
Добавим пользователя myusername/letmein:
1 |
drush user-create myusername --mail="person@example.com" --password="letmein" |
Создадим новую роль admin:
1 |
drush role-create 'admin' 'Admin role' |
Назначим роль пользователю:
1 2 3 |
drush user-add-role "admin" --name=myusername # для более новых версий drush (c 11й версии): drush user-add-role "admin" myusername |
А теперь самое важное — назначим роли admin все возможные права:
1 |
drush eval "user_role_grant_permissions(user_role_load_by_name('admin')->rid, array_keys(user_permission_get_modules()));" |
Теперь все готово для работы в админке :)