# 用户管理

您可以在 EMQX Tables 部署中创建自定义用户，并为用户配置数据库访问范围及表操作权限。EMQX Broker 或外部客户端可使用这些用户的用户名和密码连接 EMQX Tables。

本页适用于部署在阿里云上且左侧导航栏中显示**用户管理**的 EMQX Tables 基础版部署。此类部署的**部署概览**页面不显示默认用户名和密码，因此在连接 EMQX Broker 或外部客户端前，需要先创建用户。

如果部署中未显示**用户管理**，连接外部数据库客户端时，请使用**部署概览** -> **连接信息**中显示的默认用户名和密码。

::: tip 提示

每个 EMQX Tables 部署最多可创建 10 个用户。

:::

## 获取连接认证信息

连接外部数据库客户端时，需要使用 Tables 数据库的用户名和密码。创建 EMQX Tables 连接器时，是否需要手动填写认证信息取决于 Tables 部署是否支持用户管理：

- **显示用户管理的部署**：进入目标 Tables 部署，点击**用户管理** -> **添加用户**，自行设置用户名和密码，并配置目标数据库权限。创建完成后，使用这组凭据创建连接器或连接外部数据库客户端。详细步骤参见[添加用户](#添加用户)。已有用户名可以在用户列表中查看；密码无法查看，忘记后需[编辑用户](#编辑用户)并重置密码。
- **未显示用户管理的部署**：创建连接器时，系统会自动使用内置认证信息，无需手动填写。连接外部数据库客户端时，在**部署概览** -> **连接信息**中查看默认用户名和密码。

## 查看用户

1. 登录 Cloud Console，进入目标 EMQX Tables 部署。
2. 在左侧导航栏中点击**用户管理**。
3. 查看用户名和**访问控制**中的数据库授权。将鼠标悬停在数据库标签上，可以查看该库的具体权限。

没有数据库授权的用户显示为**未授权**。

![用户管理列表及数据库权限提示](./_assets/tables-users-management.png)

### 添加用户

1. 在**用户管理**页面，点击**添加用户**。
2. 输入**用户名**和**密码**：
   - **用户名**：输入自定义用户名，以字母开头，只能包含字母、数字或下划线，长度为 1–32 个字符，且不能与已有用户名重复。
   - **密码**：长度为 6–64 个字符。请妥善保存，密码之后无法找回，只能重置。
3. 在**访问控制**中选择一个数据库，并为该库选择权限预设，或选择**自定义**后勾选具体[权限](#权限)。
4. [可选] 点击**添加数据库授权**，为其他数据库分别配置权限。
5. 点击**确认**。创建成功后，弹窗关闭，用户列表中显示新用户。

创建时至少配置一个数据库授权，每条授权都必须选择数据库和至少一项权限。同一用户不能重复选择同一数据库；没有可选数据库时，**添加数据库授权**按钮不可用。

已有 10 个用户时，**添加用户**按钮不可用，将鼠标悬停在按钮上可以查看数量限制提示。

![添加用户及数据库授权配置](./_assets/tables-add-user.png)

### 编辑用户

1. 在**用户管理**页面，点击目标用户**操作**列中的编辑图标。
2. 根据需要修改密码、调整已有数据库的权限，或添加数据库授权。
3. 点击**确认**。保存成功后，弹窗关闭，用户列表更新。

用户名不可修改。只修改权限时，将**密码**留空以保留原密码；只修改密码时，保留数据库授权配置不变。修改密码后，请同步更新使用该用户的连接器和客户端。

### 删除用户

1. 确认没有连接器或外部客户端继续依赖该用户，或已将它们切换到其他用户。
2. 在**用户管理**页面，点击目标用户**操作**列中的删除图标。
3. 确认删除，并检查用户列表中已不再显示该用户。

用户删除后，使用该用户名和密码的新连接将无法通过认证。

## 权限

权限决定用户可以在所授权数据库中执行的操作。每个数据库可以使用不同的权限配置。

| 权限 | 说明 |
| --- | --- |
| `SELECT` | 查询数据。 |
| `INSERT` | 写入数据。 |
| `UPDATE` | 更新数据。 |
| `DELETE` | 删除数据。 |
| `CREATE` | 创建表。 |
| `ALTER` | 修改表结构。 |
| `INDEX` | 管理索引。 |
| `DROP` | 删除表。 |

可以选择以下权限预设：

| 预设 | 包含的权限 |
| --- | --- |
| **只读** | `SELECT` |
| **只写** | `INSERT`、`UPDATE`、`DELETE`、`CREATE`、`ALTER`、`INDEX`、`DROP` |
| **读写** | 上述全部 8 项权限。 |
| **Broker 集成** | `SELECT`、`INSERT` |
| **自定义** | 从 SQL 和表权限中手动选择一项或多项。 |

切换到**自定义**时，需要重新选择权限。

![自定义权限选择](./_assets/tables-custom-privilege.png)

## 访问控制

在**访问控制**中，需要为每个数据库分别选择权限预设。该授权适用于所选数据库中的所有表。

例如，可以为同一用户配置：

| 数据库 | 权限预设 | 用途 |
| --- | --- | --- |
| `public` | **Broker 集成** | 供 Broker 写入和查询业务数据。 |
| `analytics` | **只读** | 仅查询分析数据。 |

### 撤销数据库授权

1. 编辑目标用户。
2. 在**访问控制**中，点击目标数据库授权区域右上角的删除图标，移除整条授权。
3. 点击**确认**，保存后检查用户列表中的数据库授权。

权限变更仅影响对应数据库。撤销全部数据库授权后，用户账号仍会保留；如需删除账号，参见[删除用户](#删除用户)。

## 使用 Tables 用户创建连接器

以下步骤适用于左侧导航栏中显示**用户管理**的 Tables 部署。为此类部署创建连接器时，页面会显示用户名和密码字段。

1. 在 Tables 的**用户管理**页面创建用户，为目标表所在数据库选择 **Broker 集成**预设。
2. 进入 Broker 部署，创建 EMQX Tables 连接器，使用**快速配置**选择目标 Tables 部署。
3. 在页面显示的认证信息中，从**用户名**下拉列表选择已创建的用户，并输入该用户的**密码**。
4. 确认**数据库名字**与授权的目标数据库一致。
5. 点击**测试连接**。测试成功后，点击**新建**完成连接器创建。

用户名下拉列表显示部署中的所有用户，不会按数据库权限进行筛选。请选择在目标数据库中具有 `SELECT` 和 `INSERT` 权限的用户；可以使用 **Broker 集成**预设授予这两项权限。

如果目标 Tables 部署不显示**用户管理**，创建连接器时无需手动填写认证信息；连接器会自动使用该部署的内置认证信息。

详细步骤参见[创建 EMQX Tables 连接器](../data_integration/emqx_tables.md#创建-emqx-tables-连接器)。
