---
title: "新建租户 | OceanBase 文档中心"
description: 新建租户 您可以通过 SQL 语句或 OCP 来新建租户。 通过 SQL 语句新建租户 OceanBase 数据库支持两种类型的租户： MySQL 和 Oracle。只有 root 用户连接到 sys 租户（ root@sys ）才能执行 CREATE TENANT 命令去创建租户。 创建租户的语法 创建租户的 SQ…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.1.2 企业版

# 新建租户

更新时间：2024-06-17 17:15:42

您可以通过 SQL 语句或 OCP 来新建租户。

## 通过 SQL 语句新建租户

OceanBase 数据库支持两种类型的租户： MySQL 和 Oracle。只有 `root` 用户连接到 `sys` 租户（`root@sys`）才能执行 `CREATE TENANT` 命令去创建租户。

### 创建租户的语法

创建租户的 SQL 语法如下：

```sql
CREATE TENANT [IF NOT EXISTS] tenant_name
     [tenant_characteristic_list] [opt_set_sys_var];

tenant_characteristic_list:
  tenant_characteristic [, tenant_characteristic...]

tenant_characteristic:
      COMMENT 'string'  
    | {CHARACTER SET | CHARSET} [=] charsetname
    | COLLATE [=]  collationname
    | ZONE_LIST [=] (zone [, zone...])
    | PRIMARY_ZONE [=] zone  
    | DEFAULT TABLEGROUP [=] {NULL | tablegroup}
    | RESOURCE_POOL_LIST [=](poolname [, poolname...])
    | LOCALITY [=] 'locality description'

opt_set_sys_var:
  {SET | SET VARIABLES | VARIABLES} system_var_name = expr [,system_var_name = expr] ...

```

语法中参数说明如下表所示。

| 参数 | 描述 |
| --- | --- |
| IF NOT EXISTS | 可选参数，如果要创建的租户名已存在，并且没有指定 `IF NOT EXISTS`，则会出现错误。 |
| tenant_name | 租户名的合法性和变量名一致，最长 128 个字符，字符只能是大小写英文字母、数字和下划线，而且必须以字母或下划线开头，并且不能是 OceanBase 数据库的关键字。 OceanBase 数据库中所支持的关键字请参见 MySQL 模式的 [预留关键字](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000358345) 和 Oracle 模式的 [预留关键字](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000358330)。 |
| RESOURCE_POOL_LIST | 指定分配给租户的资源池列表，创建租户时的必填项。 **注意**   在分配资源池时，普通租户的内存的最小规格必须大于等于 5 GB，否则租户会创建失败。如果您希望创建一个租户进行非常简单的功能测试，可以修改参数 `alter system __min_full_resource_pool_memory` 的值为 `1073741824` 来允许以最小 1 GB 内存的规格创建租户。 |
| DEFAULT TABLEGROUP | 用于指定租户默认的表组信息，`NULL` 表示取消默认表组。如果不指定，默认为 `NULL`。 |
| COMMENT | 指定对该租户的注释信息。 |
| CHARACTER SET \| CHARSET | 指定租户的字符集。 字符集相关的介绍信息请参见 [字符集](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000359820)。 |
| COLLATE | 指定租户的字符序。 字符序相关的介绍信息请参见 [字符序](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000359821)。 |
| ZONE_LIST | 指定租户的 Zone 列表。 |
| PRIMARY_ZONE | 指定租户的 Primary Zone。Primary Zone 表示 Leader 副本的偏好位置。指定 Primary Zone 实际上是指定了 Leader 更趋向于被调度到哪个 Zone 上。 Primary Zone 实际上是一个 Zone 的列表，列表中包含多个 Zone。当 Primary Zone 列表包含多个 Zone 时，使用分号（;）分隔的 Zone 具有从高到底的优先级；使用逗号（,）分隔的 Zone 具有相同优先级。例如，`primary_ zone =' zone1; zone2, zone3'` 表示该租户的表的分区 Leader 在 `zone1` 上， `zone1` 比 `zone2`、`zone3` 的优先级高，`zone2` 和 `zone3` 是同一优先级。**注意**   在指定 `PRIMARY_ZONE` 时，其值可以设置为 `RANDOM`（必须大写），表示指定租户所在的所有 Zone 作为 `PRIMARY_ZONE` 的第一优先级。 |
| LOCALITY | 指定副本在 Zone 间的分布情况。 例如：`F@z1,F@z2,F@z3,R@z4` 表示 `z1`、`z2`、`z3` 为全功能副本，`z4` 为只读副本。 |
| system_var_name | 可选，指定租户的系统变量值，其中：   - 变量 `ob_compatibility_mode` 用于指定租户的兼容模式，可选择 MySQL 或 Oracle 模式，并且只能在创建时指定。如果不指定 `ob_compatibility_mode`，则默认兼容模式为 MySQL 模式。 - 变量 `ob_tcp_invited_nodes` 用于指定租户连接的白名单，即允许哪些客户端 IP 连接该租户。如果不调整 `ob_tcp_invited_nodes` 的值，则默认租户的连接方式为只允许本机的 IP 连接数据库。      您也可以待租户创建成功后再修改其白名单设置，修改白名单的具体操作请参见 [设置和查看租户白名单](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000360634)。      OceanBase 数据库中，租户可设置的系统变量请参见 [系统变量](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000358808)。 |

### 使用示例

- 创建名为 `test_tenant` 的一个 3 副本的 MySQL 租户（创建新租户默认是 MySQL 租户）。

  ```sql
  obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1');

  ```
 - 创建名为 `test_tenant` 的一个 3 副本 Oracle 租户。

  创建 Oracle 租户需要通过参数 `ob_compatibility_mode` 设置租户模式。

  ```sql
  obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1') SET ob_compatibility_mode='oracle';

  ```
 - 创建租户，并指定允许任何客户端 IP 连接该租户。

  ```sql
  obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4',ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%' ;

  ```

### 确认租户是否创建成功

创建租户后，您可以通过查询 `oceanbase.gv$tenant` 视图来确认租户是否创建成功。

1. 使用 `root` 用户登录到数据库的 `sys` 租户。
 2. 执行以下语句，查看当前集群中是否有新创建的租户。

   示例如下：

   ```sql
   obclient> SELECT * FROM oceanbase.gv$tenant;
   +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+
   | tenant_id | tenant_name | zone_list | primary_zone | collation_type | info          | read_only | locality      |
   +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+
   |         1 | sys         | zone1     | zone1        |              0 | system tenant |         0 | FULL{1}@zone1 |
   |      1001 | MySQL       | zone1     | zone1        |              0 |               |         0 | FULL{1}@zone1 |
   |      1002 | Oracle      | zone1     | zone1        |              0 |               |         0 | FULL{1}@zone1 |
   +-----------+-------------+-----------+--------------+----------------+---------------+-----------+---------------+
   3 rows in set

   ```

### 后续操作

租户创建成功后，默认其管理员用户（MySQL 模式为 `root`，Oracle 模式为 `sys`）的密码为空，您可以使用 `obclient -h10.10.10.1 -P2883 -uusername@tenantname#clustername -p -A` 语句登录数据库后，修改管理员用户的密码。修改用户密码的操作请参见 [修改用户密码（Oracle 模式）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000361538)和 [修改用户密码（MySQL 模式）](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000361551)。

更多连接数据库的示例及操作，请参见 [连接数据库](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000360530)。

## 通过 OCP 新建租户

您可以通过 OCP 新建租户。新建租户有以下两种方式：

- 在租户页面创建租户。
 - 在指定集群的租户管理页面创建租户。

本节为您展示通过指定集群的租户管理页面创建租户的操作步骤。

### 前提条件

在创建租户前，需要确认以下信息：

- 由于主备库配置中，备集群不支持独立创建租户，故待创建租户的集群必须为主集群，且状态为运行中。

  主备库配置中租户管理操作的更多介绍请参见 [租户管理](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000360536)。
 - 请确认当前登录用户具备 **CLUSTER_MANAGER** 角色权限，如果当前用户没有该角色权限，请联系管理员为您添加相应角色，具体操作方法请参见 OCP 对应版本的《用户指南》文档中的 **编辑用户** 。

### 操作步骤

1. 登录 OCP。
 2. 单击左侧导航栏的 **集群** 。
 3. 在 **集群列表** 区域选择待操作的集群并单击其集群名。
 4. 在显示的页面的左侧导航栏上，单击 **租户管理** 。
 5. 在页面右上角单击 **新建租户** 。

   ![16310527](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/2840112261/p278265.png)
 6. 填写 **基础信息** 。

      1. 集群默认为当前集群。
      2. 请输入 **租户名称** 。租户名称支持英文大小写字母、数字和下划线，长度为 2~64 字符。
 7. 填写 **Zone 信息** 。

   默认系统会根据所选集群的 Zone 信息显示可配置的 Zone 列表，对于无需做副本分布的 Zone，可以单击后面的删除按钮删除该 Zone 条目。需要配置的 Zone 信息及其相关说明如下表所示。

   | **配置** | **描述** |
   | --- | --- |
   | **副本类型** | 有以下选项：    - 全功能型副本   - 只读型副本   - 日志型副本   请选择多个全功能副本类型，确保全功能副本类型占多数派。 |
   | **Unit 规格** | OCP 内置了一套 Unit 规格，请参考本文档附录中 **OCP 资源单元规格列表** 进行选择，或者您也可以在列表下方单击 **新增规格** 按钮新增自定义规格。 |
   | **Unit 数量** | 指定该 Zone下的 Unit 数量。Unit 数量不能超过该 Zone下 Server 个数。 |
   | **Zone 优先级排序** | Zone的优先级排序。该优先级顺序影响 sys 租户的 Primary Zone 的优先级顺序。 左边的列表框中显示了当前集群的所有 Zone。 您可以在左侧列表框中选择一个或多个 Zone 添加到右侧的列表框中，默认先选择的 Zone 的优先级高于后选择的 Zone，一次选中的多个 Zone 的优先级相同。 移动到右侧的列表框中后，您也可以在右侧的列表框中通过拖拽调整顺序，列表框上方的 Zone 的优先级高于下方的 Zone。 |
 8. 填写 **基本设置** 。需要完成的基本设置及其相关说明如下表所示。

   | **配置** | **描述** |
   | --- | --- |
   | **管理员初始密码** | 租户管理员账号的密码，支持随机生成。 对于 MySQL 模式，其管理员账号为 root。 对于 Oracle 模式，其管理员账号为 SYS。 密码格式要求如下：长度为 8~32 个字符，支持字母、数字和特殊字符，且至少包含大、小写字母、数字和特殊字符各 2 个，支持的特殊字符为 ~!@#%^&*_-+=`\|(){}[]:;',.?/ |
   | **租户模式** | 当前支持 MySQL 和 Oracle 两种租户模式。 需要注意的是，当所选集群的 OB 版本在 2.1 及以上时才支持 Oracle 租户模式。 |
   | **字符集与编码** | 对于 MySQL 模式，可选字符集有 utf8mb4、binary、gbk 和 gb18030；默认为 utf8mb4。    对于 Oracle 模式，可选字符集有utf8mb4、gbk 和 gb18030，默认为 utf8mb4。 |
   | **备注** | 可选，备注说明信息。 |
   | **IP 地址白名单** | 用于指定该租户允许登录的客户端列表。如果不指定，则默认配置为 **%** ，表示允许所有客户端链接。    自定义白名单列表时需要注意，OCP 机器地址以及所依赖的 OBProxy 地址必须在此名单中，否则 OCP 将无法管理此租户。    白名单格式说明如下：    - IP地址示例：10.10.10.10，10.10.10.11。   - 子网/掩码示例：10.10.10.0/24。   - 模糊匹配示例：10.10.10.% 或 10.10.10._。   - 多种格式混合示例：10.10.10.10，10.10.10.11，10.10.10.%，10.10.10._，10.10.10.0/24。 |
 9. 打开 **参数设置** 模块，并配置租户参数。

      - 您可通过如图 ① 处，逐个添加启动参数项并为其配置值。
      - 也可通过如图 ② 处，将鼠标悬停于 **选择参数模板** 字样上，然后选择一个参数模板，系统会将模板中的参数连同配置自动填充到此处。

       如果您的租户模式为 MySQL，且选择的参数模板中包含仅支持 Oracle 定义的参数，那么您需在使用模板填充后，手动删除这些参数。

       ![1201](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/2107238361/p361159.png)
 10. 单击 **提交** 。

    您可通过弹出框中的 **查看任务** 按钮，查看新建租户任务的执行进度。

    当任务状态为 **完成** ，且集群 **租户管理** 页的 **租户列表** 中该新建租户的状态为 **运行中** 时，表示租户新建成功。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
