121 lines
4.0 KiB
Bash
Executable File
121 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
||
# ============================================================
|
||
# 脚本名称:fix_admin_permissions.sh
|
||
# 功能说明:修复管理员角色菜单权限(添加所有菜单权限)
|
||
# 作 者:湖北新华业务中台研发团队
|
||
# 创建时间: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 "============================================================"
|