7.7 KiB
7.7 KiB
业务库清理说明
数据库:safety-eval-service 不清理的表: basic_discipline_major industry_professional_standards org_business_scope_device_ref
租户数据清理操作文档
一、清理条件定义
执行前根据实际场景修改以下条件的值,并将修改后的值替换到下方所有 SQL 中。
| 条件 | 当前值 | 说明 |
|---|---|---|
| 目标租户ID | 2067161116369793024 |
所有 SQL 中 tenant_id = 后面的值 |
| 排除账号 | 'cqanquan','15100110011','jianguan001' |
所有 SQL 中 NOT IN (...) 里的账号列表 |
修改方式:在文档中全局替换。例如要清理另一个租户并调整排除账号,将所有 SQL 中的 2067161116369793024 替换为目标租户ID,将 NOT IN ('cqanquan','15100110011','jianguan001') 替换为实际的排除账号列表。
二、操作原则
- 主表即删除目标:每条 SELECT 的主表就是要删除数据的表,SELECT 列出的每一行就是将被 DELETE 删除的行。
- 先查询后删除:每个步骤必须先执行 SELECT 确认影响范围,核对无误后再执行对应的 DELETE。
- 关联逻辑一致:SELECT 和 DELETE 使用完全相同的 FROM/JOIN/WHERE 结构,只将 SELECT 替换为 DELETE 主表别名。
- 按依赖顺序清理:先删关联表(子表),再删主表,避免数据不一致。
- 单步执行:每一步独立执行并确认结果,不要批量粘贴所有 SQL。
三、清理步骤
步骤 1:用户关联角色
- 执行库:jjb-saas-system
- 主表(删除目标):sys_role_user
- 辅助表(过滤条件):sys_user
1.1 查询确认
SELECT ru.id, ru.user_id, ru.role_id
FROM sys_role_user ru
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
1.2 执行删除
DELETE ru FROM sys_role_user ru
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
步骤 2:用户关联部门
- 执行库:jjb-saas-system
- 主表(删除目标):sys_user_role_dept
- 辅助表(过滤条件):sys_user
2.1 查询确认
SELECT urd.id, urd.user_id, urd.role_id, urd.dept_id
FROM sys_user_role_dept urd
INNER JOIN sys_user u ON urd.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
2.2 执行删除
DELETE urd FROM sys_user_role_dept urd
INNER JOIN sys_user u ON urd.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
步骤 3:角色关联权限组
- 执行库:jjb-saas-system
- 主表(删除目标):sys_role_perms_group
- 辅助表(过滤条件):sys_role_user → sys_user
3.1 查询确认
SELECT rpg.id, rpg.role_id, rpg.group_id
FROM sys_role_perms_group rpg
INNER JOIN sys_role_user ru ON rpg.role_id = ru.role_id
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
3.2 执行删除
DELETE rpg FROM sys_role_perms_group rpg
INNER JOIN sys_role_user ru ON rpg.role_id = ru.role_id
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
步骤 4:角色数据
- 执行库:jjb-saas-system
- 主表(删除目标):sys_role
- 辅助表(过滤条件):sys_role_user → sys_user
4.1 查询确认
SELECT r.id, r.role_name, r.role_code
FROM sys_role r
INNER JOIN sys_role_user ru ON r.id = ru.role_id
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
4.2 执行删除
DELETE r FROM sys_role r
INNER JOIN sys_role_user ru ON r.id = ru.role_id
INNER JOIN sys_user u ON ru.user_id = u.id
WHERE u.tenant_id = 2067161116369793024
AND u.account NOT IN ('cqanquan','15100110011','jianguan001');
步骤 5:用户数据
- 执行库:jjb-saas-system
- 主表(删除目标):sys_user
- 辅助表:无
5.1 查询确认
SELECT id, account, name, mobile, email, status_enum, create_time
FROM sys_user
WHERE tenant_id = 2067161116369793024
AND account NOT IN ('cqanquan','15100110011','jianguan001');
5.2 执行删除
DELETE FROM sys_user
WHERE tenant_id = 2067161116369793024
AND account NOT IN ('cqanquan','15100110011','jianguan001');
步骤 6:账号租户关联
- 执行库:jjb-saas-auth
- 主表(删除目标):auth_account_tenant_rel
- 辅助表(过滤条件):auth_account
6.1 查询确认
SELECT atr.id, atr.account_id, atr.tenant_id
FROM auth_account_tenant_rel atr
INNER JOIN auth_account a ON atr.account_id = a.id
WHERE atr.tenant_id = 2067161116369793024
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
6.2 执行删除
DELETE atr FROM auth_account_tenant_rel atr
INNER JOIN auth_account a ON atr.account_id = a.id
WHERE atr.tenant_id = 2067161116369793024
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
步骤 7:账号租户密码
- 执行库:jjb-saas-auth
- 主表(删除目标):auth_account_tenant_password
- 辅助表(过滤条件):auth_account
7.1 查询确认
SELECT atp.id, atp.account_id, a.username, atp.user_type_enum, atp.status_enum
FROM auth_account_tenant_password atp
INNER JOIN auth_account a ON atp.account_id = a.id
WHERE atp.tenant_id = 2067161116369793024
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
7.2 执行删除
DELETE atp FROM auth_account_tenant_password atp
INNER JOIN auth_account a ON atp.account_id = a.id
WHERE atp.tenant_id = 2067161116369793024
AND a.username NOT IN ('cqanquan','15100110011','jianguan001');
步骤 8:账号数据
- 执行库:jjb-saas-auth
- 主表(删除目标):auth_account
- 辅助表:无
8.1 查询确认
SELECT id, username, mobile, name, status_enum, delete_enum
FROM auth_account
WHERE tenant_id = 2067161116369793024
AND username NOT IN ('cqanquan','15100110011','jianguan001');
8.2 执行删除
DELETE FROM auth_account
WHERE tenant_id = 2067161116369793024
AND username NOT IN ('cqanquan','15100110011','jianguan001');
四、清理顺序总览
| 顺序 | 步骤 | 库 | 主表(删除目标) | 辅助表 | 说明 |
|---|---|---|---|---|---|
| 1 | 用户关联角色 | jjb-saas-system | sys_role_user | sys_user | 解除用户与角色的绑定 |
| 2 | 用户关联部门 | jjb-saas-system | sys_user_role_dept | sys_user | 解除用户与部门的绑定 |
| 3 | 角色关联权限组 | jjb-saas-system | sys_role_perms_group | sys_role_user → sys_user | 解除角色与权限组的绑定 |
| 4 | 角色数据 | jjb-saas-system | sys_role | sys_role_user → sys_user | 删除角色本身 |
| 5 | 用户数据 | jjb-saas-system | sys_user | 无 | 删除用户记录 |
| 6 | 账号租户关联 | jjb-saas-auth | auth_account_tenant_rel | auth_account | 解除账号与租户的绑定 |
| 7 | 账号租户密码 | jjb-saas-auth | auth_account_tenant_password | auth_account | 删除租户级密码数据 |
| 8 | 账号数据 | jjb-saas-auth | auth_account | 无 | 删除账号记录 |
注意:权限组(sys_perms_group)和菜单(sys_menu)属于租户级资源,不随用户删除而删除。如需清理权限组和菜单,需额外执行。