java程序连接不上OceanBase,报错Access denied for user 'FS_USER'@'xxx.xxx.xxx.xxx' (using password: YES)

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】驱动版本:oceanbase-client-2.4.12 数据库版本:4.2.5.4 数据库模式:oracle模式
【问题描述】使用obclient和dbeaver工具都可以连接上,但是java程序一连接就报错,账号和密码也没输错,不知道是什么原因
【附件及日志】

2 个赞

为啥不是连接2883的,你的obproxy是2881吗,理论来说2881应该是observer端口吧。

2 个赞

没带租户名。
如果直连OBServer:用户名@租户名
如果连OBProxy:用户名@租户名#集群名

3 个赞

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节。建议你通过以下方式寻求帮助:
1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
OceanBase官网商务咨询

https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022

3 个赞
      url: jdbc:oceanbase://192.168.88.101:2883/fs_user?loadbalancestrategy=random&rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useUnicode=TRUE&characterEncoding=utf-8&connectTimeout=30000&useCompatibleMetadata=True
      username: FS_USER@fs_kone_db#obcluster
      password: db123
      driver-class-name: com.oceanbase.jdbc.Driver
      testWhileIdle: true
      validationQuery: SELECT 1 FROM DUAL 带了租户名,但是还是报错
2 个赞
      url: jdbc:oceanbase://192.168.100.101:2883/fs_user?loadbalancestrategy=random&rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useUnicode=TRUE&characterEncoding=utf-8&connectTimeout=30000&useCompatibleMetadata=True
      username: FS_USER@fs_kone_db#obcluster
      password: SZkingdb123
      driver-class-name: com.oceanbase.jdbc.Driver
      testWhileIdle: true
      validationQuery: SELECT 1 FROM DUAL  用2883还是报错
2 个赞

用obclient命令行工具连下确认下密码

2 个赞

确认了,用obclient可以连接上

2 个赞

同一台服务器,用java程序连接就是连不上

2 个赞

用户名带了租户名连接,但是报错信息显示却没带租户名,就很奇怪

2 个赞

用2883还是报密码错误吗,是Oracle租户吗,还是MySQL租户,改成 select 1可以的吗。

2 个赞

FS_USER@fs_kone_db#obcluster,@符号被转义了,没有识别到?

2 个赞

access_denied,应该是密码错误,或者f防火墙?

1 个赞

兄弟正解

1 个赞

直接方式,账户格式不对吧??既然是企业版,找你oceanbase企业版技术支持即可,除非你是不知道从来弄来的企业安装包 :rofl:

1 个赞

都url 配置了直接把用户密码放url里面呀如下:
jdbc:mysql://$host:$port/$database_name?user=$user_name&password=$password&useSSL=false
如果非要拆出来,用户密码的内容用双引号包起来呀

2 个赞