创建用户user@'%'无法登陆

OceanBase与Zabbix完成产品兼容互认-数据库技术博客-OceanBase分布式数据库
我按照上面这篇文章用如下命令创建了用户zabbix

create user zabbix@'%' identified by 'zabbix';

然后用如下命令无法登陆,请问是哪里不对呢?

obclient -h127.0.0.1 -P2881 -uzabbix -pzabbix -A

【 使用环境 】测试环境
【 OB数据库社区版】
【 使用版本 4.2.3】

-uzabbix@租户名称

创建用户那里,用’%’ 不是应该表示所有租户吗,是后面版本改了吗

要加租户名,这个是必须的

要加租户名,并且这个租户要开放白名单,可以用sys租户给这个租户设置下

ALTER TENANT 你的租户名 SET VARIABLES ob_tcp_invited_nodes=’%’

1 个赞

通过 OBClient 连接 OceanBase 租户

第一种:基于obproxy使用2883端口
obclient -h -P2883 -u<用户>@<租户>#<集群名> -p -c –A

第二种:直连observer使用2881端口
obclient -h -P2881 -u<用户>@<租户> -p -c -A

参数说明:

-h:提供 OceanBase 数据库连接 IP,通常是一个 ODP 地址,直连为某台observer节点地址。

-P:提供 OceanBase 数据库连接端口,也是 ODP 的监听端口,默认是 2883,在部署 ODP 时可自定义。直连为

2881,也可在安装OceanBase时自定义

-c:表示在 OBClient 运行环境中不要忽略注释

-A:表示在 OBClient 连接数据库时不自动获取统计信息

-u:提供租户的连接账户

这里的-u写法要连接的是使用基于obproxy还是直连observer,基于obproxy还后面需要给出集群名。常见就是 从小到大,也可以是从大到小。(所谓的大小只是逻辑说法,即用户<租户<集群),类似以下写法应该都可以,最好测试以下,不同版本可能有细微差异。

A、用户@租户名#集群名

B、集群名:租户名:用户名

C、集群名-租户名-用户名

D、集群名.租户名.用户名

而直接连2881方式可以是如下写法其中直接写用户其他版本可能不行,单机在OceanBase_CE 4.2.2.0是可以的。

A、用户名@租户名
B、用户

你上面问题要检查一下检查一下租户的访问设置白名单或者网络策略问题。设置租户ob_tcp_invited_nodes=’%'试试。

有一种情况好像可以不写,单机体验,如下面直连使用root用户且没有密码。 一般都是建议写的!

[root@ora11g oceanbase-all-in-one]# obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221503212
Server version: OceanBase_CE 4.2.2.0 (r100000192024011915-fac02c6690de9ff9f9f96c0bdf86ffe39ae0d7e7) (Built Jan 19 2024 15:14:05)

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]> ```
2 个赞

是的,这个demo是这样的