Skip to content

本文说明 Lovrabet 工作台当前支持的数据库、连接字符串格式、网络配置和排障方法。

TIP

**先记住一个结论:**workbench 的“连接数据库并创建应用”入口只有一个连接字符串输入框,没有数据库配置表单。该输入框支持 MySQL、PostgreSQL 的 URI,也支持 MySQL、PostgreSQL、SQL Server、MariaDB、TiDB、Oracle、OceanBase 的 JDBC URL。

JDBC 是 Java 数据库连接规范,但 jdbc: 后面的 URL 语法由各数据库驱动定义,并不存在一条适用于所有数据库的统一字符串。本文列出的 JDBC 格式分别来自对应厂商或兼容协议的正式方案,并由 Lovrabet 解析为数据库连接配置。

一、支持范围

数据库Workbench 可输入格式常见默认端口Lovrabet 类型
MySQLmysql://jdbc:mysql://3306MYSQL
PostgreSQLpostgres://postgresql://jdbc:postgresql://5432POSTGRESQL
SQL Serverjdbc:sqlserver://1433SQLSERVER
MariaDBjdbc:mariadb://3306MARIADB
TiDBjdbc:mysql://,并带 dbType=TIDB4000TIDB
Oraclejdbc:oracle:thin:1521ORACLE
OceanBasejdbc:oceanbase://直连 OBServer 常用 2881;经 ODP 常用 2883OCEANBASE

端口仅为常见默认值。云数据库、公网代理、容器映射和 cpolar 等 TCP 穿透经常使用自定义端口,应以控制台或 DBA 提供的实际地址为准。

达梦数据库和 MongoDB 当前未开放。

二、Workbench 怎么使用

在 workbench 应用列表点击“连接数据库”,或进入创建应用页的“从数据库创建”区域,将完整连接字符串粘贴到输入框。

正常创建流程为:解析连接字符串 → 测试数据库连接 → 创建应用 → 保存数据库连接 → 开始数据库分析。

如果只想验证连接而不创建应用,在当前地址增加 debug=1

plaintext
/workbench?debug=1
/workbench/create?debug=1

原地址已有查询参数时,用 &debug=1 追加。页面出现“仅测试连接”后,点击该按钮只会调用连接测试,不会创建应用,也不会保存数据库连接。

已有应用内的“数据 → 数据库”管理页仍提供逐字段配置和连接字符串快速导入;这与 workbench 的单输入框入口是两个不同场景。

三、每种数据库的连接字符串

下面的 usernamepasswordhostdatabase 等都是占位符,使用时替换为真实值。不要把真实密码写进文档或发到群聊。

MySQL

Lovrabet 快捷 URI:

plaintext
mysql://username:password@host:3306/database?useSSL=true

MySQL JDBC:

plaintext
jdbc:mysql://host:3306/database?user=username&password=password&useSSL=true

MySQL 8.0 以下如果遇到 SSL 兼容问题,可按实际安全要求尝试 useSSL=false。5.7 及以下版本在应用内配置页会自动补充 Unicode、UTF-8 和旧版本兼容参数。

PostgreSQL

PostgreSQL 官方 URI,两个协议名都支持:

plaintext
postgres://username:password@host:5432/database?sslmode=require
postgresql://username:password@host:5432/database?sslmode=require

PostgreSQL JDBC:

plaintext
jdbc:postgresql://host:5432/database?user=username&password=password&sslmode=require

cpolar TCP 穿透地址可以直接作为 host 和端口,例如:

plaintext
postgres://app:password@10.tcp.vip.cpolar.cn:14195/finance

前提是隧道在线、映射目标确实是 PostgreSQL TCP 端口,且数据库监听、访问控制和防火墙允许远程连接。

SQL Server

plaintext
jdbc:sqlserver://host:1433;databaseName=database;user=username;password=password;encrypt=true

SQL Server JDBC 属性使用分号分隔。命名实例最好由 DBA 提供固定 TCP 端口,然后填写 host:port。密码含分号等特殊字符时,可按 Microsoft JDBC 规则使用花括号包裹属性值。

MariaDB

plaintext
jdbc:mariadb://host:3306/database?user=username&password=password&sslMode=verify-full

应使用 MariaDB 官方的 jdbc:mariadb://。不要使用自定义的 mariadb://

TiDB

plaintext
jdbc:mysql://host:4000/database?user=username&password=password&dbType=TIDB

TiDB 官方使用 MySQL 协议,因此标准 JDBC 前缀同样是 jdbc:mysql://,URL 本身无法可靠区分 MySQL 与 TiDB。Lovrabet 使用 dbType=TIDB 作为类型提示;这是 Lovrabet 扩展参数,解析后不会作为数据库驱动参数继续传递。

TiDB Cloud 如要求 TLS,可继续追加控制台提供的参数:

plaintext
jdbc:mysql://host:4000/database?user=username&password=password&dbType=TIDB&sslMode=verify-full

Oracle

使用 Service Name:

plaintext
jdbc:oracle:thin:username/password@//host:1521/service_name

使用旧式 SID:

plaintext
jdbc:oracle:thin:username/password@host:1521:SID

优先使用 DBA 提供的 Service Name。只有遗留环境明确使用 SID 时,才使用第二种格式。

OceanBase

plaintext
jdbc:oceanbase://host:2883/database?user=username%40tenant%23cluster&password=password

直连 OBServer 常用 2881,经 ODP 常用 2883。MySQL 模式的数据库名通常是 database,Oracle 模式通常是 schema。直连用户名常见 username@tenant,经 ODP 常见 username@tenant#cluster

由于 @# 在 URL 中有特殊含义,放在查询参数中时分别写成 %40%23。具体用户名形式以 OceanBase 控制台或 DBA 提供的信息为准。

四、特殊字符怎么处理

MySQL、PostgreSQL URI,以及 JDBC URL 的查询参数,都应对用户名、密码和数据库名中的 URL 保留字符进行百分号编码。

原字符编码
@%40
#%23
/%2F
:%3A
%%25

例如密码为 a@b#1 时,应写成 a%40b%231。未编码的 # 会被当作 URL 片段,导致解析失败。

SQL Server 使用分号属性语法,转义规则不同;包含分号的属性值应按 Microsoft JDBC 规则使用花括号,例如 password={a;b}

五、可选的 Lovrabet 类型参数

参数用途是否传给数据库驱动
dbType=TIDBjdbc:mysql:// 明确识别为 TiDB
dbVersion=8.5明确数据库版本

MySQL 和 PostgreSQL 未提供版本时,当前分别采用 8.016 作为解析默认值;其他数据库可以省略版本,也可以用 dbVersion 明确指定。

六、连接前的网络配置

当前仅支持 Lovrabet 服务端可通过公网访问的数据库。可使用云数据库公网地址、公网 IP 与端口映射、cpolar/frp TCP 穿透,或数据库厂商提供的公网代理。

localhost127.0.0.1、局域网 IP 和仅在 VPN 内可访问的地址,通常无法从 Lovrabet 服务端访问。

数据库启用 IP 白名单时,请同时放行以下四个 Lovrabet 出口 IP:

plaintext
114.55.107.181
120.26.236.115
8.154.30.39
47.110.157.121

七、排障顺序

现象优先检查
提示“解析失败”JDBC 前缀是否正确;账号、密码、主机和数据库名是否完整;特殊字符是否编码
TiDB 被识别成 MySQL是否在 jdbc:mysql:// 查询参数中加入 dbType=TIDB
连接超时公网地址是否可达;cpolar/代理是否在线;端口、安全组、防火墙和白名单是否正确
用户名或密码错误账号是否允许远程登录;OceanBase 租户/集群写法是否正确;密码是否被特殊字符截断
数据库不存在PostgreSQL 是否误填 schema;Oracle 是否混用了 SID 与 Service Name;OceanBase 是否选对模式
SSL/TLS 错误使用云控制台提供的参数和证书;不要在生产环境中随意关闭证书校验
版本或驱动错误数据库种类是否匹配 JDBC 前缀;TiDB 是否带类型提示;数据库实际版本是否兼容

建议依次排查:字符串格式 → 地址和端口 → 白名单/安全组 → 账号权限 → 数据库名 → SSL/TLS → 类型和版本。

八、安全建议

  • 先用专用只读账号验证,需要写入时再按业务范围增权
  • 不要把真实密码写入飞书文档、工单、代码仓库或截图
  • 公网数据库必须设置白名单和强密码,条件允许时启用 TLS
  • cpolar 等临时穿透适合联调,不建议直接作为生产数据库长期暴露方案
  • 生产连接变更前,先用 debug=1 的“仅测试连接”验证

九、官方格式参考

基于飞书知识库同步生成,内容以飞书源文档为准