搜索全站
数据库 7 分钟阅读

忘记WordPress管理员密码?直接改数据库重置密码

邮箱找不回、收不到重置邮件、管理员密码忘了进不去后台?本文教你在phpMyAdmin里直接修改wp_users表重置密码,附MD5生成方法、会话清理和WP-CLI一键重置命令,无需邮箱验证即可重新登录WordPress后台,操作前请先备份wp_users表。

U
UFO_PF 2026-10-10 · 阅读 7 分钟
忘记 数据库
阅读提示
本文约 2,639 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

管理员密码忘了,点”忘记密码”邮箱又收不到重置邮件,网站后台进不去,客服也帮不上忙——这是很多站长都遇到过的窘境。如果你的主机能进 phpMyAdmin,其实完全可以绕过邮件,直接在数据库里把密码改掉。WordPress 的密码存在 wp_users 表里,字段名是 user_pass,存的是一串加密后的哈希值,不是明文。所以你不能直接把密码写成 123456,而要写入这个密码对应的哈希。本文教你两种最稳妥的方式:一是用 phpMyAdmin 生成 MD5 哈希后更新,二是用 WP-CLI 一条命令搞定。全程只需要数据库权限,不需要邮箱,也不影响其他用户。操作前请先备份 wp_users 表,避免手滑改坏。

故障原因分析

  1. 邮箱不可用。站点是用临时邮箱或已停用邮箱注册的,找回密码的邮件根本收不到,链接也就打不开。
  1. 邮件未发送或进垃圾箱。服务器没配好 SMTP,WordPress 的重置邮件发不出去,或者被邮箱服务商拦进了垃圾箱。
  1. 密码被遗忘或撞库要求改密。长时间没登录管理后台,密码记不清了;或出于安全临时需要重置。
  1. 账号被人改动。站点被入侵后攻击者改了管理员密码,你需要抢回控制权。
  1. 多管理员但都不记得。只有你一个管理员账号时可用的找回途径更少,只能从数据库下手。

分步解决方案

准备:备份与确认表前缀

第一步一定是备份 wp_users 表。在 phpMyAdmin 里选中 wp_users,点”导出”保存成 .sql。注意 wp_ 只是默认前缀,很多站点改过,比如 wpxx_users。下文所有 SQL 请把 wp_ 换成你实际的前缀,用户表不一定是 wp_users。

方法一:phpMyAdmin 直接改哈希(推荐)

第 1 步,找到你的管理员账号。在 phpMyAdmin 里选中数据库,执行:

SELECT ID, user_login, user_email, user_pass
FROM wp_users;

记下你要重置的账号对应的 ID,比如 ID 是 1。

第 2 步,把密码哈希写入 user_pass。你需要先得到目标密码的 MD5 值。WordPress 的老式存储里,user_pass 可以填 MD5 哈希,登录时 WordPress 会自动识别并升级为更安全的 phpass 格式。生成 MD5 最简单的办法:在 phpMyAdmin 里执行

SELECT MD5('你的新密码');

它会直接返回一串 32 位十六进制,复制这串值。然后:

UPDATE wp_users
SET user_pass = '这里粘贴MD5字符串'
WHERE ID = 1;

把 你的新密码 换成你想设的密码,把 ID 换成第 1 步查到的账号 ID。执行后提示 1 行受影响即成功。

第 3 步,用新密码登录。为了保险,可以清空一次会话,避免旧登录状态干扰:

UPDATE wp_usermeta
SET meta_value = ''
WHERE user_id = 1 AND meta_key = 'session_tokens';

然后访问 /wp-login.php,用 user_login 和刚设的新密码登录,成功后会看到 WordPress 提示更新密码,说明它把 MD5 自动升级成了 phpass,此时可以放心使用。

方法二:用 WP-CLI 一条命令重置

如果有 SSH 权限,这是最快的办法。进入网站根目录执行:

wp user list

找到目标账号的 ID 或登录名,然后:

wp user update 1 --user_pass="你的新密码"

其中 1 换成目标用户 ID,也可以用 --user_login=admin 指定。WP-CLI 会直接写入正确的 phpass 哈希,无需自己算 MD5,最省心。若忘记用户名,用 wp user list 列出全部账号即可。

方法三:用主题函数或临时脚本重置(应急)

如果连数据库都进不去,可以在服务器上建一个临时 PHP 脚本,调用 WordPress 自带的 wp_set_password() 函数:

<?php
require_once __DIR__ . '/wp-load.php';
$user = get_user_by('login', 'admin');
if ( $user ) {
    wp_set_password( '你的新密码', $user->ID );
    echo 'ok';
}
?>

把 admin 和密码换成自己的,访问该脚本后立即删除文件,否则等于给攻击者留了后门。这种方式只有在能上传 PHP 文件、且脚本放在 WordPress 根目录时可用。

第末步:登录后的安全处理

登录成功后,立刻做三件事:一是把密码改成一个强密码并开启两步验证;二是检查 wp_users 里有没有陌生的管理员账号;三是确认邮箱地址正确,未来还能走找回流程。

常见踩坑点

  1. 直接写入明文密码。user_pass 必须填哈希值,填 123456 明文是登录不上的。
  2. 用 MD5 时带了大小写或空格。MD5 是 32 位十六进制,复制时别多空格,通常不区分大小写但保持原样最稳。
  3. 表前缀没换。你的用户表可能叫 wpxx_users,用默认 wp_users 会提示”表不存在”。
  4. 改错 ID。UPDATE 前务必 SELECT 确认 ID 对应的就是自己,否则可能改了别人的账号。
  5. 临时脚本用完没删。等于把重置密码的权限公开在互联网上,风险极高。
  6. 忘记清 session_tokens。个别情况下旧会话缓存会导致登录异常,顺手清理更稳妥。

总结

忘记 WordPress 管理员密码时,只要你能访问数据库,就有一条可靠的捷径:在 phpMyAdmin 里把 wp_users 表的 user_pass 字段改成目标密码的 MD5 哈希,或者用 WP-CLI 的 wp user update --user_pass 一条命令搞定。核心要点是”密码要以哈希形式写入,不能写明文”,同时牢记替换真实表前缀、选对自己的账号 ID。恢复登录后请立即设置强密码、检查是否有异常管理员,并确认邮箱可用。掌握这套重置WordPress管理员密码的方法,即使邮件功能全挂,你也不会再被挡在自己的网站门外。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。