Drupal 7 忘记密码后重置管理员密码

主题:
作者:anxin
日期:2018-07-12
分享:

长时间没有登录 Drupal 7 网站时,可能会忘记管理员(admin)密码。这就需要重置管理员密码,而 Drupal 7 已不再采用 Drupal 6/5 时代的简单的 MD5 加密了,采用的是新型的添加 Salt 值的 MD5 码。

Salt + MD5 加密方法不会直接将 password 进行 MD5 加密,而会和用户名或其它随机字符串组合在一起后使用 MD5 方式加密。如果直接对密码进行散列,那么黑客可以通过获取密码的散列值,查找散列值字典(例如 MD5 密码破解网站),得到用户的密码。因此 Drupal 7 采用了新型的 Hash 加密方法来确保密码安全。

Drupal 7 重置管理员密码

1)将 PHP 的解释器脚本加入到系统环境变量中,Windows 系统下添加到 PATH 变量中,Linux 系统下添加中 Shell 路径下。因为需要使用 PHP 解释器执行 PHP 脚本。

2)Drupal 7 的安装目录中的 scripts 目录下,有一些为 Drupal 7 开发者准备的 PHP 脚本,可以执行一些高级操作,其中有一个名为 password-hash.sh 的脚本,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。

在网站的很目录下执行 password-hash.sh 文件(否则会出现一些include文件错误),生成密码加密后的字符串,假设要把密码重置为 drupal:

php scripts/password-hash.sh drupal > pwd.txt

生成的加密后的字符串存放在 pwd.txt 文件中,如下形式:

password: drupal hash: $S$DOHOZrX8hwXWRV.6jU6PImRuxvYr1qVvPaicDBmG9yTudqwZjxX6

其中 password: 的值是密码,hash: 的值是密码加密后的字符串。

3)使用数据库图形界面工具,或者命令行工具,查询网站的管理员用户名(如果你知道管理员的用户名,可以跳过此步),Drupal 7 的用户表为 users,如下代码以 MariaDB 为例:

select * from users limit 2;

如下代码只查询前两条记录,第二条记录为网站管理员用户的表记录。

4)使用加密后的字符串更新用户表(users)中管理员用户的记录:

update users set pass='$S$DOHOZrX8hwXWRV.6jU6PImRuxvYr1qVvPaicDBmG9yTudqwZjxX6' where name='admin';

#或者
update users set pass='$S$DOHOZrX8hwXWRV.6jU6PImRuxvYr1qVvPaicDBmG9yTudqwZjxX6' where uid=1;

5)如果你登录你的 Drupal 7网站 5 次失败后,Drupal 7 会在 flood 表中产生一些记录,使用户在 6 小时之内不能登录。用户需要清除 flood 表中禁止管理员用户登录的记录后,才能够登录。否则 Drupal 7 会提示如下错误:

Sorry, there have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.

使用如下数据库命令清清除 flood 表中禁止管理员用户登录的记录:

delete from flood where identifier='::1';

你也可以使用如下命令清空 flood 表:

delete from flood;

6)经过以上操作后,进入 Drupal 7 网站的登录界面,输入用户名和密码就能够成功登录 Drupal 7 网站。

标签:
本文链接:https://www.yuzhi100.com/article/drupal-7-chongzhi-guanliyuan-mima

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!

作者:anxin