---
title: "新建租户 - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: 新建租户 您可以通过 SQL 语句新建租户。 功能适用性 OceanBase 数据库社区版仅提供 MySQL 模式。 使用限制 仅 sys 租户可以创建租户。 新建租户 OceanBase 数据库支持两种类型的租户： MySQL 和 Oracle。 新建租户语句 创建租户的 SQL 语法如下： CREATE TENA…
---
切换语言

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

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

# 新建租户

更新时间：2024-06-17 16:32:30

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.1.0/zh-CN/700.reference/200.administrator-guide/200.basic-database-management/400.manage-tenants/200.create-a-tenant.md)  

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

#### 功能适用性

OceanBase 数据库社区版仅提供 MySQL 模式。

## 使用限制

仅 `sys` 租户可以创建租户。

## 新建租户

OceanBase 数据库支持两种类型的租户： MySQL 和 Oracle。

### 新建租户语句

创建租户的 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'
    | ENABLE_ARBITRATION_SERVICE = {true | false}

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/common-oceanbase-database-cn-10000000001687907) 和 Oracle 模式的 [预留关键字](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001687908)。 |
| RESOURCE_POOL_LIST | 创建租户时的必填项，创建租户时仅支持分配一个资源池。如果需要为租户添加多个资源池，则可以待租户创建成功后通过修改租户资源池的方式再进行添加。      #### 注意    在分配资源池时，普通租户的内存的最小规格由隐藏配置项 `__min_full_resource_pool_memory` 控制，默认值为 5G，取值范围为 [1073741824,+∞)。如果您希望创建一个租户进行非常简单的功能测试，可以通过 `ALTER SYSTEM SET __min_full_resource_pool_memory = '1073741824';` 语句修改参数的值为 1073741824 来允许以最小 1 GB 内存的规格创建租户。 |
| DEFAULT TABLEGROUP | 用于指定租户默认的表组信息，`NULL` 表示取消默认表组。如果不指定，默认为 `NULL`。 |
| COMMENT | 指定对该租户的注释信息。 |
| CHARACTER SET \| CHARSET | 指定租户的字符集。    字符集相关的介绍信息请参见 [字符集](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001702724)。 |
| COLLATE | 指定租户的字符序。    字符序相关的介绍信息请参见 [字符序](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001702725)。 |
| 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` 时，其值可以设置为 `ANDOM`（必须大写），表示指定租户所在的所有 Zone 作为 `PRIMARY_ZONE` 的第一优先级。     更多 Primary Zone 相关的介绍信息请参见 [Primary Zone](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001700587)。 |
| LOCALITY | 指定副本在 Zone 间的分布情况。    例如：`F@z1,F@z2,F@z3,F@z4` 表示 `z1`、`z2`、`z3` 、`z4` 为全功能副本。 |
| ENABLE_ARBITRATION_SERVICE | 指定租户是否开启仲裁服务，如果不显示指定，默认创建的租户其仲裁服务为关闭状态。 如果创建租户的时候未开启仲裁服务，可以在创建租户后再开启仲裁服务，详细操作请参见 [开启仲裁服务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001698744)。     #### 功能适用性    该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。 |
| 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/common-oceanbase-database-cn-10000000001701018)。      OceanBase 数据库中，租户可设置的系统变量请参见 [系统变量](https://www.oceanbase.com/docs/common-oceanbase-database-cn-0000000002186363)。 |

### 新建租户示例

- 创建名为 `test_tenant` 的一个 2 副本并开启仲裁服务的 MySQL 租户（创建新租户默认是 MySQL 租户）。

  #### 功能适用性

  该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版暂不支持仲裁服务功能。

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

  ```
 - 创建名为 `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.DBA_OB_TENANTS` 视图来确认租户是否创建成功。

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

   示例如下：

   ```sql
   obclient> SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'test_tenant'\G
   *************************** 1. row ***************************
                    TENANT_ID: 1004
                  TENANT_NAME: test_tenant
                  TENANT_TYPE: USER
                  CREATE_TIME: 2023-02-06 13:38:27.626314
                  MODIFY_TIME: 2023-02-06 13:38:45.005930
                 PRIMARY_ZONE: zone1;zone2,zone3
                     LOCALITY: FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3
            PREVIOUS_LOCALITY: NULL
           COMPATIBILITY_MODE: ORACLE
                       STATUS: NORMAL
                IN_RECYCLEBIN: NO
                       LOCKED: NO
                  TENANT_ROLE: PRIMARY
            SWITCHOVER_STATUS: NORMAL
             SWITCHOVER_EPOCH: 0
                     SYNC_SCN: 1678329060764126878
               REPLAYABLE_SCN: 1678329060764126878
                 READABLE_SCN: 1678329060621559803
           RECOVERY_UNTIL_SCN: 4611686018427387903
                     LOG_MODE: ARCHIVELOG
   ARBITRATION_SERVICE_STATUS: DISABLED
   1 row in set

   ```

## 后续操作

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

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

此外，如果需要使用普通用户登录，则需要为租户创建新的普通用户并授权，创建用户并授权的相关操作请参见 [管理用户和权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001701494) 章节。

 上一篇 下一篇 ![有帮助](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) 咨询热线
