客户在安徽合肥市蜀山区做少儿编程培训,网站用的是WordPress,平时都是运营老师在后台更新课程信息和活动通知。那天运营老师离职了,新来的老师不知道后台密码,客户自己试了几个常用密码也都不对,就让我们帮忙重置一下。
第一次尝试:数据库直接改密码
登录服务器,打开宝塔面板的phpMyAdmin,找到WordPress的数据库,在wp_users表里找到管理员账号,把user_pass字段的值改成了一个已知密码的MD5值。WordPress默认用MD5加密密码,按理说改完就能用新密码登录了。
改完之后去后台登录,提示密码错误。又试了两次,还是不行。
检查加密方式
在数据库里仔细看了一下user_pass字段的格式,发现密码不是普通的MD5,而是类似$P$B...这样的格式。这种格式是WordPress的phpass加密方式,不是简单的MD5。直接写MD5进去,WordPress验证的时候会按照phpass的方式去解析,解析失败就判定密码错误。
正确的改法
方法一:用WordPress提供的重置密码功能。在wp-config.php里临时加一行define('WP_ALLOW_REPAIR', true);,然后访问/wp-admin/maint/repair.php,页面上会有一个重置密码的链接,点进去按提示操作就能重置。
方法二:在数据库里把user_pass改成phpass格式的哈希值。这个哈希值可以在本地用PHP生成,也可以找一个在线的WordPress密码生成工具。生成之后替换数据库里的值,登录就正常了。
方法三:用WP-CLI命令行工具。在服务器上执行wp user update 1 --user_pass=新密码,WP-CLI会自动处理加密格式,改完直接生效。
客户选了方法一,因为操作最简单,不用记命令。重置完之后新密码登录成功,让运营老师重新设置了自己的密码。
顺手做的几件事
重置完密码之后,帮客户检查了一下用户列表,发现有几个已经离职的员工的账号还留着,权限还是管理员。把这些账号的权限降到了订阅者,或者直接删掉。
另外检查了登录日志,看看有没有异常的登录尝试。发现有几个来自境外IP的登录失败记录,估计是有人在尝试爆破。在宝塔面板里把这些IP加入了黑名单,同时开启了登录失败次数限制,连续输错五次锁定半小时。
客户那边的情况
客户在合肥蜀山区有好几个校区,运营老师平时在总部办公,通过网站后台发布各校区的课程安排。这次密码重置之后,客户说以后要把管理员账号和运营账号分开,运营老师只用编辑权限,不给管理员权限,避免以后再出现类似的情况。
一点补充
WordPress密码重置这件事,看着简单,但直接改数据库MD5值这个坑很多人踩过。WordPress从很早的版本就开始用phpass加密了,不是纯MD5。如果非要手动改数据库,记得用phpass格式的哈希值,或者直接用WP-CLI、官方重置工具来处理。
如果你也遇到后台密码丢了的情况,先别急着改数据库,试试官方提供的重置流程,省得走弯路。
