我使用内置的Drupal 7用户模块,用户注册,忘记密码电子邮件以及所有这些内容。
我忘记了我的管理员密码。我可以访问我的网站,该网站托管在1and1.com上,并且还可以访问mysql?
是否可以通过SQL更改密码或电子邮件地址,以便我可以访问管理页面?
如果有可能如何?你能帮助我吗?
谢谢!
答案 0 :(得分:6)
如果您安装了Drush,则只需在站点根目录内的任何位置在终端中输入以下命令。
drush upwd admin --password=mynewpassword
此处,admin
是用户名;谁的密码将更改为mynewpassword
。
答案 1 :(得分:5)
经过多次研究后,我尝试将以下代码存储为根目录中的php文件
将其保存为password-reset-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
它只是工作.. :)希望它能帮助别人。
请确保删除该文件。
答案 2 :(得分:4)
要更改密码,您需要具有对您网站的shell访问权限。如果没有,请在本地计算机上下载drupal 7的副本。
然后,打开终端并导航到Drupal 7根文件夹。然后键入以下命令:
./scripts/password-hash.sh NEW_PASSWORD
将NEW_PASSWORD
替换为您需要的新密码。
这将输出一个新密码哈希,复制此密码并转到您的数据库管理器(phpMyAdmin或类似)并将管理员密码更改为新生成的文本。
我不知道其他方法,因为Drupal不再使用MD5
而是使用散列算法。
答案 3 :(得分:3)
将目录更改为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';
答案 4 :(得分:1)
如果您有权访问数据库,那么......
转到数据库中的用户表,将管理员的电子邮件更改为您有权访问的电子邮件。
然后,转到yoursite.com/user/password并输入刚更改的电子邮件。
完成!
答案 5 :(得分:1)
经过测试,确实有效!
例如,通过PhpMyAdmin访问数据库中的表“users”(即此表可以具有您在Drupal安装部分中已经提到的前缀,因此yourPrefix_可以是您的项目名称mywebsitename_,并且这种情况下你会有mywebsitename_users。
您应该更改与“uid”列关联的“pass”列,其值为1(即admin用户帐户为1)。
作为密码的加密值:Admin_12345 =>&gt;
$ S $ DifCVXg9tNtHadziyyQJQVLAaZzW5EgS6OjR56D.mk8MpNQs1II2
您可以在替换数据库中存储的已经完全忘记的旧散列密码值后加入您的管理员帐户。
在您使用另一个帐户加入帐户后,请不要忘记更改密码:Admin_12345。
答案 6 :(得分:0)
您可以生成查询here并在数据库中运行查询。