本文说明 Lovrabet 工作台当前支持的数据库、连接字符串格式、网络配置和排障方法。
TIP
**先记住一个结论:**workbench 的“连接数据库并创建应用”入口只有一个连接字符串输入框,没有数据库配置表单。该输入框支持 MySQL、PostgreSQL 的 URI,也支持 MySQL、PostgreSQL、SQL Server、MariaDB、TiDB、Oracle、OceanBase 的 JDBC URL。
JDBC 是 Java 数据库连接规范,但 jdbc: 后面的 URL 语法由各数据库驱动定义,并不存在一条适用于所有数据库的统一字符串。本文列出的 JDBC 格式分别来自对应厂商或兼容协议的正式方案,并由 Lovrabet 解析为数据库连接配置。
一、支持范围
| 数据库 | Workbench 可输入格式 | 常见默认端口 | Lovrabet 类型 |
|---|---|---|---|
| MySQL | mysql://、jdbc:mysql:// | 3306 | MYSQL |
| PostgreSQL | postgres://、postgresql://、jdbc:postgresql:// | 5432 | POSTGRESQL |
| SQL Server | jdbc:sqlserver:// | 1433 | SQLSERVER |
| MariaDB | jdbc:mariadb:// | 3306 | MARIADB |
| TiDB | jdbc:mysql://,并带 dbType=TIDB | 4000 | TIDB |
| Oracle | jdbc:oracle:thin: | 1521 | ORACLE |
| OceanBase | jdbc:oceanbase:// | 直连 OBServer 常用 2881;经 ODP 常用 2883 | OCEANBASE |
端口仅为常见默认值。云数据库、公网代理、容器映射和 cpolar 等 TCP 穿透经常使用自定义端口,应以控制台或 DBA 提供的实际地址为准。
达梦数据库和 MongoDB 当前未开放。
二、Workbench 怎么使用
在 workbench 应用列表点击“连接数据库”,或进入创建应用页的“从数据库创建”区域,将完整连接字符串粘贴到输入框。
正常创建流程为:解析连接字符串 → 测试数据库连接 → 创建应用 → 保存数据库连接 → 开始数据库分析。
如果只想验证连接而不创建应用,在当前地址增加 debug=1:
/workbench?debug=1
/workbench/create?debug=1原地址已有查询参数时,用 &debug=1 追加。页面出现“仅测试连接”后,点击该按钮只会调用连接测试,不会创建应用,也不会保存数据库连接。
已有应用内的“数据 → 数据库”管理页仍提供逐字段配置和连接字符串快速导入;这与 workbench 的单输入框入口是两个不同场景。
三、每种数据库的连接字符串
下面的 username、password、host、database 等都是占位符,使用时替换为真实值。不要把真实密码写进文档或发到群聊。
MySQL
Lovrabet 快捷 URI:
mysql://username:password@host:3306/database?useSSL=trueMySQL JDBC:
jdbc:mysql://host:3306/database?user=username&password=password&useSSL=trueMySQL 8.0 以下如果遇到 SSL 兼容问题,可按实际安全要求尝试 useSSL=false。5.7 及以下版本在应用内配置页会自动补充 Unicode、UTF-8 和旧版本兼容参数。
PostgreSQL
PostgreSQL 官方 URI,两个协议名都支持:
postgres://username:password@host:5432/database?sslmode=require
postgresql://username:password@host:5432/database?sslmode=requirePostgreSQL JDBC:
jdbc:postgresql://host:5432/database?user=username&password=password&sslmode=requirecpolar TCP 穿透地址可以直接作为 host 和端口,例如:
postgres://app:password@10.tcp.vip.cpolar.cn:14195/finance前提是隧道在线、映射目标确实是 PostgreSQL TCP 端口,且数据库监听、访问控制和防火墙允许远程连接。
SQL Server
jdbc:sqlserver://host:1433;databaseName=database;user=username;password=password;encrypt=trueSQL Server JDBC 属性使用分号分隔。命名实例最好由 DBA 提供固定 TCP 端口,然后填写 host:port。密码含分号等特殊字符时,可按 Microsoft JDBC 规则使用花括号包裹属性值。
MariaDB
jdbc:mariadb://host:3306/database?user=username&password=password&sslMode=verify-full应使用 MariaDB 官方的 jdbc:mariadb://。不要使用自定义的 mariadb://。
TiDB
jdbc:mysql://host:4000/database?user=username&password=password&dbType=TIDBTiDB 官方使用 MySQL 协议,因此标准 JDBC 前缀同样是 jdbc:mysql://,URL 本身无法可靠区分 MySQL 与 TiDB。Lovrabet 使用 dbType=TIDB 作为类型提示;这是 Lovrabet 扩展参数,解析后不会作为数据库驱动参数继续传递。
TiDB Cloud 如要求 TLS,可继续追加控制台提供的参数:
jdbc:mysql://host:4000/database?user=username&password=password&dbType=TIDB&sslMode=verify-fullOracle
使用 Service Name:
jdbc:oracle:thin:username/password@//host:1521/service_name使用旧式 SID:
jdbc:oracle:thin:username/password@host:1521:SID优先使用 DBA 提供的 Service Name。只有遗留环境明确使用 SID 时,才使用第二种格式。
OceanBase
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=TIDB | 将 jdbc:mysql:// 明确识别为 TiDB | 否 |
dbVersion=8.5 | 明确数据库版本 | 否 |
MySQL 和 PostgreSQL 未提供版本时,当前分别采用 8.0 和 16 作为解析默认值;其他数据库可以省略版本,也可以用 dbVersion 明确指定。
六、连接前的网络配置
当前仅支持 Lovrabet 服务端可通过公网访问的数据库。可使用云数据库公网地址、公网 IP 与端口映射、cpolar/frp TCP 穿透,或数据库厂商提供的公网代理。
localhost、127.0.0.1、局域网 IP 和仅在 VPN 内可访问的地址,通常无法从 Lovrabet 服务端访问。
数据库启用 IP 白名单时,请同时放行以下四个 Lovrabet 出口 IP:
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的“仅测试连接”验证