guoyu/Study-Vue-redis/fix_logininfor_permission.sql

63 lines
2.1 KiB
MySQL
Raw Normal View History

2025-12-03 18:58:36 +08:00
-- 修复登录日志权限问题
-- 如果操作日志可以访问但登录日志不能访问执行此SQL
-- 1. 首先检查当前用户的权限情况
SELECT
u.user_name,
r.role_name,
r.role_key,
m.menu_name,
m.perms,
m.status as menu_status
FROM sys_user u
LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id
LEFT JOIN sys_role r ON ur.role_id = r.role_id
LEFT JOIN sys_role_menu rm ON r.role_id = rm.role_id
LEFT JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE u.user_name = 'admin' -- 替换为你的用户名
AND m.perms IN ('monitor:logininfor:list', 'monitor:operlog:list')
ORDER BY m.perms;
-- 2. 如果发现登录日志权限缺失执行以下SQL修复
-- 方法A如果操作日志权限存在复制相同的角色菜单关联到登录日志
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT DISTINCT
rm.role_id,
(SELECT menu_id FROM sys_menu WHERE perms = 'monitor:logininfor:list' LIMIT 1) as menu_id
FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE m.perms = 'monitor:operlog:list'
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm2
INNER JOIN sys_menu m2 ON rm2.menu_id = m2.menu_id
WHERE rm2.role_id = rm.role_id
AND m2.perms = 'monitor:logininfor:list'
);
-- 方法B直接为所有角色添加登录日志权限如果菜单存在
-- 注意:执行前请确认 sys_menu 表中存在 perms = 'monitor:logininfor:list' 的记录
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT DISTINCT
r.role_id,
(SELECT menu_id FROM sys_menu WHERE perms = 'monitor:logininfor:list' LIMIT 1) as menu_id
FROM sys_role r
WHERE NOT EXISTS (
SELECT 1 FROM sys_role_menu rm
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = r.role_id
AND m.perms = 'monitor:logininfor:list'
);
-- 3. 验证修复结果
SELECT
r.role_name,
r.role_key,
m.menu_name,
m.perms
FROM sys_role r
INNER JOIN sys_role_menu rm ON r.role_id = rm.role_id
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE m.perms IN ('monitor:logininfor:list', 'monitor:operlog:list')
ORDER BY r.role_id, m.perms;