---
title: "创建租户 - OceanBase 数据库 V4.0.0-preview | OceanBase 文档中心"
description: 创建租户 本节主要介绍通过 SQL 命令创建 OceanBase 数据库租户的方法。OceanBase 数据库仅支持 sys 租户创建资源单元、资源池和业务租户。 背景信息 在创建新租户时，如果当前的资源池均被使用（被其他租户使用），需要创建新的资源池。在创建资源池前，需要先确定资源单元配置和资源使用范围。 操作步骤…
---
切换语言

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

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

# 创建租户

更新时间：2024-07-25 11:47:11

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0-preview/zh-CN/400.deploy/300.deploy-oceanbase-database-enterprise/400.command-line-deployment/500.create-oceanbase-tenant-command-line/200.create-tenant-command-line.md)  

本节主要介绍通过 SQL 命令创建 OceanBase 数据库租户的方法。OceanBase 数据库仅支持 sys 租户创建资源单元、资源池和业务租户。

## 背景信息

在创建新租户时，如果当前的资源池均被使用（被其他租户使用），需要创建新的资源池。在创建资源池前，需要先确定资源单元配置和资源使用范围。

## 操作步骤

### 步骤一：创建资源单元

资源单元仅仅是规格定义，不实际分配资源。

#### 创建资源单元语法

```sql
CREATE RESOURCE UNIT unit_name
MAX_CPU [=] cpu_num,
[MIN_CPU [=] cpu_num,]
MEMORY_SIZE [=] mem_size,
[LOG_DISK_SIZE = disk_size,]
[MAX_IOPS [=] iops_num,MIN_IOPS [=] iops_num,IOPS_WEIGHT [=] weight_num];

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| unit_name | 指定资源单元名称。 |
| MAX_CPU | 指定 CPU 的最多数量。最小值为 `1C`。 |
| MIN_CPU | 指定 CPU 的最少数量，为可选项。默认等于 MAX_CPU。最小值为 `1C`。 |
| MEMORY_SIZE | 指定内存容量，最小值为 `1G`。 |
| LOG_DISK_SIZE | 指定租户的 Unit 日志盘大小，为可选项。默认值为 `3` 倍的内存规格值。最小值为 `2G`。 |
| MAX_IOPS | 指定 IOPS 的最多数量，为可选项。最小值为 `1024`。 |
| MIN_IOPS | 指定 IOPS 的最少数量，为可选项。最小值为 `1024`。 |
| IOPS_WEIGHT | 指定 IOPS 的权重值，为可选项。 |

#### 说明

IOPS 规格参数默认不需要指定，系统根据 CPU 规格自动计算。计算规则如下：

- MAX_IOPS 和 MIN_IOPS 最小值 `1024`，并且要求 MAX_IOPS 的值大于等于 MIN_IOPS。
 - 如果均未指定 MIN_IOPS 和 MAX_IOPS，则根据 MIN_CPU 规格自动计算，`1` 个 core 对应 `1` 万 IOPS 值。
     - `MAX_IOPS = MIN_IOPS = MIN_CPU * 10000`。
     - 如果未指定 IOPS_WEIGHT，则 `IOPS_WEIGHT = MIN_CPU`。
     - 如果指定了 IOPS_WEIGHT，则以指定为准。
 - 如果只指定了 MAX_IOPS，MIN_IOPS 取 MAX_IOPS 值；反之亦然。
     - 在 IOPS_WEIGHT 未指定的情况下，默认值为 `0`。

#### 示例

创建资源单元 `unit001` 配置为 2 个 CPU，`6G` 内存。

```sql
obclient> CREATE RESOURCE UNIT unit001
     MAX_CPU 2,MEMORY_SIZE '6G';
Query OK, 0 rows affected

```

或者

```sql
obclient> CREATE RESOURCE UNIT unit001
     MAX_CPU 2,MEMORY_SIZE 6442450944;
Query OK, 0 rows affected

```

### 步骤二：创建资源池

资源池会实际创建 unit，按规格定义分配资源。

#### 创建资源池语法

```sql
CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone' [, 'zone' ...]);

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| pool_name | 指定要创建的资源池的名称。 |
| UNIT [=] unit_name | 指定资源规格的名称。 |
| UNIT_NUM [=] unit_num | 指定要创建的单个 Zone 下的 Unit 个数。 每个单元会根据当前集群负载，自动在每个 Zone 中选择一个 Server 负载，但同一个资源池的多个 Unit 不能分配到同一个 Server，即一个资源池包含的Unit 个数不能超过单 Zone 内 Server 的个数。 |
| ZONE_LIST [=] (‘zone’ [, ‘zone’ …]) | 指定要创建的资源池所属的 Zone。一般与 zone 个数保持一致。 |

#### 示例

创建资源池 `pool001`。

```sql
obclient> CREATE RESOURCE POOL pool001
     UNIT='unit001',UNIT_NUM=1,ZONE_LIST=('zone1','zone2','zone3');
Query OK, 0 rows affected

```

### 步骤三：创建租户

将资源池分配给对应的租户。

#### 创建租户语法

```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} [=] charset_name
    | COLLATE [=]  collation_name
    | PRIMARY_ZONE [=] zone  
    | DEFAULT TABLEGROUP [=] {NULL | tablegroup}
    | RESOURCE_POOL_LIST [=](pool_name [, pool_name...])
    | LOCALITY [=] 'locality description'

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

```

#### 参数解释

| **参数** | **描述** |
| --- | --- |
| tenant_name | 指定租户名。 |
| IF NOT EXISTS | 如果要创建的租户名已存在，并且没有指定 `IF NOT EXISTS`，则会报错。 |
| RESOURCE_POOL_LIST | 资源池列表，为创建租户时的必填项，暂时只支持一个 Resource Pool。 |
| DEFAULT TABLEGROUP | 设置租户默认表组信息，`NULL` 表示取消默认表组。 如果不指定，默认为 `NULL`。 |
| COMMENT | 指定注释。 |
| CHARACTER SET \| CHARSET | 指定租户的字符集。 |
| COLLATE | 指定字符序。 |
| PRIMARY_ZONE | 指定 Primary Zone。主副本分配到 Zone 内的优先级，逗号两侧优先级相同，分号左侧优先级高于右侧。比如 `zone1,zone2;zone3`。 |
| 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 连接数据库。 您也可以待租户创建成功后再修改其白名单设置，修改白名单的具体操作请参见 **设置和查看租户白名单** 。      OceanBase 数据库中，租户可设置的系统变量请参见 **系统变量** 。 |

#### 示例

- 创建 MySQL 兼容模式租户

  ```sql
  obclient> CREATE TENANT IF NOT EXISTS mysql001
       CHARSET='utf8mb4',
       PRIMARY_ZONE='zone1;zone2,zone3',
       RESOURCE_POOL_LIST=('pool001')
       SET ob_tcp_invited_nodes='%';
  Query OK, 0 rows affected

  ```
 - 创建 Oracle 兼容模式租户

  ```sql
  obclient> CREATE TENANT IF NOT EXISTS oracle002
       CHARSET='utf8mb4',
       PRIMARY_ZONE='zone1;zone2,zone3',
       RESOURCE_POOL_LIST=('pool002')
       SET ob_tcp_invited_nodes='%',ob_compatibility_mode='oracle';
  Query OK, 0 rows affected

  ```

## 后续操作

#### 注意

使用 SQL 语句创建的租户，租户管理员用户密码为空。使用前请先设置密码。

示例如下：

将租户 `mysql001` 的 `root` 用户密码设置为 `******`。

```sql
$ obclient -h10.10.10.1 -P2881 -uroot@mysql001 -p -A
Enter password:

obclient> SET PASSWORD = PASSWORD('******');
Query OK, 0 rows affected

```

## 相关文档

- 租户创建完成后的连接信息，请参见 [租户创建后验证](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001578879)。
 - 更多创建资源单元的详细信息，请参见 [CREATE RESOURCE UNIT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001578318)。
 - 更多创建资源池的详细信息，请参见 [CREATE RESOURCE POOL](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001578317)。
 - 更多创建租户的详细信息，请参见 [CREATE TENANT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001578319)。
 - 更多修改用户密码的详细信息，请参见 [ALTER USER](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001579141) 和 [SET PASSWORD](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001580969)。

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