七步定位 OceanBase 登录报错

原创
01/13 15:40
阅读数 506

本文将为大家总结 OceanBase 集群登录时常见报错“Access denied”的排查步骤。

> 作者:何文超,爱可生南区交付服务部 DBA 团队成员。主要负责 MySQL 故障处理,MySQL 高可用架构改造,OceanBase 相关技术支持。爱好足球,羽毛球。 > > 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 > > 本文约 600 字,预计阅读需要 3 分钟。

问题背景

近期,生产环境通过客户端工具可正常连接 OceanBase 集群,但通过黑屏连接登录报错。

报错信息如下:

ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: NO)

本文以上述案例为例,为大家总结 OceanBase 集群登录时常见报错“Access denied”的排查步骤。

排查步骤

以下将按照常见原因的发生概率,排序逐一列举。

一、确认用户的密码正确性

请再次确认您使用的用户密码是否正确。

二、检查网络连通性

确保不同网段的服务器能够正常访问 obproxy 的 2883 端口。

telnet <obproxy-ip> 2883

三、检查用户的权限

检查是否具有全局登录权限,以及账号是否被锁定。

// wms 账号登录报错:
[root@10-186-65-73 ~]# mysql -hxxx -P2883 -uwms@hwc_test#hwc_cluster -p"xxx"
ERROR 1045 (42000): Access denied for user 'wms'@'xxx.xxx.xxx.xxx' (using password: YES)
 
mysql -hxxxx -P2883 -uroot@hwc_test#hwc_cluster -p"xxx"
mysql&gt; select user_name,host,is_locked from oceanbase.__all_user where user_name='wms';
+-----------+-------------+-----------+
| user_name | host        | is_locked |
+-----------+-------------+-----------+
| wms       | 10.186.57.% |         0 |
+-----------+-------------+-----------+
1 row in set (0.01 sec)

四、客户端是否支持

MySQL 客户端

OceanBase 数据库当前版本支持的 MySQL 客户端版本包括 V5.5、V5.6 和 V5.7。

obclient 客户端

确认使用的 obclient 版本与 obproxy 和 OceanBase 集群版本是否兼容。可以通过运行 obclient -V 命令来查看 obclient 的版本信息。

五、检查租户参数 ob_tcp_invited_nodes

参数 ob_tcp_invited_nodes='%' 用于设置租户的 IP 白名单。

[root@10-186-65-12 ~]# mysql -hxxx -P2883 -uwms@hwc_test#hwc_cluster -p"xxx"
ERROR 1227 (42501): Access denied
 
// 检查租户参数
MySQL [(none)]&gt; show variables like '%ob_tcp_invited_nodes%';
+----------------------+-------------+
| Variable_name        | Value       |
+----------------------+-------------+
| ob_tcp_invited_nodes | 10.186.57.% |
+----------------------+-------------+
1 row in set (0.01 sec)
 
// 如果租户白名单有限制,可以用如下命令修改:
ALTER TENANT test_tenant SET VARIABLES ob_tcp_invited_nodes='%';

六、检查 obproxy 日志

查看 obproxy 的日志文件,看看是否有与连接失败相关的错误信息。

日志文件通常位于 /home/admin/logs/obproxy/log/ 目录。

七、检查 obproxy 的配置

确认 obproxy 的配置中没有限制某些 IP 地址的连接,可以通过查看 obproxy 的配置文件来确认这一点。

配置文件通常位于 /home/admin/logs/obproxy/etc/ 目录下。

// 查看配置文件:
strings obproxy_config.bin

问题定位

生产环境使用的 MySQL 客户端版本为 8.0.18,经过测试发现,只有部分 MySQL 8.x 版本的客户端支持连接 OceanBase 集群。

登录报错的原因是 MySQL 客户端版本与 OceanBase 集群不匹配导致。

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

✨ Github:https://github.com/actiontech/sqle

📚 文档:https://actiontech.github.io/sqle-docs/

💻 官网:https://opensource.actionsky.com/sqle/

👥 微信群:请添加小助手加入 ActionOpenSource

🔗 商业支持:https://www.actionsky.com/sqle</obproxy-ip>

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部