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

267 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 业务库清理说明
数据库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')` 替换为实际的排除账号列表。
---
### 二、操作原则
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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 查询确认**
```sql
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 执行删除**
```sql
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属于租户级资源不随用户删除而删除。如需清理权限组和菜单需额外执行。