苹果CMS 忘记后台密码怎么通过数据库修改?

juming
juming 正式会员超兽战士
发布于 2026-10-07 01:11 ·6 浏览 ·0 回复

用一条 SQL 就能把苹果CMS后台密码重置成你指定的新密码,并且知道该找哪张表、哪个字段,不用重装、不用改源码。

第一步:先找到数据库账号和表前缀

这一步要拿到数据库连接信息,顺便确认表前缀。打开网站根目录下的 application/database.php(苹果CMS V10 用 ThinkPHP 5,配置文件就在这个路径),找到这几行:

'hostname' => '127.0.0.1',
'database' => 'www_xxx_com',
'username' => 'www_xxx_com',
'password' => '这里就是数据库密码',
'prefix'   => 'mac_',

记下 database、username、password 和 prefix。默认前缀是 mac_,所以管理员表就是 mac_admin。

注意:数据库密码不是后台密码,别搞混。如果 database.php 里的密码也忘了,只能在宝塔面板或服务器上重置数据库用户密码。

第二步:连上数据库

这一步要打开一个能执行 SQL 的界面。三种常见方式,选一个:

  • 宝塔面板:左侧菜单「数据库」→ 找到对应库 → 点右侧「管理」,会打开 phpMyAdmin,顶部点「SQL」标签页。
  • 本地用 Navicat / DBeaver:新建 MySQL 连接,主机填 127.0.0.1(数据库和网站在同一台机器时),端口 3306,填用户名密码后连接。
  • 命令行:mysql -u用户名 -p 库名,回车后输密码。

注意:如果宝塔里 phpMyAdmin 打不开,检查 888 端口是否放行;这只影响面板里的 phpMyAdmin,不影响你直接用 Navicat 连。

第三步:确认管理员账号和盐值字段

这一步要确认后台登录名,以及密码是不是加了盐。执行:

SELECT admin_id, admin_name, admin_random, admin_status FROM mac_admin;

如果报「表不存在」,先执行 SHOW TABLES LIKE '%admin%'; 看看实际表名,把 mac_ 换成你的前缀。默认账号通常是 admin。

admin_random 这一列是关键:苹果CMS V10 的密码不是简单的 MD5,而是 md5( md5(明文密码) + admin_random ),也就是加了一层随机盐。

注意:如果你的表里根本没有 admin_random 字段,说明是老版本(V8 一类),密码是单层 MD5,直接用 admin_pwd = MD5('新密码') 即可。

第四步:用一条 SQL 重置密码

这一步把密码改成 123456(示例,改完请立刻换掉)。执行:

UPDATE mac_admin
SET admin_pwd = MD5(CONCAT(MD5('123456'), admin_random))
WHERE admin_name = 'admin';

MySQL 内置的 MD5() 函数和 PHP 的 md5() 结果一致,都是 32 位小写十六进制,所以能在数据库里直接算。

如果 admin_random 是空的,上面这句等价于双层 MD5。123456 的双层 MD5 是 14e1b600b1fd579f47433b88e8d85291,你也可以直接写:

UPDATE mac_admin
SET admin_pwd = '14e1b600b1fd579f47433b88e8d85291', admin_random = ''
WHERE admin_name = 'admin';

注意:最常见的坑就是把 admin_pwd 直接写成 e10adc3949ba59abbe56e057f20f883e(123456 的单层 MD5)。在 V10 上这样写一定登录失败,因为程序还会再拼一次盐。

第五步:顺手把挡住登录的状态字段清掉

这一步防止「密码对了但仍然进不去」。执行:

UPDATE mac_admin SET admin_status = 1 WHERE admin_name = 'admin';

如果后台开了登录 IP 白名单或登录验证,mac_admin 里可能有 admin_login_ip、admin_login_num 之类的字段。先看一眼结构:

DESC mac_admin;

有可疑的 IP、次数、锁定字段就一并清空,比如:

UPDATE mac_admin SET admin_login_ip = '', admin_login_num = 0 WHERE admin_name = 'admin';

注意:字段名照 DESC 的实际结果写,不要照抄本文。字段不存在会直接报错。

第六步:登录后台并重新设置密码

浏览器打开 你的域名/admin.php(V10 默认后台入口,部分站点改过入口文件名,可以看根目录下有没有 admin.php、manage.php 之类),用 admin + 123456 登录。

登录成功后,进入菜单「系统」→「管理员」,找到自己那条记录点「修改」,把密码换成你自己的新密码并保存——这一步会让程序重新生成 admin_random,把盐恢复成随机值。

如果页面样式错乱或提示异常,到「系统」→「缓存管理」里清一次缓存(不同小版本菜单名略有差异,找带「缓存」二字的菜单即可)。

注意:重置期间网站后台是「弱密码」状态,改完密码后建议把本次的 SQL 记录、浏览器历史清理一下。另外别忘了在「管理员」里确认没有多余的陌生账号。

小结

  • 数据库账号和表前缀在 application/database.php 里,V10 默认前缀 mac_,管理员表是 mac_admin。
  • V10 密码规则是 md5(md5(明文) + admin_random),用 UPDATE mac_admin SET admin_pwd = MD5(CONCAT(MD5('新密码'), admin_random)) 一条搞定。
  • 只写单层 MD5 是最常见的失败原因;没有 admin_random 字段才是单层 MD5。
  • 别忘 admin_status = 1,以及清掉 IP 白名单、登录次数这类锁定字段。
  • 登录成功后第一件事:在「系统 → 管理员」里把密码重新设成自己的,让盐值重新随机生成。
版权声明:本文来自 GJ论坛《苹果CMS 忘记后台密码怎么通过数据库修改?》
原文链接:https://www.gj0.com/thread-14.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~