如何通过OpenShift暴露的路由连接MySQL数据库并解决DBeaver URL解析错误
故障原因
DBeaver要求数据库连接URL必须遵循对应数据库的专属协议格式(比如MySQL为jdbc:mysql://、PostgreSQL为jdbc:postgresql://),你从OpenShift获取的https://开头的地址是OpenShift Route暴露的七层HTTP/HTTPS访问入口,仅支持承载HTTP/HTTPS协议流量,无法作为TCP协议的数据库连接串使用,所以会触发格式解析错误。
正确连接操作步骤
- 第一步:调整OpenShift数据库暴露方式
七层Route/Ingress不支持非HTTP/HTTPS的TCP流量,你需要将数据库的Service调整为NodePort类型或者LoadBalancer类型,如果是内网临时测试,也可以直接使用端口转发能力,无需对外暴露服务。 - 第二步:拼接对应数据库的合法连接URL
不同数据库的连接串格式不同,常见数据库示例如下:- MySQL:
jdbc:mysql://<集群节点IP/LoadBalancer地址>:<端口>/<数据库名>?useSSL=false - PostgreSQL:
jdbc:postgresql://<集群节点IP/LoadBalancer地址>:<端口>/<数据库名> - Oracle:
jdbc:oracle:thin:@<集群节点IP/LoadBalancer地址>:<端口>:<服务名>
如果你用NodePort暴露,端口填Service对应的NodePort端口即可;如果用LoadBalancer暴露,端口填Service对外暴露的端口。
- MySQL:
- 第三步:DBeaver侧配置
新建对应数据库类型的连接,选择原生数据库驱动,将拼接好的连接串填入URL输入框,补充数据库用户名、密码后即可测试连接。
临时测试快速方案
如果仅做本地临时调试,不需要对外暴露数据库,可以直接用OpenShift端口转发能力:
- 本地安装
oc命令行工具,执行oc login <OpenShift控制台地址>完成集群登录 - 执行端口转发命令,将本地端口映射到集群内数据库的端口,以默认端口3306的MySQL为例:
oc port-forward <数据库Pod名称> 3306:3306 - 转发保持运行期间,DBeaver直接使用
jdbc:mysql://localhost:3306/<数据库名>连接即可。
内容的提问来源于stack exchange,提问作者randex17
相关产品推荐
相关产品推荐

