obv3、v4版本,登录集群sys租户后,如何查询所有租户下的白名单

【 使用环境 】测试环境
【 使用版本 】v3、v4
【问题描述】登录集群sys租户后,如何查看所有租户所设置的白名单呢

1 个赞

@论坛小助手

根据文档库中的信息,您可以按照以下步骤查询所有租户下的白名单:

1. 登录 sys 租户

首先,使用 root 用户通过 OBClient 登录到 sys 租户。例如:

obclient -h<ODP_IP> -uroot@sys#<cluster_name> -P2883 -p
  • <ODP_IP> 是 OBProxy 的 IP 地址。
  • <cluster_name> 是集群名称。

参考文档:《通过 OBClient 连接 OceanBase 租户》前提条件


2. 查询所有租户信息

登录 sys 租户后,可以使用 obshell 工具查询集群中所有的租户信息。执行以下命令:

${home_path}/bin/obshell tenant show
  • ${home_path} 是 OceanBase 数据库的安装目录。
  • 如果需要查看详细信息,可以加上 -d 参数:
${home_path}/bin/obshell tenant show -d

参考文档:《obshell 租户命令组》obshell tenant show


3. 查看每个租户的白名单

对于每个租户,切换到该租户并查询其白名单配置。例如,假设租户名为 tenant1,执行以下步骤:

(1) 切换到目标租户

obclient -h<ODP_IP> -uroot@tenant1#<cluster_name> -P2883 -p

(2) 查询白名单

在目标租户中执行以下 SQL 命令:

SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';

这将返回该租户的白名单设置。例如:

+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| ob_tcp_invited_nodes | %     |
+----------------------+-------+

参考文档:《查看和设置租户白名单》查看租户白名单


4. 自动化脚本(可选)

如果需要批量查询所有租户的白名单,可以编写一个简单的脚本,结合 obshellobclient 工具实现自动化操作。

示例脚本(伪代码):

#!/bin/bash

# 获取所有租户名称
tenants=$(${home_path}/bin/obshell tenant show | awk '{print $1}')

# 遍历每个租户
for tenant in ${tenants}; do
    echo "Tenant: ${tenant}"
    # 查询白名单
    obclient -h<ODP_IP> -uroot@${tenant}#<cluster_name> -P2883 -e "SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';"
done

注意事项

  1. 权限要求:确保当前用户具有足够的权限访问 sys 租户和其他租户。
  2. 白名单默认值:如果返回值为 %,表示允许所有客户端 IP 访问该租户。
  3. 修改白名单不影响现有会话:修改白名单设置不会影响已创建的会话。

参考文档:《网络安全访问控制》

如果您需要进一步的帮助,请提供更多具体信息或联系 OceanBase 的人工答疑团队。

检索到的文档如下:

  1. 黑名单机制
  2. 系统视图概述
  3. 网络安全访问控制
  4. obshell 租户命令组
  5. 访问控制概述
  6. 租户扩容
  7. 创建租户
  8. 查看和设置租户白名单
  9. 通过 OBClient 连接 OceanBase 租户

只能通过切换租户去查询吗?不可以通过sys租户来获取所有租户下设置的白名单吗

sys租户下查询select * from __all_virtual_sys_variable where name=‘ob_tcp_invited_nodes’

4X 查询 CDB_OB_SYS_VARIABLES 这个视图