Добавление нового пользователя непосредственно в базу данных


13

Мне дали файлы на сайт Drupal, чтобы я мог создать новую тему. Мне, однако, не дали дату имени пользователя и пароля администратора Drupal, поэтому я не могу войти в область администратора. Есть ли способ, которым я могу создать нового пользователя непосредственно в базе данных или каким-либо другим способом?

Ответы:


10

Вы можете создать нового пользователя, добавив строку в таблицу пользователей. Поле пароля должно содержать хешированный пароль MD5. Вы можете использовать онлайн-генераторы MD5 или, если вы используете PHPMyAdmin, выбрать функцию MD5 рядом с текстовым полем, где вы вводите свой простой пароль. Запишите идентификатор пользователя (uid) вашего нового пользователя. После этого вам нужно найти роль с достаточными разрешениями в таблице ролей. Найдите идентификатор роли (рид) и введите uid и рид в новой строке в таблице users_roles.

Если нет роли, которая дает администратору доступ, потому что клиент делает все с пользователем 1, вам нужно выполнить немного более грязный трюк. Сохраните где-нибудь хэш пароля пользователя 1 и временно добавьте новый пароль для пользователя 1. Затем войдите в систему с пользователем 1, создайте для себя новую учетную запись, новую роль с достаточными разрешениями и добавьте себя в эту роль. После этого отредактируйте пользователя 1 в базе данных и восстановите пароль. Я могу порекомендовать роль администратора, чтобы у роли всегда были все разрешения.


13

Есть намного более простой способ.

  1. Зайдите в БД и измените поле адреса электронной почты пользователя с идентификатором 1 и установите его в свой адрес электронной почты.
  2. Перейдите по http://mysite/userссылке и нажмите на ссылку для восстановления пароля.
  3. Введите адрес электронной почты, и вы получите ссылку для восстановления пароля.

Конечно, это предполагает, что ваша система разработки позволяет drupal отправлять почту из коробки. Это верно для большинства Linux и OSX, но не для Windows.


1
Это действительно проще. После этого OP может создать нового пользователя и вернуть электронное письмо для пользователя # 1, как это было раньше, если это действительно необходимо.
kiamlaluno

Еще проще было бы использовать drush uliдля входа в систему как пользователя 1.
mbomb007

9

Вы также можете создавать пользователей и назначать роли с Drush , а также изменять пароли для существующих пользователей.

Drush - это оболочка командной строки и интерфейс сценариев для Drupal, настоящего швейцарского армейского ножа, призванного облегчить жизнь тем из нас, кто проводит часть рабочего времени, взламывая командную строку.


1
drush help uli
Drupac


2
$user = array();
$user['status'] = 1; //for active user
$user['mail'] = 'test@test.com';
//profile field $user['profile_field_fname'] = 'Vikrant';
$user_account = array();
if($user_uid = module_name_get_uid_by_email($user['mail'])) { //It will use for update.
   $user_account = user_load(array(uid => $user_uid));
}

//save or update user information.
user_save($user_account, $user);

//Check existing record by email.
function module_name_get_uid_by_email($email){
   $query = db_query("SELECT uid FROM {users} WHERE mail = '%s'",$email);
   $result = db_fetch_object($query);
   return $result->uid;
}

Попробуйте приведенный выше код.


Спасибо - глупый вопрос: в какой файл я поместил бы этот код?
Джейн

2

Если вам случится использовать drush, вы можете использовать, drush upwd [user] --password="[newpassword]" который (повторно) устанавливает пароль для пользователя с указанным именем. ( upwdкороткая версия команды для user-password)

Пример из drush: drush user-password someuser --password="correct horse battery staple" который устанавливает указанный пароль для имени пользователя "someuser".


1

Что вы можете сделать, это зайти в базу данных, сохранить старый пароль администратора, сбросить пароль администратора, а затем войти в систему, создать нового пользователя, а затем сбросить пароль администратора до того, который был до того, как вы начали.

Если у вас есть доступ к drush, вы можете сделать это:

cd <drupal root directory>
php scripts/password-hash.sh 'drupal'

затем возьмите хешированный пароль MD5, сгенерированный выше, и:

drush sql-cli
update users set name='admin', pass='pasted_big_hash_from_above' where uid=1;
quit

Это должно делать свое дело.

( источник )

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.