【问题标题】:Change admin password in drupal 7在 drupal 7 中更改管理员密码
【发布时间】:2014-06-05 03:58:18
【问题描述】:

我正在使用内置的 Drupal 7 用户模块、用户注册前、忘记密码电子邮件和所有这些东西。

我忘记了我的管理员密码。我可以访问托管在 1and1.com 上的网站,还可以访问 mysql?

是否可以通过 SQL 更改密码或电子邮件地址,以便我可以访问管理页面?

如果可能怎么办?有人可以帮我解决这个问题吗?

谢谢!

【问题讨论】:

标签: drupal drupal-7


【解决方案1】:

如果您安装了Drush,您只需从站点根目录内的任何位置在终端中输入以下命令。

drush upwd admin --password=mynewpassword

这里,admin 是用户名;谁的密码将更改为mynewpassword

【讨论】:

  • 不错。 drush uli 也可以解决问题,但速度不快
【解决方案2】:

经过多次研究,我尝试以下代码将其作为 php 文件存储在根目录中

将其保存为密码重置-admin.php

<?php
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/includes/password.inc';
if (isset($_GET['pass']) && !empty($_GET['pass'])) { 
$newhash = user_hash_password($_GET['pass']);
}
else {
die('Retry with ?pass=PASSWORD set in the URL');
}
$updatepass = db_update('users') 
->fields(array(
'pass' => $newhash,
// 'name' => 'admin',
// 'mail' => '<a href="mailto:yourmail@domain.com'">yourmail@domain.com'</a>;
))
->condition('uid', '1', '=')
->execute();
print "Done. Please delete this file immediately!";
drupal_exit();
 ?>

然后通过以下方式访问php文件:

 https://yoursite.com/password-reset-admin.php?pass=newpassword

它刚刚工作..:) 希望它可以帮助其他人。

请确保删除该文件。

【讨论】:

  • 如果您想在本地实例上重置密码,这没关系。您必须在完成后立即删除password-reset-admin.php。否则会导致重大漏洞。请注意,我提到了一种使用 Drush 更改密码的简单且安全的方法。
  • 您可以在打印完成后使用取消链接删除文件,只要确保保留文件的备份,也可能不想在此处提示并允许用户正常访问,以便网站可以正常运行跨度>
  • 我无法使用 Drupal 网站上的“newpass”哈希直接在数据库中更改密码。这工作得很好。谢谢!
【解决方案3】:

要更改密码,您需要拥有对您网站的 shell 访问权限。如果没有,请在您的本地计算机上下载drupal 7 的副本。

然后,打开终端并导航到 Drupal 7 根文件夹。然后输入以下命令:

./scripts/password-hash.sh NEW_PASSWORD

用您需要的新密码替换NEW_PASSWORD

这将输出一个新的密码哈希,复制这个密码并转到您的数据库管理器(phpMyAdmin 或类似的)并将管理员密码更改为新生成的文本。

我不知道其他方法可以做到这一点,因为 Drupal 不再使用 MD5 而是使用散列算法。

【讨论】:

  • 虽然这种方法可能有效。直接更改数据库中的值是非常冒险的。必须非常非常小心,因为一个错误可能会导致数据丢失。
【解决方案4】:

将目录更改为 Drupal 的根目录。 然后生成新的哈希。

如果是 Drupal 7

$ php scripts/password-hash.sh 'your-new-pass-here'

然后执行SQL查询更新管理员密码:

UPDATE users_field_data SET pass='$S$Do7UQjqtEELNccdi92eCXcVJ2KnwUeHrSbK3YhFm8oR3lRJQbMB2' WHERE uid = 1;

如果是 Drupal 8,脚本的路径将是:

$ php core/scripts/password-hash.sh 'your-new-pass-here'

更新数据库:

UPDATE users_field_data SET pass='$S$Do7UQjqtEELNccdi92eCXcVJ2KnwUeHrSbK3YhFm8oR3lRJQbMB2' WHERE uid = 1;

清理缓存:

DELETE FROM cache_entity WHERE cid = 'values:user:1';

【讨论】:

    【解决方案5】:

    如果您可以访问数据库,那么...

    • 转到数据库中的用户表,并将管理员的电子邮件更改为您有权访问的电子邮件。

    • 然后,前往 yoursite.com/user/password 并输入刚刚更改的电子邮件。

    • 转到您的电子邮件并单击重置链接以进入您的网站并重置您的密码。

    完成!

    【讨论】:

      【解决方案6】:

      经过测试,它可以工作!

      例如,通过 PhpMyAdmin 访问数据库中的“用户”表(即,该表可以具有您在 Drupal 安装部分中已经提到的前缀,因此 yourPrefix_ 可以是您的项目名称,如 mywebsitename_,并且在在这种情况下,您将拥有 mywebsitename_users)。

      您应该将与“uid”列关联的“pass”列更改为值为 1(即 1 表示管理员用户帐户)。

      作为密码的加密值:Admin_12345 =>

      $S$DifCVXg9tNtHadziyyQJQVLAaZzW5EgS6OjR56D.mk8MpNQs1II2

      您可以在替换存储在您完全忘记的数据库中的旧哈希密码值后加入您的管理员帐户。

      不要忘记更改密码:Admin_12345 在您与其他人一起加入您的帐户后。

      【讨论】:

        【解决方案7】:

        您可以生成查询here 并在数据库中运行查询。

        【讨论】:

        猜你喜欢
        • 2018-08-09
        • 2021-10-18
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        相关资源
        最近更新 更多