12.ob-user-and-permission-management.md•7.37 kB
# OceanBase 数据库管理 API 文档
## 一、用户管理
### 1. 创建数据库用户
**功能**:创建新数据库用户
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users`
**Path 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|----------|---------|------|--------|--------------|
| id | Integer | 是 | 1 | 集群 ID |
| tenantId | Integer | 是 | 5 | 租户 ID |
**Body 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|------------------|-----------------|------|-------------------------|----------------------------------------------------------------------|
| username | String | 是 | user1 | 用户名 |
| password | String | 是 | ****** | 密码 |
| saveToCredential | Boolean | 否 | true | 是否保存密码到 OCP 密码箱 |
| globalPrivileges | Array<String> | 否 | ["SELECT", "CREATE"] | 全局权限列表(MySQL 租户)或系统权限列表(Oracle 租户) |
| dbPrivileges | Array<Object> | 否 | | 数据库权限列表(MySQL 租户专用) |
| roles | Array<String> | 否 | ["R1", "R2"] | 角色列表(Oracle 租户专用) |
**返回结果**:
```json
{
"data": {
"username": "user1",
"globalPrivileges": ["SELECT", "CREATE"],
"dbPrivileges": [...],
"createTime": "2021-09-07T15:21:52.664003+08:00"
},
"successful": true,
"status": 200
}
```
---
### 2. 获取用户列表
**功能**:获取指定租户下的所有用户详情
**路径**:`GET /api/v2/ob/clusters/{id}/tenants/{tenantId}/users`
**Path 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|----------|---------|------|--------|--------------|
| id | Integer | 是 | 1 | 集群 ID |
| tenantId | Integer | 是 | 5 | 租户 ID |
**返回结果**:
```json
{
"data": {
"contents": [{
"username": "root",
"globalPrivileges": [...],
"dbPrivileges": [...]
}]
},
"successful": true
}
```
---
### 3. 获取用户详情
**功能**:获取指定用户的详细信息
**路径**:`GET /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}`
**Path 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|----------|---------|------|--------|--------------|
| id | Integer | 是 | 1 | 集群 ID |
| tenantId | Integer | 是 | 5 | 租户 ID |
| username | String | 是 | root | 用户名 |
---
### 4. 修改用户密码
**功能**:更新用户密码
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/changePassword`
**Body 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|------------------|---------|------|----------|--------------------|
| newPassword | String | 是 | newpwd | 新密码 |
| saveToCredential | Boolean | 否 | true | 是否保存到密码箱 |
---
### 5. 锁定/解锁用户
**锁定**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/lock`
**解锁**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/unlock`
---
### 6. 删除用户
**路径**:`DELETE /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}`
---
## 二、角色管理
### 1. 创建角色
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles`
**Body 参数**:
| 参数名 | 类型 | 必选 | 示例值 | 描述 |
|------------------|-----------------|------|-------------------------|--------------------|
| roleName | String | 是 | ROLE1 | 角色名 |
| globalPrivileges | Array<String> | 否 | ["CREATE_TABLE"] | 系统权限列表 |
| roles | Array<String> | 否 | ["PUBLIC"] | 被授予的角色列表 |
---
### 2. 获取角色列表
**路径**:`GET /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles`
---
### 3. 获取角色详情
**路径**:`GET /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}`
---
### 4. 删除角色
**路径**:`DELETE /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}`
---
### 5. 修改角色权限
**修改全局权限**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/modifyGlobalPrivilege`
**修改对象权限**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/modifyObjectPrivilege`
---
## 三、权限管理
### 1. 全局权限操作
**授予**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/grantGlobalPrivilege`
**撤销**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/revokeGlobalPrivilege`
**修改**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/modifyGlobalPrivilege`
---
### 2. 数据库权限操作
**授予**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/grantDbPrivilege`
**撤销**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/revokeDbPrivilege`
**修改**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/modifyDbPrivilege`
---
### 3. 对象权限操作
**授予用户**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/grantObjectPrivilege`
**撤销用户**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/revokeObjectPrivilege`
**修改用户**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/users/{username}/modifyObjectPrivilege`
**授予角色**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/grantObjectPrivilege`
**撤销角色**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/revokeObjectPrivilege`
---
## 四、角色间关系管理
### 1. 授予角色给角色
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/grantRole`
### 2. 撤销角色关系
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/revokeRole`
### 3. 修改角色关系
**路径**:`POST /api/v2/ob/clusters/{id}/tenants/{tenantId}/roles/{roleName}/modifyRole`
---
## 五、公共参数说明
### 1. Path 参数通用格式
所有路径参数需严格匹配类型:
- `id`: 整数类型(如 `1`)
- `tenantId`: 整数类型(如 `5`)
- `username`/`roleName`: 字符串类型(如 `"root"`)
### 2. dbObject 对象
```json
{
"objectType": "TABLE", // 取值:TABLE/VIEW/STORED_PROCEDURE
"objectName": "T1",
"schemaName": "U1"
}
```
### 3. 返回结果结构
所有操作返回统一结构:
```json
{
"successful": true,
"status": 200,
"timestamp": "2021-09-07T15:30:41.205+08:00",
"traceId": "f4783564b21746db",
"duration": 201,
"server": "a83ad33525"
}
```