您可以通过 SQL 语句新建租户。
创建租户的语法
OceanBase 数据库只有 root 用户连接到 sys 租户(root@sys)才能执行 CREATE TENANT 命令去创建租户。
创建租户的 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 数据库中所支持的关键字请参见 预留关键字 |
| RESOURCE_POOL_LIST | 创建租户时的必填项,创建租户时仅支持分配一个资源池。如果需要为租户添加多个资源池,则可以待租户创建成功后通过修改租户资源池的方式再进行添加。注意 |
| DEFAULT TABLEGROUP | 用于指定租户默认的表组信息,NULL 表示取消默认表组。如果不指定,默认为 NULL。 |
| COMMENT | 指定对该租户的注释信息。 |
| CHARACTER SET | CHARSET | 指定租户的字符集。 字符集相关的介绍信息请参见 字符集。 |
| COLLATE | 指定租户的字符序。 字符序相关的介绍信息请参见 字符序。 |
| 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 相关的介绍信息请参见 Primary Zone。 |
| LOCALITY | 指定副本在 Zone 间的分布情况。 例如: F@z1,F@z2,F@z3,F@z4 表示 z1、z2、z3 、z4 为全功能副本。 |
| system_var_name | 可选,指定租户的系统变量值,其中:
|
使用示例
创建名为
test_tenant的一个 3 副本的租户。obclient> CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4', ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1');创建租户,并指定允许任何客户端 IP 连接该租户。
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 视图来确认租户是否创建成功。
使用
root用户登录到数据库的sys租户。执行以下语句,查看当前集群中是否有新创建的租户。
示例如下:
obclient> SELECT * FROM oceanbase.DBA_OB_TENANTS\G *************************** 1. row *************************** TENANT_ID: 1 TENANT_NAME: sys TENANT_TYPE: SYS CREATE_TIME: 2022-07-04 14:27:07.909820 PRIMARY_ZONE: RANDOM LOCALITY: FULL{1}@zone1 PREVIOUS_LOCALITY: NULL COMPATIBILITY_MODE: MYSQL STATUS: TENANT_STATUS_NORMAL IN_RECYCLEBIN: NO LOCKED: NO *************************** 2. row *************************** TENANT_ID: 1001 TENANT_NAME: META$1002 TENANT_TYPE: META CREATE_TIME: 2022-07-04 14:40:17.802321 PRIMARY_ZONE: zone1 LOCALITY: FULL{1}@zone1 PREVIOUS_LOCALITY: NULL COMPATIBILITY_MODE: MYSQL STATUS: TENANT_STATUS_NORMAL IN_RECYCLEBIN: NO LOCKED: NO *************************** 3. row *************************** TENANT_ID: 1002 TENANT_NAME: MySQL TENANT_TYPE: USER CREATE_TIME: 2022-07-04 14:40:17.827586 PRIMARY_ZONE: zone1 LOCALITY: FULL{1}@zone1 PREVIOUS_LOCALITY: NULL COMPATIBILITY_MODE: MYSQL STATUS: TENANT_STATUS_NORMAL IN_RECYCLEBIN: NO LOCKED: NO *************************** 4. row *************************** TENANT_ID: 1003 TENANT_NAME: META$1004 TENANT_TYPE: META CREATE_TIME: 2022-07-04 14:41:01.109771 PRIMARY_ZONE: zone1 LOCALITY: FULL{1}@zone1 PREVIOUS_LOCALITY: NULL COMPATIBILITY_MODE: MYSQL STATUS: TENANT_STATUS_NORMAL IN_RECYCLEBIN: NO LOCKED: NO 4 rows in set租户创建成功后,默认其管理员用户为
root的密码为空,您需要及时修改管理员用户的密码, 修改用户密码。
后续处理
租户创建成功后,您可以使用管理员用户登录并连接数据库,具体操作请参见 连接数据库。如果您需要使用普通用户登录,则需要为租户创建新的普通用户并授权,创建用户并授权的相关操作请参见 管理用户和权限 章节。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




