租户无法连接2883端口

我创建了一个租户:admin

obclient -h192.168.176.200 -P2883 -uadmin@admin#myoceanbase -p’123456’

ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading authorization packet’, system error: 11

但我可以直接访问2881端口。请参考截图:


同样,用mysql客户端和navicat也无法连接2883代理端口。

说明 obproxy 那块有点问题。如果想查就看看obproxy的日志。如果不想查,ocp里删除obproxy 重新部署。


-uroot@admin#myoceanbase -p去掉试试

1 个赞

我又创建了一个租户,还是不行。


我是obd白屏创建的集群,中途没有报错,日志里也没错误信息

用默认root租户,没有任何问题。

再仔细看了一下你的截图, -P2881 -uadmin 这个 没有带租户名,是登录到了 sys租户了吧。所以估计你是在 sys租户下建了一个 admin 用户名,并不是在 admin租户下建了 admin用户名。
再试试 -uroot@admin#集群名看看。


连接方式确认下是否正确呢。


我就是在平台里创建的租户,我这里输入的admin和test。

可以先参考下连接方式 OceanBase 数据库-OceanBase文档中心-分布式数据库使用文档

连接的方式不正确。可以先看下上面的链接呢。

我在ob里创建了一个账号admin,同时创建了一个租户admin,我是感觉应该把这两个捆绑在一起,这样才不会报错,因为我的root默认账号登录2883是可以的。我猜想是这里出了问题。

obclient [(none)]> show grants for root;
±---------------------------------------------------------+
| Grants for root@% |
±---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON . TO ‘root’ WITH GRANT OPTION |
| GRANT ALL PRIVILEGES ON test.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON oceanbase.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON mysql.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON SYS.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON ORAAUDITOR.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON LBACSYS.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON information_schema.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON __recyclebin.* TO ‘root’ |
| GRANT ALL PRIVILEGES ON __public.* TO ‘root’ |
±---------------------------------------------------------+
10 rows in set (0.005 sec)

obclient [(none)]> show grants for admin;
±---------------------------------------------------------+
| Grants for admin@% |
±---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON . TO ‘admin’ WITH GRANT OPTION |
±---------------------------------------------------------+
1 row in set (0.003 sec)

请问我创建的admin(MYSQL账号),还应该如何设置到租户admin里?

意思是创建个用户admin 再创建个租户admin。
通过-u用户(admin)@租户(admin)的方式进行连接数据库?

OCP 的租户里可以新建用户。撇开那个方法,命令行下,首先你要确定的登录到 业务租户 admin 下。登录方式取决于连接 observer(端口 2881)还是 obproxy(端口2883)。不能混用。

如果连接 observer, 用户名就要写全:root@admin ;如果连接 obproxy,用户名就要写全:root@admin#myoceanbase 。OBD 部署成功后给出的连接提示常常不把 租户或集群写全,这个就误导一些用户 。

-u root@admin -P 2881 进去后,用mysql的方法创建 admin 用户。然后退出来用 -u admin@admin -P 2881 登录。

对的,是这个意思。我是觉得应该把这两个捆绑在一起。所以我用admin账号访问2883端口失败。但默认的root账号访问2883是可以的,我猜想应该是租户和用户捆绑在一起。

或者我不创建租户,用默认的sys就行,我想创建一个新的admin账号,然后把admin账号加入到默认的sys租户里。这个我不知道如何操作。

sys 租户不建议给业务使用,也就是不要建表写数据分配账户等。
所以 OB 的使用 一定会建至少一个业务租户。

不知道是哪里出了问题。

确实很诡异。要发 obproxy 日志看看了

obd demo没有问题。到obd cluster不行,租户应该是有BUG。

还有,能否下一个版本,把租户这一概念删除掉,或者让用户来做选择用还是不用。

租户在TIDB,MYSQL是不存在的概念,这个对用户使用来说,太重了。并且如果MYSQL能抗住,不太可能会迁移到oceanbase里。oceanbase通常是大流量并发才会使用到。所以租户一个就够用,就像TIDB一样,希望官方可以更改一下。这个对用户来说不友好,概念很难懂。

租户登录功能这块还是很稳定的,上面原因要看看 obproxy 的 日志。 找到 obproxy 进程的运行目录,下面有个 log 目录,上传 文件 obproxy.log* ,日志时间涵盖你问题时间段。

租户的设计是 OB 最独特的功能,ORACLE 12C 虽然也有多租户 , 运维特性跟 OB 比起来还差一些。租户的设计要从企业运维场景里理解。 可以先了解 租户的功能后再做评价。 放到实际运维里就能体会到租户的好处。