OceanBase_CE 4.2.1.5创建租户创建租户下的用户以及使用命令行登录租户

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】OceanBase_CE 4.2.1.5
【问题描述】
架构是3个zone的集群。
我是用如下命令创建了unit,resource pool,tenant :
1.
登录数据库
obclient -h10.5.2.83 -P2881 -uroot -p’&EcT[pS3zE5(Cn!B=m’ -Doceanbase -A
2.
创建 Unit 配置模板
CREATE RESOURCE UNIT UNIT_test_db_SmartStamp
MAX_CPU = 1,
MEMORY_SIZE = ‘4G’
;
3.
创建资源池
CREATE RESOURCE POOL pool_test_db_SmartStamp
UNIT = ‘UNIT_test_db_SmartStamp’,
UNIT_NUM = 1,
ZONE_LIST = (‘zone1’, ‘zone2’, ‘zone3’)
;
4.
创建租户
CREATE TENANT test_db_SmartStamp
PRIMARY_ZONE = ‘zone1’,
RESOURCE_POOL_LIST = (‘pool_test_db_SmartStamp’),
CHARSET = ‘utf8mb4’;

接下来我要如何创建test_db_SmartStamp租户下的超级用户,以及如何用命令行登录test_db_SmartStamp租户?

【复现路径】问题出现前后相关操作:无

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

业务租户的超级用户是默认创建的额,可以直接使用 root@test_db_SmartStamp 进行登录。默认无密码,记得修改密码。

业务租户的普通用户登录参考如下:
obclient -h地址 -P端口 -u业务用户@test_db_SmartStamp -p业务用户密码 -D数据库 -A


你可以用业务租户超级用户登录后使用【create user if not exists ‘test’ identified by ‘123456’;】创建业务用户即可,然后参考 MySQL 授权语法进行数据权限授权。

1 个赞

不行,登不上。
[root@UAT-OBServer03 ~]# obclient -h10.5.2.83 -P2881 -uroot@test_db_SmartStamp -A
ERROR 1227 (42501): Access denied

1 个赞

@论坛小助手

1 个赞

为了创建租户下的超级用户以及使用命令行登录租户,您可以按照以下步骤操作:

  1. 登录到 OceanBase 数据库的 sys 租户,确保使用具有足够权限的用户(通常是 root 用户)。

  2. sys 租户中,创建租户 test_db_SmartStamp 下的超级用户。示例如下:

    CREATE USER 'superuser'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  3. 使用命令行工具 obclient 以创建的超级用户身份登录租户 test_db_SmartStamp。示例如下:

    obclient -h10.5.2.83 -P2881 -usuperuser@test_db_SmartStamp -pyour_password -A
    

如果遇到 Access denied 错误,检查以下几点:

  • 确保用户名和密码正确无误。
  • 确认 superuser 用户具有访问租户 test_db_SmartStamp 的权限。
  • 确认租户 test_db_SmartStamp 已经正确创建并且处于活动状态。

以上步骤应该能帮助您成功创建租户下的超级用户并登录租户。

检索到的文档如下:

  1. 创建 MySQL 模式的用户租户
  2. 部署个人实验环境
  3. 创建租户
  4. 恢复前准备
  5. 按表恢复前准备
2 个赞

你确定你没修改过业务租户的管理员密码?或者你确定你成功创建了这个业务租户吗?

1 个赞

@辞霜 这个版本的超管用户是手动创建的吗?还是我看错手册了?

1 个赞

就是root用户,上面只是小助手提供的创建租户例子

1 个赞

但是我记得是租户的 root 是自动的哦。

1 个赞

没有改过。这个业务租户是我新建的,您看我问题里的步骤。

1 个赞

是自动创建的root

2 个赞

设置下 set ob_tcp_invited_nodes=’%’ 。默认只能支持本地登录。

1 个赞

这个参数需要重启生效吗?我执行了报错,说需要set GLOBAL,set GLOBAL之后好像也没生效?
obclient [oceanbase]> set ob_tcp_invited_nodes=’%’
→ ;
ERROR 1229 (HY000): Variable ‘ob_tcp_invited_nodes’ is a GLOBAL variable and should be set with SET GLOBAL
[10.5.2.83:2882] [2025-08-22 15:31:43.415314] [YB420A050253-00061EA31E782E5F-0-0]
obclient [oceanbase]>
obclient [oceanbase]> set GLOBAL ob_tcp_invited_nodes=’%’;
Query OK, 0 rows affected (0.002 sec)

obclient [oceanbase]> exit
Bye
[root@UAT-OBServer03 ~]#
[root@UAT-OBServer03 ~]# obclient -h10.5.2.83 -P2881 -uroot@test_db_SmartStamp -A
ERROR 1227 (42501): Access denied
[0.0.0.0:0] [2025-08-22 15:32:29.591665] [Y0-00061EA31DE823B7-0-0]
[root@UAT-OBServer03 ~]# obclient -h10.5.2.83 -P2881 -uop@test_db_SmartStamp -p’F*IYiLw1fN’ -A
ERROR 1227 (42501): Access denied
[0.0.0.0:0] [2025-08-22 15:32:48.555494] [Y0-00061EA31DE823B8-0-0]
[root@UAT-OBServer03 ~]# obclient -h10.5.2.83 -P2881 -uroot -p’&EcT[pS3zE5(Cn!B=m’ -Doceanbase -A
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221578077
Server version: OceanBase_CE 4.2.1.5 (r105000032024041915-ec03c258eb381a36bfb5ee4304236d36ad583ed7) (Built Apr 19 2024 15:11:32)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

obclient [oceanbase]> show parameters like ‘ob_tcp_invited_nodes’;
Empty set (0.043 sec)

obclient [oceanbase]>

1 个赞

set 是创建租户时 set ,创建好了要用 alter 了。

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015465


我看了下这个属性不在 alter 的列表里面,如果不能动态设置,那估计需要重建 tenant 了。你都试试,我很久没操作这个了。 :innocent:

1 个赞

关键点是 set ob_tcp_invited_nodes=’%’
注意要小写!!!之前我建租户的时候用的大写,系统说不认识,所以就没加这个,导致后边登不上。

创建租户
CREATE TENANT test_db_SmartStamp
PRIMARY_ZONE = ‘zone1’,
RESOURCE_POOL_LIST = (‘pool_test_db_SmartStamp’),
CHARSET = ‘utf8mb4’
set ob_tcp_invited_nodes=’%’;–很重要,注意小写,必须加这个,否则登不上

1 个赞