直接在数据库中添加新用户


13

我已经将这些文件提供给Drupal站点,以便可以创建一个新主题。但是,我没有得到Drupal管理员用户/密码的日期,因此我无法登录到admin区域。有没有一种方法可以直接在数据库中创建新用户或其他方法?

Answers:


10

您可以通过在用户表中添加一行来创建新用户。密码字段必须包含MD5哈希密码。您可以使用在线MD5生成器,或者,如果您使用的是PHPMyAdmin,请在输入纯密码的文本框旁边选择MD5功能。记下您新创建的用户的用户ID(uid)。之后,您需要在角色表中找到一个具有足够权限的角色。找到角色ID(rid),然后在users_roles表的新行中输入uid和rid。

如果没有授予管理员访问权限的角色,则由于客户端与用户1进行了所有操作,因此您需要执行一些较脏的技巧。将用户1的密码哈希保存在某处,并临时为用户1添加新密码。然后以用户1登录,为您自己创建一个新帐户,一个具有足够权限的新角色,并将您自己添加到该角色中。之后,在数据库中编辑用户1并恢复密码。我可以建议管理员角色来强制角色始终具有所有权限。


13

有一种更简单的方法。

  1. 进入数据库,更改ID为1的用户的电子邮件地址字段,并将其设置为您的电子邮件地址。
  2. 转到http://mysite/user并单击密码恢复链接。
  3. 输入您的电子邮件地址,您将获得密码恢复链接。

当然,这是假设您的开发系统允许drupal开箱即用地发送邮件。对于大多数linux和osx盒来说都是如此,但对于Windows来说却不是。


1
这真的很容易。完成此操作后,OP可以创建一个新用户,并在确实有必要的情况下为用户#1设置电子邮件。
kiamlaluno

更容易将是使用drush uli作为用户1.登录
mbomb007

9

您还可以使用Drush创建用户并分配角色,以及更改现有用户的密码。

Drush是Drupal的命令行外壳和脚本编写界面,Drupal是名副其实的瑞士军刀,旨在使我们其中一些工作时间都花在命令提示符上的人变得更轻松。


1
drush help uli
Drupac 2012年


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

这应该够了吧。

来源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.