不会写SQL
#1
【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.2BP1
【问题描述】清晰明确描述问题
使用同样的命令行和密码,在不同网络的主机上通过obproxy连接集群。在和obproxy同网段的主机上可以登陆,和obproxy不同网段的主机上不能登录(登陆主机访问obproxy主机的2883网络是通的)。
登陆的用户为租户root用户,授权如下:
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
1 个赞
论坛小助手
#3
根据您的描述,问题似乎是关于不同网段的主机通过 obproxy 连接 OceanBase 集群时遇到的连接问题。这个问题可能与网络配置、防火墙规则或 obproxy 的配置有关。
在这种情况下,我们可以先尝试使用 obdiag
工具来收集一些基础信息,以便进一步分析问题的原因。
日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base
这条命令将会收集集群的基础信息,包括但不限于网络配置、进程状态等,这有助于我们了解 obproxy 和集群的基本状况。
请您执行上述命令并将生成的日志文件发送给我们,以便我们能够更准确地定位问题。
为了更好地帮助您解决问题,请提供以下信息:
- 您是否已经为 obproxy 创建了
proxyro
用户并赋予了必要的权限?
- 您能否提供 obproxy 的启动命令或配置文件路径?
- 您尝试从不同网段连接时,遇到了什么样的错误信息?
- 您是否检查过 obproxy 和目标 OceanBase 集群机器上的防火墙规则?是否有任何限制外部访问的规则?
- 您是否尝试过直接使用
obclient
等工具从不同网段的主机连接到 OceanBase 集群,而不是通过 obproxy?结果如何?
具体信息可参考以下文档:
附上敏捷诊断工具 obdiag 使用帮助链接
2 个赞
不会写SQL
#5
在这个租户下就两个用户,一个是root,一个app
我是使用root用户登陆的。
1 个赞
不会写SQL
#7
1、obproxy是通过ocp部署的,在sys租户下有proxyro用户;
2、obproxy的启动命令是:/home/admin/obproxy/bin/obproxy -p 2883 -n ob_pro_obproxy_rw -o server_tcp_keepcnt=2,client_tcp_keepcnt=2,client_sock_option_flag_out=3,server_tcp_keepintvl=5,client_tcp_keepidle=5,prometheus_sync_interval=1s,sock_option_flag_out=3,obproxy_config_server_url=http://10.252.158.68:8080/services?User_ID=alibaba&UID=test&Action=GetObProxyConfig&ObproxyClusterName=ob_pro_obproxy_rw,prometheus_listen_port=2884,client_tcp_keepintvl=5,enable_metadb_used=false,skip_proxy_sys_private_check=true,log_dir_size_threshold=10G,proxy_mem_limited=2G,enable_full_username=true,enable_proxy_scramble=true,enable_strict_kernel_release=false,server_tcp_keepidle=5
3、输入同样的密码,不同网段的服务器登陆时报错,如题!
4、防火墙上没有发现访问控制规则。
1 个赞
论坛小助手
#8
根据您提供的信息,您已经在 sys 租户下创建了 proxyro
用户,并且 obproxy 是通过 OCP 部署的。您还提供了 obproxy 的启动命令,其中包含了 skip_proxy_sys_private_check=true
参数,这应该已经跳过了对私有地址的检查。
既然您提到在不同网段的服务器上使用相同的密码连接 obproxy 时出现了 Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: NO)
错误,我们可以尝试以下几个步骤来进一步排查问题:
1. 确认 root 用户的密码正确性
- 请再次确认您使用的 root 用户密码是否正确。您可以尝试在同网段的机器上使用相同的命令和密码连接 obproxy,看是否能正常登录。
2. 检查 root 用户的权限
3. 检查 obproxy 日志
- 查看 obproxy 的日志文件,看看是否有与连接失败相关的错误信息。日志文件通常位于启动命令中指定的
log_dir_size_threshold
参数所指向的目录中。例如,如果您的启动命令中指定了 log_dir_size_threshold=10G
,那么日志文件可能位于 /home/admin/obproxy/log/
目录下。
4. 检查网络连通性
5. 检查 obproxy 的配置
- 确认 obproxy 的配置中没有限制某些 IP 地址的连接。您可以通过查看 obproxy 的配置文件来确认这一点。配置文件通常位于
/home/admin/obproxy/conf/
目录下。
6. 检查 obproxy 的版本
- 确认 obproxy 的版本与 OceanBase 集群版本兼容。您可以通过运行
obproxy -V
命令来查看 obproxy 的版本信息。
7. 检查 obclient 版本
- 确认您使用的
obclient
版本与 obproxy 和 OceanBase 集群版本兼容。您可以通过运行 obclient -V
命令来查看 obclient
的版本信息。
如果您按照以上步骤操作后仍然无法解决问题,请提供更多详细的日志信息或者联系 OceanBase 的技术支持团队寻求帮助。
具体信息可参考以下文档:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
2 个赞
辞霜
#9
端口号都是打通的么,确保可以访问
telnet 和ping都试试
2 个赞
不会写SQL
#11
我用同网段的多台主机做登陆测试,发现一些问题,希望官方做下验证:
1、能够登陆的主机的mysql客户端的版本都是5.7.xxx
2、不能登录的主机的mysql客户端的版本都是8.0.xxx
是不是现在8.0.xxx的mysql客户端都不能用于登陆oceanbase?
1 个赞
辞霜
#12
建议使用 MySQL Client 或 OBClient 来连接数据库。
OCEANBASE需要MySQL 客户端能够与 MySQL 5.7 或更高版本兼容,
目前mysql 8.x的客户端确实存在某些无法登录的版本