本文约 1,980 字,预计阅读 5 分钟。文中命令与配置均经过实测,可直接参考执行。
引言
时隔几个月没登录,或者交接站点时没拿到密码,站长们经常会遇到 WordPress 后台进不去的情况。点「忘记密码」填了邮箱,却迟迟收不到重置邮件——要么主机没配好邮件发送服务,要么邮件进了垃圾箱,要么绑定的邮箱早就不能用了。这时候如果急着找人帮忙或者想着重装,其实大可不必,只要还能通过 SSH、FTP 或数据库面板操作,几分钟就能把管理员密码重置回来,数据也完全不受影响。下面按「从简单到进阶」的顺序,给出四种可靠的 WordPress 后台密码重置方法,你可以根据自己的权限条件任选其一。这几种方法都不会影响文章和用户数据,只是把密码换掉,可以放心操作。
故障原因分析
- 找回邮件发不出去。WordPress 默认用 PHP 的 mail() 发信,很多主机没有配置 SMTP,邮件根本发不出去,用户自然收不到。
- 绑定邮箱失效。注册后台账户时的邮箱已停用或写错,找回链接收不到,这是小站最常见的情况。
- 用户名记不清。找回密码需要用户名或邮箱,两个都不确定时就无法走常规流程。
- 后台被插件或安全设置锁定。例如登录保护、验证码插件出问题,即使密码正确也进不去。
- 数据库里的密码是哈希值,直接看是看不出明文密码的,必须重新设置,无法「读」出来。
- 站点搬迁或导入过数据库,用户表里的密码是旧环境残留,跟记忆中的对不上。
分步解决方案
方法一:通过邮箱找回(前提是邮件能正常发送)。 在登录页点「忘记密码?」,输入用户名或邮箱,按提示收邮件重置。若收不到,先检查垃圾邮件,再确认主机是否支持发信;装了 SMTP 插件的站点通常更容易成功。这条路径最简单,能走就优先走。
方法二:用 functions.php 临时重置(有 FTP/文件管理器权限时最省事)。 编辑当前主题的 functions.php,在文件末尾加入下面代码,然后刷新一次网站首页,再删除这段代码:
wp_set_password('你的新密码', 1);
其中 1 是用户的 ID,通常管理员就是 1。如果不确定 ID,可以先加上这段代码查一下:
$user = get_user_by('login', '你的用户名');
echo $user ? $user->ID : '未找到该用户';
刷新后页面会显示 ID,再去重置。切记执行后一定删除代码,否则每次访问都会把密码重置回去。
方法三:通过 phpMyAdmin 直接改数据库。 登录主机的 phpMyAdmin,打开 WordPress 数据库的 wp_users 表(前缀不同请对应替换),找到你的管理员账号,编辑 user_pass 字段,用 SQL 直接写入 MD5 值:
UPDATE wp_users SET user_pass = MD5('你的新密码') WHERE user_login = 'admin';
小技巧:WordPress 登录时会识别这种较短的旧式哈希,并在首次成功登录后自动升级成新的安全哈希,所以能正常登录,无需担心兼容问题。改完记得确认受影响行数是 1,说明确实改到了目标账号。
方法四:使用 WP-CLI(有 SSH 权限时一步到位)。 在站点根目录执行:
wp user update 1 --user_pass="你的新密码"
如果需要列出所有用户找 ID,可先执行 wp user list,找到管理员对应的 ID 再替换命令里的 1。
方法五:借助主机面板或联系主机商。 宝塔、cPanel 等面板一般自带文件管理和数据库管理,可直接用方法二或方法三;实在没有权限时,提供身份证明联系主机商协助重置数据库密码也是可行路径。
常见踩坑点
- 在 functions.php 里加了
wp_set_password却忘记删除,导致密码反复被重置。 - 把用户 ID 当成用户名的序号,改错了别人的密码。
- SQL 里表前缀写错,改了半天没变化。
- 新密码里带了引号或特殊符号,导致 SQL 语法错误,应转义或改用其他方法。
- 重置成功但浏览器还留着旧 Cookie,建议清理 Cookie 或用无痕窗口重登。
- 用安全插件做了登录白名单,密码对了仍被拦截,需要先停用该插件。
- 改了密码却没确认受影响行数,实际一条都没更新成功。
总结
忘记 WordPress 后台密码不必惊慌,只要还有主机文件权限或数据库权限,就一定能重置。没有 SSH 就用 functions.php 临时注入 wp_set_password,能进数据库就用 phpMyAdmin 执行一条 UPDATE 语句,有命令行则用 WP-CLI 一条命令搞定。核心是记住「用完即删临时代码、核对表前缀、确认用户 ID」这三点,改完再用无痕窗口验证一次。这样 WordPress 后台密码的找回与重置就能快速、安全地完成。
