问题现象
测试连接或打开连接时报错。
报错信息:
数据库报权限错误,请检查连接配置,确认用户密码正确,且默认数据库为当前用户有权限的库,当前默认数据库为 test,错误详情:Could not connect to address=(host=some.domain.com)(port=2881)(type=master) : (conn=3221531229) Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)报错信息示例:

问题原因
数据库账号密码配置错误。
数据库账号无对应数据库的访问权限。
租户白名单配置未包含 ODC 所在机器 IP 地址。
MySQL 租户选择了 Oracle 连接类型。
解决方法
通过 OBClient 连接数据库成功
如果 Navicat 和 OBClient V1.x 版本能够正常连接数据库而 ODC 连接失败,则此问题因租户白名单配置导致。需要将 ODC 所在机器的 IP 地址配置到租户白名单中。
查看租户白名单是否包含 ODC 所在机器 IP 地址:
SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';
系统变量
ob_tcp_invited_nodes用于设置租户的 IP 白名单,是租户全局的白名单限制参数。默认值:127.0.0.1,::1,表示仅允许本机的 IP 连接该租户。%表示允许任何客户端 IP 连接该租户,同时支持短横线(_) 和 IP(多个 IP 之间用逗号分隔),支持 IP 列表匹配、掩码匹配和模糊匹配。
通过 OBClient 连接数据库失败
确认数据库账密是否填写正确。
使用 OBClient 确认数据库账号是否具有对应数据库的访问权限。
-- OB-MySQL 查看当前用户的被授予的权限 show grants; -- OB-Oracle 查看当前用户被授予的角色 select * from USER_ROLE_PRIVS; -- OB-Oracle 查看对应角色拥有的数据库权限 select PRIVILEGE from ROLE_SYS_PRIVS where ROLE='ROLE_NAME';