新建租户 
=========================

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

通过 SQL 语句新建 
--------------------------------

OceanBase 数据库仅支持 MySQL 类型的租户。只有用 root 用户连接到 sys 租户（`root@sys`）才能执行 `CREATE TENANT` 命令去创建租户。创建新租户后，可以指定创建租户的类型和白名单。

下述展示了创建租户命令的语法：

```sql
CREATE TENANT [IF NOT EXISTS] tenantname
     [tenant_characteristic_list]
     [tenant_variables_list]

tenant_characteristic_list:
    tenant_characteristic [, tenant_characteristic...]

tenant_characteristic:
    COMMENT 'string'
    | {CHARACTER SET | CHARSET} [=] value
    | REPLICA_NUM [=] num
    | ZONE_LIST [=] (zone [, zone])
    | PRIMARY_ZONE [=] zone
    | RESOURCE_POOL_LIST [=] (poolname)
    | {READ ONLY | READ WRITE}

tenant_variables_list:
    SET sys_variables_list
    | SET VARIABLES sys_variables_list
    | VARIABLES sys_variables_list

sys_variables_list:
    sys_variables [, sys_variables...]

sys_variables:
    sys_variable_name = expr
```



参数说明：

* 如果要创建的租户名已存在，并且没有指定 `IF NOT EXISTS`，则会出现错误。

  

* 租户名的合法性和变量名一致，最长 30 个字符，字符只能是大小写英文字母、数字和下划线，而且必须以字母或下划线开头，并且不能是 OceanBase 数据库的关键字。

  

* 在租户下可以指定资源池。

  

* `RESOURCE_POOL_LIST` 为创建租户时的必填项。 

* `CREATE TENANT` 命令中的 `RESOURCE_POOL_LIST` 中，暂时仅支持一个资源池。




**示例 1** ：

下述语句展示了创建名为 `test_tenant` 的一个 3 副本的 MySQL 租户（创建新租户默认是 MySQL 租户）。

```sql
obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1')
```



**示例 2** ：

下述语句展示了创建租户后，直接通过修改变量 `ob_tcp_innvited_nodes` 的值为 `%` 以便允许任何客户端 IP 连接该租户。如果不调整，默认租户的连接方式为只允许本机的 IP 连接数据库。

```sql
obclient> CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=3, zone_list=('zone1','zone2','zone3'), primary_zone='zone1;zone2,zone3', resource_pool_list=('pool1') SET ob_tcp_invited_nodes='%' 
```



示例说明如下：

* `primary_zone` 指该租户的表的分区 Leader 所在的 Zone ，例如，`primary_ zone =' zone1; zone2, zone3'` 表示该租户的表的分区 Leader 在 `zone1` 上， 这时通过分号来分隔。

  

* `zone2` 和 `zone3` 通过逗号分割，表示 `zone2` 和 `zone3` 是同一优先级，但是比 `zone1` 优先级低。

  

* `primary_zone` 设置时，其值可以为 `RANDOM`（必须大写），表示随机。

  




普通租户的内存最小规格必须大于等于 5 GB，否则创建租户失败。如果希望建立租户进行非常简单的功能测试，可以修改参数 `alter system __min_full_resource_pool_memory` 的值为 `1073741824` 来允许以最小 1 GB 内存的规格创建租户。

通过 OCP 新建 
------------------------------

可以通过 OCP 创建新的租户。
**说明**

1. 登录 OCP。

   默认进入 **集群概览** 页面。
   

2. 在 **集群概览** 页面的 **集群列表** 区域，选择待操作的集群并单击其集群名。

   

3. 在显示的页面的左侧导航栏上，单击 **租户管理** 。

   

4. 在页面右上角单击 **新建租户** 。

   ![租户管理页面](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1702770061/p167363.png)
   

5. 填写基础信息。

   1. 集群默认为当前集群。

      
   
   2. 输入租户名称。

      租户名称格式为英文大小写字母、数字和下划线的组合，长度为 2\~64 字符。
      
   

   

6. 填写 Zone 信息。

   1. 为 z1、z2 和 z3 设置副本类型、Unit 规格和 Unit 数量。

      集群选定后，页面会根据所选集群的 Zone 信息给出可配置的 Zone 列表；对于无需做副本分布的 Zone，可以通过最右侧的按钮删除该 Zone 条目。

      其中：
      * 副本类型支持全功能型副本、只读型副本和日志型副本。

        
      
      * OCP 内置了一套 Unit 规格；另外也可以在下拉列表的最下方单击 **新增规格** 按钮新增自定义规格。

        
      
      * 指定该 Zone 下的 Unit 数量。

        **注意**

        

        Unit 数量不能超过该 Zone 下 Server个数。

        ![Zone 信息页面](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1702770061/p167368.png)
        
      

      
   
   2. 对 Zone 优先级进行排序。

      同时选择多个 Zone 添加到右侧后，可设置为同一优先级。

      ![设置优先级排序](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1702770061/p167369.png)
      
   

   

7. 填写基本设置信息。

   1. 设置管理员初始密码，支持随机生成。

      * 对于 MySQL 模式，其管理员账户为 **root** 。

        
      

      
   
   2. 设置租户模式。

      * 仅支持 MySQL 租户模式。

        
      

      
   
   3. 设置字符集与编码。

      * 对于 MySQL 模式，可选字符集有：utf8mb4、binary、gbk、gb18030。缺省为 utf8mb4。

        
      

      
   
   4. （可选）设置备注信息。

      
   
   5. 设置 IP 地址白名单。

      * 此处可以指定该租户允许登录的客户端列表。如果不指定，默认配置为 **%** ，表示允许所有的客户端。自定义白名单列表时需要注意，OCP 机器地址以及所依赖的 OBProxy 地址必须在此名单中，否则 OCP 将无法管理此租户。

        * 默认配置：所有 IP 都可访问。

          
        
        * 自定义：设置 IP 白名单，白名单中的 IP 才能访问。

          
        

        
      
      * 白名单格式说明：

        * 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

          特殊说明： **%** 表示所有客户端都可以连接。

          ![设置白名单](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1702770061/p167371.png)
          
        

        
      

      
   

   

8. 单击 **提交** 。

   



