obproxy报错 fail to check observer version, proxyro@sys error resp { code:1227, msg:Access denied }

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】observer:4.3.5.2,obproxy:4.3.6.1-2
【问题描述】使用obproxy链接数据库集群时报错
【复现路径】

【附件及日志】
obproxy_error.log
2026-10-08 15:14:19.051596,obproxy1,diaodu:huiju:,OB_MYSQL,OB_MYSQL_COM_LOGIN,failed,-4152,18064us,0us,0us,0us,Y0-0000FFFCEF0BC760,172.16.15.29:44942,0,Null value,

obproxy_diagnosis.log
[2026-10-08 15:14:19.051704] [24693][Y0-0000FFFCEF0BC760] [LOGIN](trace_type=“LOGIN_TRACE”, connection_diagnosis={cs_id:1049777, ss_id:0, proxy_session_id:0, server_session_id:0, client_addr:“172.16.15.29:44942”, server_addr:“Not IP address [0]:0”, proxy_server_addr:“Not IP address [0]:0”, cluster_name:“diaodu”, tenant_name:“huiju”, user_name:“huiju”, error_code:1227, error_msg:“fail to check observer version, proxyro@sys error resp { code:1227, msg:Access denied }”, request_cmd:“OB_MYSQL_COM_LOGIN”, sql_cmd:“OB_MYSQL_COM_LOGIN”, req_total_time(us):18064}{internal_sql:“SELECT ob_version() AS cluster_version”, login_result:“failed”})

obproxy.log
[2026-10-08 15:14:19.051011] INFO [PROXY.SM] kill_this (ob_mysql_sm.cpp:10868) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] deallocating sm(sm_id=1297)
[2026-10-08 15:14:19.051040] WDIAG [PROXY] get_resultset_fetcher (ob_client_utils.cpp:253) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to execute sql(ret=-1227)
[2026-10-08 15:14:19.051052] WDIAG [PROXY] next (ob_client_utils.cpp:232) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to get rs_fetcher(ret=-1227)
[2026-10-08 15:14:19.051055] WDIAG [PROXY] finish_task (ob_resource_pool_processor.cpp:487) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to get resultset for cluster role(data=0xfffcec63e310, ret=-1227)
[2026-10-08 15:14:19.051063] WDIAG [PROXY] handle_event_complete (ob_async_common_task.cpp:154) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to do finish task(task_name=“cluster_role_check_task”, ret=-1227)
[2026-10-08 15:14:19.051065] WDIAG [PROXY] main_handler (ob_async_common_task.cpp:59) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to handle event complete(ret=-1227)
[2026-10-08 15:14:19.051070] INFO [PROXY] main_handler (ob_resource_pool_processor.cpp:1279) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] ObClusterResourceCreateCont::main_handler(event=“ASYNC_TASK_DONE_EVENT”, init_status=3, cluster_name=diaodu, cluster_id=0, data=0xaaacfdd4b458)
[2026-10-08 15:14:19.051116] INFO [PROXY] get_next_master_cluster_info (ob_proxy_json_config_info.cpp:1681) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] no avaiable sub cluster info(cluster_info={rs_url:{url:“http://172.16.15.104:8080/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=test&ObRegion=diaodu”}, cluster_name:{config_string:“diaodu”}, master_cluster_id:1752455913, sub_cluster_info:{cluster_id:1752455913, is_used:true, role:1, web_rs_list:[[0]{server:“172.16.13.94:2881”, rpc_server:“172.16.13.94:2882”, is_dup_replica:false, role:“LEADER”, type:“FULL”}], rs_list_hash:2254755628433288192, create_failure_count:0, idc_list:[]}}, ret=-4018)
[2026-10-08 15:14:19.051147] WDIAG [PROXY] get_next_master_cluster_rslist (ob_config_server_processor.cpp:355) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to get next master cluster info(cluster_name=diaodu, ret=-4018)
[2026-10-08 15:14:19.051154] WDIAG [PROXY] handle_async_task_complete (ob_resource_pool_processor.cpp:1399) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] fail to get next master cluster rslist(cluster_name=diaodu)
[2026-10-08 15:14:19.051163] INFO [PROXY] handle_chain_inform_cont (ob_resource_pool_processor.cpp:1513) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] cluster resource create complete(created_cr={this:0xfffcf64e6880, ref_count:3, is_inited:true, cluster_info_key:{cluster_name:{config_string:“diaodu”}, cluster_id:0}, cr_state:“CR_INIT_FAILED”, version:3, last_access_time_ns:0, deleting_completed_thread_num:0, fetch_rslist_task_count:0, fetch_idc_list_task_count:0, last_idc_list_refresh_time_ns:0, last_rslist_refresh_time_ns:1791443659039980934, server_state_version:0}, pending_list_count=0)
[2026-10-08 15:14:19.051182] INFO [PROXY] destroy (ob_resource_pool_processor.cpp:1992) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] ObClusterResource will destroy, and wait to be free(this={this:0xfffcf64e6880, ref_count:0, is_inited:true, cluster_info_key:{cluster_name:{config_string:“diaodu”}, cluster_id:0}, cr_state:“CR_INIT_FAILED”, version:3, last_access_time_ns:0, deleting_completed_thread_num:0, fetch_rslist_task_count:0, fetch_idc_list_task_count:0, last_idc_list_refresh_time_ns:0, last_rslist_refresh_time_ns:1791443659039980934, server_state_version:0})
[2026-10-08 15:14:19.051209] INFO [PROXY] clear_client_pool (ob_mysql_proxy.h:177) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] client pool will be destroyed(client_pool={this:0xfffcf6520c30, ref_count:4, is_inited:true, stop:false, mc_count:2, cluster_resource:0xfffcf6330080})
[2026-10-08 15:14:19.051241] INFO [PROXY] destroy (ob_congestion_manager.cpp:103) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] ObCongestionManager will destroy(this={this:0xfffcf64e7180, is_inited:true, is_base_servers_added:false, is_congestion_enabled:true, zone_count:0, config:{ref_count:1, this:0xfffcf6524cf0, conn_failure_threshold:5, alive_failure_threshold:5, fail_window_sec:120, retry_interval_sec:20, min_keep_congestion_interval_sec:20}})
[2026-10-08 15:14:19.051299] INFO [PROXY] free (ob_resource_pool_processor.cpp:1950) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] the cluster resource will free(this={this:0xfffcf64e6880, ref_count:0, is_inited:false, cluster_info_key:{cluster_name:{config_string:“diaodu”}, cluster_id:0}, cr_state:“CR_DEAD”, version:3, last_access_time_ns:0, deleting_completed_thread_num:0, fetch_rslist_task_count:0, fetch_idc_list_task_count:0, last_idc_list_refresh_time_ns:0, last_rslist_refresh_time_ns:1791443659039980934, server_state_version:0})
[2026-10-08 15:14:19.051330] INFO [PROXY] destroy (ob_congestion_manager.cpp:103) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] ObCongestionManager will destroy(this={this:0xfffcf64e7180, is_inited:false, is_base_servers_added:false, is_congestion_enabled:true, zone_count:0, config:NULL})
[2026-10-08 15:14:19.051519] INFO [PROXY] main_handler (ob_resource_pool_processor.cpp:1279) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] ObClusterResourceCreateCont::main_handler(event=“CLUSTER_RESOURCE_INFORM_OUT_EVENT”, init_status=3, cluster_name=diaodu, cluster_id=0, data=0xfffcf78df370)
[2026-10-08 15:14:19.051549] WDIAG [PROXY.SM] state_get_cluster_resource (ob_mysql_sm.cpp:2203) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] data is NULL(sm_id=1292, ret=-4152)
[2026-10-08 15:14:19.051548] INFO [PROXY] handle_destroy_mysql_client (ob_mysql_client_pool.cpp:135) [24703][Y0-0000FFFCEFF9BE30] [lt=0] [dc=0] all mysql client has been scheduled to destroy self(deleted_count=2)
[2026-10-08 15:14:19.051554] WDIAG [PROXY.TXN] handle_error_jump (ob_mysql_transact.cpp:155) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] [ObMysqlTransact::handle_error_jump]
[2026-10-08 15:14:19.051561] WDIAG [PROXY.SM] handle_obproxy_error_transfer (ob_mysql_sm.cpp:10152) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] [setup_error_transfer] Now closing connection(sm_id=1292, client_ip={172.16.15.29:44942}, request_cmd=“OB_MYSQL_COM_SLEEP”, sql_cmd=“OB_MYSQL_COM_LOGIN”, sql=OB_MYSQL_COM_LOGIN)
[2026-10-08 15:14:19.051567] INFO [PROXY.SM] setup_error_transfer (ob_mysql_sm.cpp:10048) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] setup_error_transfer, transfer internal buffer and try to disconnect(sql_cmd=242, internal_state=9)
[2026-10-08 15:14:19.051578] INFO [PROXY.SM] kill_this (ob_mysql_sm.cpp:10750) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] will deallocate sm(sm_id=1292, pending_action=NULL, api_.callout_state=0, trans_state_.trace_log= | dropped=0)
[2026-10-08 15:14:19.051568] INFO [PROXY] handle_active_timeout (ob_client_vc.cpp:735) [24703][Y0-0000FFFCEFF9B230] [lt=0] [dc=0] mysql client active timeout(active_timeout_ms=0, next_action=1, info={user_name:“proxyro@sys#diaodu:0”, database_name:“oceanbase”, cluster_name:“diaodu”, request_param:{sql:"", is_deep_copy:false, current_idc_name:"", is_user_idc_name_set:false, need_print_trace_stat:false, target_addr:, ob_client_flags_.flags_:0, client_vc_type:0}})
[2026-10-08 15:14:19.051588] INFO [PROXY] kill_this (ob_client_vc.cpp:1249) [24703][Y0-0000FFFCEFF9B230] [lt=0] [dc=0] mysql client will kill self(this=0xfffcf6926140)
[2026-10-08 15:14:19.051602] INFO [PROXY] handle_active_timeout (ob_client_vc.cpp:735) [24703][Y0-0000FFFCEFF9B270] [lt=0] [dc=0] mysql client active timeout(active_timeout_ms=0, next_action=1, info={user_name:“proxyro@sys#diaodu:0”, database_name:“oceanbase”, cluster_name:“diaodu”, request_param:{sql:"", is_deep_copy:false, current_idc_name:"", is_user_idc_name_set:false, need_print_trace_stat:false, target_addr:, ob_client_flags_.flags_:0, client_vc_type:0}})
[2026-10-08 15:14:19.051608] INFO [PROXY] kill_this (ob_client_vc.cpp:1249) [24703][Y0-0000FFFCEFF9B270] [lt=0] [dc=0] mysql client will kill self(this=0xfffcf69264b0)
[2026-10-08 15:14:19.051609] INFO [PROXY] free (ob_mysql_client_pool.cpp:205) [24703][Y0-0000FFFCEFF9B270] [lt=0] [dc=0] client pool will be free(this={this:0xfffcf6520c30, ref_count:0, is_inited:false, stop:true, mc_count:2, cluster_resource:0xfffcf6330080})
[2026-10-08 15:14:19.051627] INFO [PROXY.SS] do_io_close (ob_mysql_client_session.cpp:931) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] client session do_io_close(client_vc_=0xfffcef0a2350, this=0xfffcf19c05c0, is_proxy_client=0, cs_id=1049777, proxy_sessid=0, cluster=, tenant=, user=, mysql_capability=33531525, last_server_sessid=0, last_server_addr={Not IP address [0]:0}, dummy_ldc={use_ldc:false, idc_name:"", item_count:0, site_start_index_array:[[0]0, [1]0, [2]0, [3]0], item_array:null, pl:null, ts:null, readonly_exist_status:“READONLY_ZONE_UNKNOWN”})
[2026-10-08 15:14:19.051649] INFO [PROXY.CS] destroy (ob_mysql_client_session.cpp:116) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] client session destroy(cs_id=1049777, proxy_sessid=0, client_vc=NULL)
[2026-10-08 15:14:19.051685] INFO [PROXY.SM] kill_this (ob_mysql_sm.cpp:10868) [24693][Y0-0000FFFCEF0BC760] [lt=0] [dc=0] deallocating sm(sm_id=1292)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您描述的情况,OceanBase的obproxy组件在尝试连接数据库集群时遇到了权限相关的错误。具体表现为访问被拒绝,错误代码为1227。虽然obdiag工具主要用于收集和诊断OceanBase Observer的问题,但对于您遇到的这种obproxy与Observer之间的连接问题,我们仍然可以使用obdiag来收集相关日志信息以帮助进一步定位问题。

在这种情况下,我们主要关注的是obproxy的日志以及与之交互的Observer的基础信息。遗憾的是,对于obproxy本身的直接问题,当前版本的obdiag可能不会直接提供针对该问题的根因分析场景。但是,通过收集相关的日志文件,我们可以更深入地调查问题所在。

日志采集场景: [集群基础信息]
日志采集命令: obdiag gather scene run --scene=observer.base

这条命令将帮助收集关于集群的基本信息,包括但不限于配置、运行状态等,这对理解您的集群环境很有帮助。

同时,请注意保留或提供发生错误期间obproxy的日志文件,这对于我们来说是非常重要的辅助资料。通常,这些日志位于obproxy安装目录下的log文件夹中。

为了让我们能够更加准确地理解和解决问题,请您补充以下几方面的信息:

  1. 当前obproxy尝试连接的具体是哪个租户(tenant)?
  2. 在尝试连接失败之前,是否有对系统进行过任何更改或更新操作?比如修改了用户权限、调整了网络设置等。
  3. 错误是否仅发生在特定时间点,还是持续存在?如果非持续性,请尽量记录下错误出现的时间范围以便于我们检查对应时间段内的日志。
  4. 您是否已经检查过相关用户的权限设置?确保该用户有足够的权限执行所需的操作。
  5. 如果可能的话,请分享部分obproxy的错误日志内容给我们查看。

基于上述提供的信息及日志,我们将能够为您提供更为具体的指导和支持。

附上敏捷诊断工具 obdiag 使用帮助链接

error_msg:“fail to check observer version, proxyro@sys error resp { code:1227, msg:Access denied }”
是不是改过密码了

应该是 ODP 内部账号 proxyro@sys 登录 observer 被拒,obproxy以及observer是OCP部署的还是其它方式部署的?

排查

1. ODP 侧当前配置(root@proxysys 登录 2883):

SHOW PROXYCONFIG ALL LIKE '%sys_password%';

2. observer 侧 (root@sys 直连 172.16.13.94:2881):

SELECT user, host FROM mysql.user WHERE user='proxyro';