safety-eval-service/docs/租户数据清理操作文档.md

7.7 KiB
Raw Blame History

业务库清理说明

数据库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 替换为目标租户IDNOT IN ('cqanquan','15100110011','jianguan001') 替换为实际的排除账号列表。


二、操作原则

  1. 主表即删除目标:每条 SELECT 的主表就是要删除数据的表SELECT 列出的每一行就是将被 DELETE 删除的行。
  2. 先查询后删除:每个步骤必须先执行 SELECT 确认影响范围,核对无误后再执行对应的 DELETE。
  3. 关联逻辑一致SELECT 和 DELETE 使用完全相同的 FROM/JOIN/WHERE 结构,只将 SELECT 替换为 DELETE 主表别名。
  4. 按依赖顺序清理:先删关联表(子表),再删主表,避免数据不一致。
  5. 单步执行:每一步独立执行并确认结果,不要批量粘贴所有 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属于租户级资源不随用户删除而删除。如需清理权限组和菜单需额外执行。