wordpress自2.5起不再支持纯md5密码,其wp_hash_password()采用phpass的bcrypt变种,与mysql的md5()或在线工具生成的32位哈希不兼容,故直接在phpmyadmin中对user_pass填md5值会导致登录失败。
直接在 phpmyadmin 里把 user_pass 字段填个 md5 值,99% 的情况会登录失败——wordpress 自 2.5 版起就不再认纯 md5,你填的不是密码,是“废码”。
为什么改 user_pass 字段总提示密码错误
常见错误现象:ERROR: The password you entered is incorrect. 或登录后立刻跳转到 wp-admin/ 权限拒绝页。根本原因不是字段没改对,而是哈希算法不匹配:WordPress 使用 wp_hash_password()(基于 phpass 的 bcrypt 变种),不是 MD5() 函数或在线工具生成的 32 位字符串。
- MySQL 的
MD5('123456')输出是e10adc3949ba59abbe56e057f20f883e,WordPress 完全不解析它 - phpMyAdmin 下拉菜单选 “MD5” 是 MySQL 级别操作,和 WordPress 密码验证流程完全脱钩
- 即使你用旧版 WordPress(
能用的唯一安全哈希格式是 $P$ 开头的 phpass 字符串
新版 WordPress(5.7+)默认用 bcrypt,但向下兼容 phpass 格式(以 $P$ 开头,共 34 字符),这是目前唯一能在 phpMyAdmin 中手动填入且大概率生效的格式。
- 别自己手敲——
$P$BIR89zJjvQVZcNnK0bOQDqYFhI7qXu1这类字符串含盐值和迭代参数,人工无法构造 - 可复用已知安全值:明文
password对应的合法哈希是$P$BIR89zJjvQVZcNnK0bOQDqYFhI7qXu1(WordPress 官方测试用例) - 填入前确认:表名是
wp_users(或你自定义的前缀,如myblog_users),字段是user_pass,ID 或user_login找对行 - 修改后清空浏览器 Cookie,避免旧会话干扰验证
比手动填哈希更靠谱的替代方案:临时 PHP 脚本
如果你有 FTP 或文件写入权限,临时建一个 PHP 文件调用 WordPress 原生函数,比死磕 phpMyAdmin 更稳、更兼容。
- 在网站根目录新建
reset-pw.php,内容只写三行:require_once 'wp-load.php'; wp_set_password('新密码', 1); // 第二个参数是 user_id,管理员通常是 1 echo 'Done.'; - 访问
https://yoursite.com/reset-pw.php一次,密码立即生效 - 执行完立刻删掉该文件——留着就是后门
- 这个方法自动适配当前 WordPress 版本的哈希策略(bcrypt / phpass / 兜底 fallback),不用管 PHP 版本或服务器配置
真正麻烦的不是操作步骤,而是判断你有没有权限走哪条路:phpMyAdmin 可用但没文件写入?那就只能赌 $P$ 字符串;能传文件却不敢动数据库?那就用脚本。两者都受限,才需要考虑 WP-CLI 或宝塔面板的数据库工具。别省那两分钟,填错哈希导致反复重试,耗时远超写一行 wp_set_password()。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











