适用版本
ODP 所有版本。
问题现象
登录时使用 user@tenant#cluster:id 的方式连接 ODP 报权限验证失败,而直接使用 user@tenant 则成功。
mysql -hxxx.xxx.xxx.xxx -P2883 -uroot@sys#obdemo:1111 -p'xxxxxx' -A oceanbase
ERROR 2013 (HY000) : Lost Connection to MySQL server at 'reading authorization packet', system error: 0
mysql -hxxx.xxx.xxx.xxx -P2883 -uroot@sys#obdemo -p'xxxxxx' -A oceanbase
Welcome to the MariaDB monitor. Commands end with ; or \g.
问题原因
ODP 选择的启动方式为 RSList,只能服务 RSList 指定的 OceanBase 集群,不具备多集群能力,因而也不支持在连接时指定 cluster_id。
解决方法
修改 ODP 的启动方式为 configURL,示例如下:
#使用 RSList 的启动命令:
./bin/obproxy -p 2883 -n demo_proxy -c obdemo -r "xxx.xxx.xxx:2881;xxx.xxx.xxx:2881;xxx.xxx.xxx:2881 -o "log_dir_size_threshold=10G,proxy_mem_limited=2G" -c obdemo
#使用 configURL 的启动命令:
./bin/obproxy -p 2883 -n demo_proxy -o "obproxy_config_server_url=http://xxx.xxx.xxx.xxx:8080/services?User_ID=alibaba&UID=test&Action=GetObProxyConfig&ObproxyClusterName=demo_proxy,log_dir_size_threshold=10G,proxy_mem_limited=2G"