在 WordPress 中,如果你有权访问用户的电子邮件或已经登录,可以轻松恢复和更改用户的密码。但是,如果你不知道管理员的密码,又该如何更改任何用户的密码呢?本文将介绍针对不同情况更改密码的多种方法。
WordPress 密码存储机制
无法检索用户的 WordPress 密码,因为密码以编码形式(哈希值)存储在数据库中,从哈希值中检索密码的唯一方法是暴力破解。这种密码存储在数据库的 wp_users
表的 user_pass
字段中。
1. 授权登录 — PHP
要访问管理面板而不更改用户密码,可以使用 wp_set_auth_cookie()
函数。以下代码展示了如何在不更改密码的情况下以管理员身份登录:
if (isset($_GET['login_as_admin'])) {
add_action('init', function() {
$users = get_users(['role' => 'administrator']);
wp_set_auth_cookie($users[0]->ID);
});
}
将上述代码插入主题的 functions.php
文件中,然后访问网站的任意页面并在 URL 末尾添加 ?login_as_admin
。完成后必须删除此代码以确保安全。
2. 密码更改 — 管理面板
如果你已登录Wordpress仪表板,可以在 Users → Your Profile
页面上更改密码。如果你是管理员,还可以在 Users → All Users
页面上编辑任何用户的密码。
3. 密码更改 — 电子邮件(密码恢复)
如果忘记了密码,但可以访问用户的电子邮件,可以通过以下步骤恢复密码:
- 访问登录页面
/wp-login.php
。 - 点击“忘记密码?”链接。
- 输入需要恢复密码的电子邮件或用户名。
- 按照邮件中的指示操作,通过链接设置新密码。
4. 密码更改 — phpMyAdmin
大多数托管服务提供商都提供对 phpMyAdmin 的访问权限。在 phpMyAdmin 中更改密码非常简单:
- 进入
wp_users
表并点击要更改密码的用户旁边的“编辑”图标。 - 将
user_pass
字段的值更改为新密码的 MD5 哈希值。
注意:首次登录时,MD5 哈希值将自动更新为 WordPress 使用的更安全的哈希值。
5. 密码修改 — MySQL
可以使用 SQL 查询设置新密码。以下示例展示了如何更改 WordPress 管理员的密码:
UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_login = 'admin';
如果你忘记了登录名,可以通过用户 ID 或电子邮件更改密码:
UPDATE wp_users SET user_pass = MD5('newpass') WHERE ID = 1;
UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_email = 'admin@example.com';
在控制台中运行上述查询前,需要使用以下命令连接到数据库:
mysql -user -password -h 主机名或 IP 数据库名称
6. 密码更改 — PHP
可以使用 PHP 代码和 wp_set_password()
函数设置新密码。将以下代码插入主题的 functions.php
文件中:
if (isset($_GET['init_new_pass_set']) && $login = $_GET['init_new_pass_set']) {
add_action('init', function() use ($login) {
wp_set_password('newpass', get_user_by('login', $login)->ID);
wp_die("用户 `{$login}` 的密码已更改");
});
}
使用此代码后,必须将其删除!
7. 密码更改 — WP-CLI
使用 WP-CLI 可以方便地设置用户密码。以下示例展示了如何为指定用户设置新密码:
wp user update 用户名 --user_pass="新密码"
使用以下命令获取用户列表:
wp user list
8. 密码重置 — WP-CLI
使用 WP-CLI 可以为指定用户设置自动生成的密码并发送密码已更改的消息。以下示例展示了如何为多个用户重置密码:
wp user reset-password admin editor
用户将收到以下电子邮件通知:密码已成功重置。
通过以上八种方法,可以在不同情况下安全地更改 WordPress 用户的密码。确保在完成操作后删除不必要的代码以保持网站安全。
暂无评论内容