A-A+
Discuz X5.0【独立模式 UC_STANDALONE=1】管理员数据库设置字段
独立模式不使用 pre_ucenter_* 表,全部权限在本地表 + 配置文件config_global.php创始人列表。表前缀以pre_,把pre_替换成你实际表前缀。
1、核心表 pre_common_member(会员主表)
把普通用户升级为超级管理员,修改这几个关键字段:
表格
| 字段 | 值 | 说明 |
|---|---|---|
| adminid | 1 | 1 = 超级管理员;2 = 超级版主;3 = 版主;0 普通会员 |
| groupid | 1 | 用户组 ID,1 是系统管理员组 |
| allowadmincp | 1 | 允许登录后台管理中心,0 禁止进后台 |
| freeze | 0 | 账号不能冻结,冻结 = 1/2 无法登录Discu... |
示例 SQL(把 uid=1 设置超级管理员)
sql
UPDATE pre_common_member SET adminid=1,groupid=1,allowadmincp=1,freeze=0 WHERE uid=1;
❗X5 密码不是简单 MD5,是password+salt双字段加密,不要直接写 MD5 改密码,改完无法登录。重置密码优先用工具 php 脚本,不要手工数据库改 password。
2、配置文件关键:创始人founder(非常关键!)
文件:config/config_global.php
php
运行
$_config['admincp']['founder'] = '1';
这里填写 UID,逗号分隔多个,例如'1,100';只有写在这里 UID,才是创始人,拥有全部最高权限,光改数据库 adminid=1 不写这里,很多后台功能会被限制。
3、后台团队权限表(后台 → 用户 → 管理团队)
- pre_common_admincp_member:哪些 UID 加入后台管理团队,cpgroupid管理组 ID
- pre_common_admincp_group:后台管理组(超级管理员 / 版主等)
如果只是创始人,可以不用插入这两张表,founder 配置优先最高权限。
4、完整步骤:把已有账号变成超级管理员
- phpMyAdmin 执行 SQL,设置adminid=1,groupid=1,allowadmincp=1,freeze=0
- 修改config/config_global.php,founder加入该 UID
- 清理全部缓存(cache_clear.php)
- 浏览器清除 cookie 重新登录
5、查询当前所有管理员账号 SQL
sql
SELECT uid,username,adminid,groupid,allowadmincp,freeze FROM pre_common_member WHERE adminid=1 OR allowadmincp=1;
6、⚠️X5 独立模式重要避坑
- 不要操作任何pre_ucenter_*表,独立模式完全无效。
- password+salt联合加密,手工修改 password 字段,账号登录失败,重置密码写 php 脚本,不要数据库硬改密码。
- founder配置文件优先级大于数据库;数据库改了 adminid,配置没加 UID,权限不全。
- allowadmincp=0,就算 adminid=1,也无法进入后台。
- 账号freeze≠0冻结,无法登录。
附:X5 重置管理员密码的小脚本(上传网站根目录,用完立刻删除)
<?php
define('IN_DISCUZ', true);
require './config/config_global.php';
require './source/class/class_core.php';
$discuz = C::app();
$discuz->init();
$uid = 1; //改成你的管理员UID
$newpwd = "Admin@123456"; //新密码
C::t('common_member')->update($uid, array('password' => md5($newpwd.C::t('common_member')->fetch($uid)['salt'])));
echo "✅UID {$uid}密码已重置为 {$newpwd},请删除本文件!";
?>