pangu-user-platform/sql/fix_admin_permissions.sh

121 lines
3.9 KiB
Bash
Raw Normal View History

fix: 修复管理员角色菜单权限缺失问题 ## 问题描述 用户反馈:登录管理后台后,只能看到盘古业务菜单,缺少RuoYi系统管理、系统监控、系统工具等菜单 ## 问题分析 ### 根本原因 管理员角色(role_id=1)的菜单权限配置不完整,只有盘古业务菜单权限,缺少RuoYi系统菜单权限 ### 权限状态检查 ```sql -- 修复前 SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1; -- 结果:30条(仅盘古业务菜单) -- 各类型菜单权限分布 RuoYi系统菜单:0条 ❌ (应该有72条) 盘古业务菜单: 30条 ✅ 合计: 30条 ❌ (应该有118条) ``` ### 影响 - ❌ 无法访问用户管理、角色管理、菜单管理 - ❌ 无法进行系统配置和权限分配 - ❌ 无法使用代码生成等系统工具 - ❌ 系统功能严重受限 ## 解决方案 ### 1. 立即修复(已执行) ```sql -- 删除现有权限 DELETE FROM sys_role_menu WHERE role_id = 1; -- 为管理员角色添加所有菜单权限 INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, menu_id FROM sys_menu; ``` ### 2. 创建权限修复脚本 **新增**:`sql/fix_admin_permissions.sh` **功能特性**: - ✅ 检查当前管理员角色权限状态 - ✅ 统计菜单权限分布 - ✅ 自动备份现有权限 - ✅ 一键修复权限配置 - ✅ 验证修复结果 **使用方法**: ```bash cd sql ./fix_admin_permissions.sh # 按提示选择y确认 # 退出登录并重新登录 ``` ### 3. 创建配置文档 **新增**:`docs/07-运维文档/角色权限配置指南.md` **内容包含**: - ✅ 问题说明和原因分析 - ✅ 3种修复方法(脚本/SQL/界面) - ✅ 验证步骤(数据库+前端) - ✅ 角色权限管理最佳实践 - ✅ 常见问题Q&A - ✅ 权限备份恢复方法 ## 修复结果 ### 数据库验证 ```sql -- 修复后 SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1; -- 结果:118条 ✅ -- 各类型菜单权限分布 RuoYi系统菜单:72条 ✅ 盘古业务菜单: 46条 ✅ 合计: 118条 ✅ -- 顶级菜单权限 menu_id menu_name order_num 2000 盘古管理 0 ✅ 1 系统管理 1 ✅ 2 系统监控 2 ✅ 3 系统工具 3 ✅ 4 若依官网 4 ✅ ``` ### 前端验证 退出登录并重新登录后,菜单栏应显示: - ✅ 盘古管理(学校、会员、学生、应用、基础数据) - ✅ 系统管理(用户、角色、菜单、部门、岗位、字典、参数、通知、日志) - ✅ 系统监控(在线用户、定时任务、数据监控、服务监控、缓存监控) - ✅ 系统工具(表单构建、代码生成、系统接口) - ✅ 若依官网 ## 重要提醒 ⚠️ **权限修改后,必须退出登录并重新登录才会生效!** ## 相关文件 - sql/fix_admin_permissions.sh - 权限修复脚本 - docs/07-运维文档/角色权限配置指南.md - 配置文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:23:44 +08:00
#!/bin/bash
# ============================================================
# 脚本名称fix_admin_permissions.sh
# 功能说明:修复管理员角色菜单权限(添加所有菜单权限)
chore: 统一所有文件作者为pangu ## 修改范围 ### 受影响文件(9个) #### 1. Java文件(1个) - pangu-system/src/main/java/com/pangu/web/controller/system/SysLoginController.java - @author 湖北新华业务中台研发团队 → @author pangu #### 2. SQL脚本(5个) - sql/fix_admin_permissions.sh - 角色权限修复脚本 - sql/fix_charset.sh - 字符集修复脚本 - sql/import_menu.sh - 菜单导入脚本 - sql/fix_ruoyi_charset.sql - RuoYi乱码修复SQL - sql/sys_menu_complete.sql - 完整菜单数据SQL #### 3. SQL数据文件(3个) - sql/pangu_menu.sql - 盘古菜单数据 - sql/pangu_base_data.sql - 基础数据 - sql/pangu_school.sql - 学校数据 ### 修改内容 所有文件中的作者信息统一为: - 作者:湖北新华业务中台研发团队 → 作者:pangu - @author 湖北新华业务中台研发团队 → @author pangu ### 未修改的文件 其他文件中的作者字段已经是 `pangu` 或未设置作者,无需修改: - Java文件(80+):已经是 @author pangu ✅ - Vue文件(30+):无作者注释或已是正确格式 ✅ - JS文件(20+):无作者注释或已是正确格式 ✅ - Markdown文档:无需修改 ✅ ### 工具脚本 新增批量修改工具:`scripts/change_author_to_pangu.sh` **功能**: - 自动扫描Java、Vue、JS、SQL、Markdown文件 - 批量替换作者为pangu - 生成详细修改日志 - 支持多种作者格式(@author、作者:、Author:) **使用方法**: ```bash cd /path/to/pangu-user-platform ./scripts/change_author_to_pangu.sh ``` ### 统计信息 - ✅ 扫描文件:210个 - ✅ 修改文件:9个 - ✅ 跳过文件:201个(已是pangu或无作者) --- 作者:pangu
2026-02-01 13:27:32 +08:00
# 作 者pangu
fix: 修复管理员角色菜单权限缺失问题 ## 问题描述 用户反馈:登录管理后台后,只能看到盘古业务菜单,缺少RuoYi系统管理、系统监控、系统工具等菜单 ## 问题分析 ### 根本原因 管理员角色(role_id=1)的菜单权限配置不完整,只有盘古业务菜单权限,缺少RuoYi系统菜单权限 ### 权限状态检查 ```sql -- 修复前 SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1; -- 结果:30条(仅盘古业务菜单) -- 各类型菜单权限分布 RuoYi系统菜单:0条 ❌ (应该有72条) 盘古业务菜单: 30条 ✅ 合计: 30条 ❌ (应该有118条) ``` ### 影响 - ❌ 无法访问用户管理、角色管理、菜单管理 - ❌ 无法进行系统配置和权限分配 - ❌ 无法使用代码生成等系统工具 - ❌ 系统功能严重受限 ## 解决方案 ### 1. 立即修复(已执行) ```sql -- 删除现有权限 DELETE FROM sys_role_menu WHERE role_id = 1; -- 为管理员角色添加所有菜单权限 INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, menu_id FROM sys_menu; ``` ### 2. 创建权限修复脚本 **新增**:`sql/fix_admin_permissions.sh` **功能特性**: - ✅ 检查当前管理员角色权限状态 - ✅ 统计菜单权限分布 - ✅ 自动备份现有权限 - ✅ 一键修复权限配置 - ✅ 验证修复结果 **使用方法**: ```bash cd sql ./fix_admin_permissions.sh # 按提示选择y确认 # 退出登录并重新登录 ``` ### 3. 创建配置文档 **新增**:`docs/07-运维文档/角色权限配置指南.md` **内容包含**: - ✅ 问题说明和原因分析 - ✅ 3种修复方法(脚本/SQL/界面) - ✅ 验证步骤(数据库+前端) - ✅ 角色权限管理最佳实践 - ✅ 常见问题Q&A - ✅ 权限备份恢复方法 ## 修复结果 ### 数据库验证 ```sql -- 修复后 SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 1; -- 结果:118条 ✅ -- 各类型菜单权限分布 RuoYi系统菜单:72条 ✅ 盘古业务菜单: 46条 ✅ 合计: 118条 ✅ -- 顶级菜单权限 menu_id menu_name order_num 2000 盘古管理 0 ✅ 1 系统管理 1 ✅ 2 系统监控 2 ✅ 3 系统工具 3 ✅ 4 若依官网 4 ✅ ``` ### 前端验证 退出登录并重新登录后,菜单栏应显示: - ✅ 盘古管理(学校、会员、学生、应用、基础数据) - ✅ 系统管理(用户、角色、菜单、部门、岗位、字典、参数、通知、日志) - ✅ 系统监控(在线用户、定时任务、数据监控、服务监控、缓存监控) - ✅ 系统工具(表单构建、代码生成、系统接口) - ✅ 若依官网 ## 重要提醒 ⚠️ **权限修改后,必须退出登录并重新登录才会生效!** ## 相关文件 - sql/fix_admin_permissions.sh - 权限修复脚本 - docs/07-运维文档/角色权限配置指南.md - 配置文档 --- 作者:湖北新华业务中台研发团队
2026-02-01 13:23:44 +08:00
# 创建时间2026-01-31
# 使用方法:./fix_admin_permissions.sh
# ============================================================
set -e
# 数据库配置
DB_HOST="8.148.25.55"
DB_PORT="3306"
DB_USER="root"
DB_PASS="aly2024A"
DB_NAME="pguser-db"
echo "============================================================"
echo "管理员角色菜单权限修复工具"
echo "============================================================"
echo ""
# 1. 检查当前管理员角色权限
echo "1. 检查当前管理员角色权限..."
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
SELECT
CASE
WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
ELSE '盘古业务菜单'
END AS menu_type,
COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END
WITH ROLLUP;
" 2>&1 | grep -v "Warning"
echo ""
echo "2. 菜单总数统计..."
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
SELECT
'系统菜单总数' AS item,
COUNT(*) as count
FROM sys_menu
UNION ALL
SELECT
'管理员已分配' AS item,
COUNT(*) as count
FROM sys_role_menu
WHERE role_id = 1;
" 2>&1 | grep -v "Warning"
echo ""
read -p "是否为管理员角色添加所有菜单权限?(y/n): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
echo ""
echo "正在修复管理员角色权限..."
# 备份当前权限
echo " - 创建权限备份..."
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
CREATE TABLE IF NOT EXISTS sys_role_menu_backup_$(date +%Y%m%d) AS
SELECT * FROM sys_role_menu WHERE role_id = 1;
" 2>&1 | grep -v "Warning"
# 删除现有权限
echo " - 清空现有权限..."
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
DELETE FROM sys_role_menu WHERE role_id = 1;
" 2>&1 | grep -v "Warning"
# 添加所有菜单权限
echo " - 添加所有菜单权限..."
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu;
" 2>&1 | grep -v "Warning"
echo ""
echo "✅ 权限修复完成!"
echo ""
echo "修复后的权限统计:"
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
SELECT
CASE
WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单'
ELSE '盘古业务菜单'
END AS menu_type,
COUNT(*) as count
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = 1
GROUP BY CASE WHEN m.menu_id < 2000 THEN 'RuoYi系统菜单' ELSE '盘古业务菜单' END
WITH ROLLUP;
" 2>&1 | grep -v "Warning"
echo ""
echo "顶级菜单权限:"
mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" --default-character-set=utf8mb4 "$DB_NAME" -e "
SELECT m.menu_id, m.menu_name, m.order_num
FROM sys_menu m
INNER JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
WHERE rm.role_id = 1 AND m.parent_id = 0
ORDER BY m.order_num;
" 2>&1 | grep -v "Warning"
echo ""
echo "⚠️ 请退出登录并重新登录,菜单权限才会生效!"
else
echo ""
echo "❌ 操作已取消"
fi
echo ""
echo "============================================================"
echo "修复完成!"
echo "============================================================"