05_test_database_auth.sql
5.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
-- Apple经销商ERP系统 - 数据库认证测试脚本
-- 创建时间: 2025-01-27
-- 版本: v1.0
SET NAMES utf8mb4;
USE apple_erp;
-- =========================================
-- 1. 验证用户数据
-- =========================================
SELECT '=== 用户数据验证 ===' AS message;
SELECT
user_id AS '用户ID',
username AS '用户名',
real_name AS '真实姓名',
phone AS '手机号',
email AS '邮箱',
status AS '状态',
last_login_time AS '最后登录时间',
last_login_ip AS '最后登录IP',
create_time AS '创建时间'
FROM t_sys_user
WHERE del_flag = '0'
ORDER BY user_id;
-- =========================================
-- 2. 验证用户角色关联
-- =========================================
SELECT '=== 用户角色关联验证 ===' AS message;
SELECT
u.username AS '用户名',
u.real_name AS '真实姓名',
r.role_code AS '角色编码',
r.role_name AS '角色名称',
r.status AS '角色状态'
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
WHERE u.del_flag = '0' AND r.del_flag = '0' AND ur.del_flag = '0'
ORDER BY u.username, r.role_code;
-- =========================================
-- 3. 验证用户权限
-- =========================================
SELECT '=== 用户权限验证 ===' AS message;
SELECT
u.username AS '用户名',
r.role_name AS '角色名称',
m.menu_name AS '菜单名称',
m.perms AS '权限标识'
FROM t_sys_user u
JOIN t_sys_user_role ur ON u.user_id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.role_id
JOIN t_sys_role_menu rm ON r.role_id = rm.role_id
JOIN t_sys_menu m ON rm.menu_id = m.menu_id
WHERE u.del_flag = '0'
AND r.del_flag = '0'
AND ur.del_flag = '0'
AND rm.del_flag = '0'
AND m.del_flag = '0'
AND r.status = 1
AND m.status = 1
ORDER BY u.username, r.role_name, m.sort;
-- =========================================
-- 4. 测试用户查询(模拟认证过程)
-- =========================================
SELECT '=== 模拟认证查询测试 ===' AS message;
-- 测试admin用户查询
SELECT
'admin用户查询' AS test_case,
u.user_id,
u.username,
u.real_name,
u.password,
u.status,
COUNT(DISTINCT r.role_id) AS role_count,
COUNT(DISTINCT m.menu_id) AS menu_count
FROM t_sys_user u
LEFT JOIN t_sys_user_role ur ON u.user_id = ur.user_id AND ur.del_flag = '0'
LEFT JOIN t_sys_role r ON ur.role_id = r.role_id AND r.del_flag = '0' AND r.status = 1
LEFT JOIN t_sys_role_menu rm ON r.role_id = rm.role_id AND rm.del_flag = '0'
LEFT JOIN t_sys_menu m ON rm.menu_id = m.menu_id AND m.del_flag = '0' AND m.status = 1
WHERE u.username = 'admin' AND u.del_flag = '0' AND u.status = 1
GROUP BY u.user_id, u.username, u.real_name, u.password, u.status;
-- 测试operator用户查询
SELECT
'operator用户查询' AS test_case,
u.user_id,
u.username,
u.real_name,
u.password,
u.status,
COUNT(DISTINCT r.role_id) AS role_count,
COUNT(DISTINCT m.menu_id) AS menu_count
FROM t_sys_user u
LEFT JOIN t_sys_user_role ur ON u.user_id = ur.user_id AND ur.del_flag = '0'
LEFT JOIN t_sys_role r ON ur.role_id = r.role_id AND r.del_flag = '0' AND r.status = 1
LEFT JOIN t_sys_role_menu rm ON r.role_id = rm.role_id AND rm.del_flag = '0'
LEFT JOIN t_sys_menu m ON rm.menu_id = m.menu_id AND m.del_flag = '0' AND m.status = 1
WHERE u.username = 'operator' AND u.del_flag = '0' AND u.status = 1
GROUP BY u.user_id, u.username, u.real_name, u.password, u.status;
-- 测试auditor用户查询
SELECT
'auditor用户查询' AS test_case,
u.user_id,
u.username,
u.real_name,
u.password,
u.status,
COUNT(DISTINCT r.role_id) AS role_count,
COUNT(DISTINCT m.menu_id) AS menu_count
FROM t_sys_user u
LEFT JOIN t_sys_user_role ur ON u.user_id = ur.user_id AND ur.del_flag = '0'
LEFT JOIN t_sys_role r ON ur.role_id = r.role_id AND r.del_flag = '0' AND r.status = 1
LEFT JOIN t_sys_role_menu rm ON r.role_id = rm.role_id AND rm.del_flag = '0'
LEFT JOIN t_sys_menu m ON rm.menu_id = m.menu_id AND m.del_flag = '0' AND m.status = 1
WHERE u.username = 'auditor' AND u.del_flag = '0' AND u.status = 1
GROUP BY u.user_id, u.username, u.real_name, u.password, u.status;
-- =========================================
-- 5. 密码验证测试
-- =========================================
SELECT '=== 密码验证测试 ===' AS message;
-- 检查密码格式(应该是BCrypt格式)
SELECT
username AS '用户名',
password AS '密码哈希',
CASE
WHEN password LIKE '$2a$%' THEN 'BCrypt格式'
WHEN password LIKE '$2b$%' THEN 'BCrypt格式'
WHEN password LIKE '$2y$%' THEN 'BCrypt格式'
ELSE '非BCrypt格式'
END AS '密码格式'
FROM t_sys_user
WHERE del_flag = '0'
ORDER BY username;
-- =========================================
-- 6. 数据完整性检查
-- =========================================
SELECT '=== 数据完整性检查 ===' AS message;
-- 检查是否有用户没有角色
SELECT
'无角色用户' AS check_item,
COUNT(*) AS count
FROM t_sys_user u
LEFT JOIN t_sys_user_role ur ON u.user_id = ur.user_id AND ur.del_flag = '0'
WHERE u.del_flag = '0' AND u.status = 1 AND ur.user_id IS NULL;
-- 检查是否有角色没有菜单权限
SELECT
'无菜单权限角色' AS check_item,
COUNT(*) AS count
FROM t_sys_role r
LEFT JOIN t_sys_role_menu rm ON r.role_id = rm.role_id AND rm.del_flag = '0'
WHERE r.del_flag = '0' AND r.status = 1 AND rm.role_id IS NULL;
-- 检查是否有菜单没有权限标识
SELECT
'无权限标识菜单' AS check_item,
COUNT(*) AS count
FROM t_sys_menu m
WHERE m.del_flag = '0' AND m.status = 1 AND (m.perms IS NULL OR m.perms = '');
SELECT '=== 数据库认证测试完成 ===' AS message;