WordPress 6.4 要求 user_pass 字段使用 PHPass 哈希(以 $P$ 或 $2y$ 开头),而非 MD5;须通过 WordPress 自带 PasswordHash 类生成,且需在正确环境(含 wp-load.php)下执行,否则因 salt 不匹配导致登录失败。

phpMyAdmin里改user_pass字段为什么登录失败?
因为 WordPress 6.4 默认已弃用纯 MD5,user_pass 字段必须填入 PHPass 格式哈希(以 $P$ 或 $2y$ 开头),不是 32 位十六进制字符串。你看到旧教程里填 5f4dcc3b5aa765d61d8327deb882cf99 能用,那是兼容模式下的遗留行为,6.4+ 环境下极大概率失效。
怎么生成 WordPress 6.4 认可的密码哈希?
别用在线工具、别手敲 md5()、别复制别人博客里的“MD5 密码表”。唯一可靠方式是复用 WordPress 自身的 PasswordHash 类:
- 临时建一个
hash.php放在网站根目录(和wp-load.php同级) - 内容必须是:
<?php require_once('./wp-includes/class-phpass.php'); $hasher = new PasswordHash(8, TRUE); echo $hasher->HashPassword('你的新密码'); ?> - 访问
https://你的域名/hash.php,拿到类似$P$BIR7QvF1JZqKzUaLQcXwD9uGZV0Z91/的完整字符串 - 删掉
hash.php——留着等于公开哈希逻辑
在 phpMyAdmin 中更新时容易踩的坑
找到 wp_users 表后,编辑目标行前先确认三件事:
安全的随机密码生成器。支持自定义长度、字符类型(大写/小写字母、数字、特殊符号),排除相似字符,批量生成。纯 Python 标准库,无需 API 密钥。
-
user_login值是否正确(比如是admin还是webmaster,别改错人) -
user_pass字段的「函数」下拉框必须选None,不是MD5—— 选了会二次哈希,导致值损坏 - 粘贴哈希串时,确保开头的
$P$或$2y$完整,不能漏字符或带空格 - 保存前检查排序规则是
utf8mb4_unicode_ci,否则中文用户名或特殊符号可能被截断
重置后必须立刻验证的三件事
用新密码成功登录后台后,不要直接去写文章:
立即学习“PHP免费学习笔记(深入)”;
- 进「用户 → 所有用户」,点开自己账户,确认
Role是Administrator(有些数据库误操作会清空角色) - 检查「设置 → 通用」里的
WordPress 地址(URL)和站点地址(URL)是否仍为正确域名(部分脚本会意外覆盖wp_options) - 打开浏览器开发者工具 → Application → Storage → Cookies,确认
wordpress_logged_in_*cookie 已更新,且无expired状态(否则 session_tokens 可能残留旧会话)
PHPass 哈希不是“填进去就完事”,它依赖 WordPress 当前 salt 和算法版本;6.4 的 salt 存在 wp-config.php 的 define('AUTH_KEY', ...) 里,所以本地生成的哈希若没加载正确配置,也可能不生效——这就是为什么必须用 wp-includes/class-phpass.php + wp-load.php 环境来生成。


















