数据源配置
新建、测试、复制、删除数据连接的步骤,表单字段说明,连接池高级参数,密码加密与访问权限。
概述
「数据连接」保存报表、大屏与公共数据集访问数据库所需的连接信息。一个数据连接对应一个数据库账号,数据集通过「数据连接」下拉框选用它。
数据连接页面共四个标签页:
| 标签页 | 用途 | 说明文档 |
|---|---|---|
| 数据连接 | 新建、编辑、测试、复制、删除连接 | 本文 |
| 全局设置 | 连接池默认值、安全、监控、慢查询 | 驱动管理与连接池 |
| 连接池 | 查看与关闭运行中的连接池 | 驱动管理与连接池 |
| 驱动管理 | 查看内置驱动、上传自定义驱动 | 驱动管理与连接池 |
目前只支持 JDBC 类型的数据连接,可选数据库见 支持的数据库。
功能入口
「系统」菜单 > 「数据连接」。进入页面后左侧是数据连接树,支持搜索与拖拽排序;右侧是所选连接的详情,页头按钮为「测试连接」「编辑」「复制」「删除」;左侧的「新建数据连接」用于新建。
页面需要系统权限 datasource(名称「数据连接」),见文末「访问权限」。
操作步骤
新建数据连接
- 点击「新建数据连接」,打开编辑对话框。
- 填写「数据连接名称」,选择「数据库类型」。选择后「端口」自动填入该类型的默认端口。
- 填写「主机」「端口」「数据库名称」「用户名」「密码」。Oracle 另需选择「连接模式」。
- 需要指定模式时,在填好用户名和密码后从「模式名称」下拉框选择。
- 需要附加 JDBC 参数时,在「扩展参数」中点击「添加参数」,填写参数名与参数值。
- 检查只读显示的「URL连接」是否符合预期。
- 点击「测试连接」,提示「数据库连接测试通过」后点击「保存」。
必填项未填写时保存会提示「请填写完整」;名称与已有连接重复时提示「数据源名称已存在」。

编辑数据连接
在详情页点击「编辑」。密码框不会回显已保存的密码;留空保存表示沿用原密码,重新输入则替换。测试连接与「模式名称」查询同样在密码留空时使用已保存的密码。
复制数据连接
点击「复制」,在「请输入新数据连接名称」的提示框(标题「复制数据连接」)中输入新名称。服务端直接复制加密后的配置,因此密码也一并复制。
删除数据连接
点击「删除」,确认提示为「此操作将永久删除该记录, 是否继续?」。删除、重命名或修改连接时,该连接对应的连接池缓存会被清除,下次访问时按新配置重建。
注意:仍被数据集引用的连接被删除后,这些数据集执行时会失败。
属性说明
基本连接字段
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 数据连接名称 | 连接的显示名,全局不可重复 | 必填 |
| 数据库类型 | 数据库产品。未内置驱动的类型带「(需上传驱动)」 | 必填,见 支持的数据库 |
| 主机 | 数据库服务器地址 | 默认 localhost |
| 端口 | 数据库监听端口 | 1–65535,随类型给出默认值 |
| 数据库名称 | 库名。SQLite 填文件路径 | 必填 |
| 连接模式 | 仅 Oracle 显示 | 「服务名 (Service Name)」或「SID」 |
| 用户名 | 登录账号 | 必填 |
| 密码 | 登录密码 | 编辑时留空表示不修改 |
| 模式名称 | 仅支持模式的类型显示;填好用户名和密码后在线查询,可手动输入 | 可选 |
| 编码 | 可选:默认、UTF-8、GBK、BIG5、UTF-16、EUC_JP、EUC_KR、CP850 | 默认 |
| URL连接 | 根据以上字段生成的 JDBC URL,只读显示 | 自动生成 |
| 扩展参数 | 参数名/参数值列表,追加到 URL | 可选 |
注意:「编码」只是保存在连接配置中,不会写入 URL,连接建立时也没有使用它。需要指定字符集时,请用「扩展参数」,例如 MySQL 添加
characterEncoding=UTF-8。
连接池高级字段
这些字段位于对话框的高级设置。留空表示不设置,此时使用连接池组件 HikariCP 自带的默认值;只有填写了的字段才会生效。
| 属性 | 说明 | 取值/单位 |
|---|---|---|
| 只读连接 | 以只读方式获取连接 | 开关 |
| 连接超时时间 | 从连接池获取连接的最长等待 | 0–60,秒(占位提示 30) |
| 验证超时时间 | 校验连接是否有效的最长等待 | 0–60,秒(占位提示 5) |
| 连接的最大生命周期 | 连接存活的最长时间,超过后被回收重建 | 0–200,分钟(占位提示 30) |
| 空闲连接超时时间 | 空闲连接被回收前的等待 | 0–200,分钟(占位提示 10) |
| 空闲连接保活时间 | 对空闲连接定期保活 | 0–200,分钟(占位提示 8) |
| 最小空闲连接数 | 池中保持的最少空闲连接 | 0–200(占位提示 10) |
| 最大连接连接数 | 池允许的最大连接数(界面文案如此) | 0–200(占位提示 10) |
| 连接测试查询语句 | 借出连接前的校验语句 | 例如 SELECT 1 |
保存时前端把秒换算为毫秒、分钟换算为毫秒后交给后端。占位提示只是输入框的示例值,并不等于留空时的实际取值。
页头按钮
| 按钮 | 作用 |
|---|---|
| 测试连接 | 用当前表单(详情页则用已保存配置)尝试连接 |
| 编辑 | 打开编辑对话框 |
| 复制 | 复制为新连接 |
| 删除 | 永久删除 |
| 关闭 / 保存 | 对话框底部,关闭或保存 |
连接测试
点击「测试连接」,后端使用 JDBC 驱动直接建立一次连接,成功提示「数据库连接测试通过」,失败提示「数据库连接失败:」加具体原因。测试和查询「模式名称」列表都不经过连接池。
常见原因:
| 现象 | 排查方向 |
|---|---|
| 找不到驱动类 | 对应类型带「(需上传驱动)」,先在「驱动管理」上传 |
| 连接超时或拒绝 | 主机、端口、防火墙,数据库是否允许该来源 IP |
| 认证失败 | 用户名、密码,或 Oracle 的连接模式选错 |
| 「不支持的数据源类型」 | 数据连接类型不是 jdbc |
密码加密与安全
- 前端使用 AES 加密整段连接配置后提交,服务端再用
ContentProtector重新加密入库。 - 服务端密钥取环境变量
SIGHTDATA_DATASOURCE_KEY,或系统属性sightdata.datasource.key;两者都未设置时使用内置的兼容默认值。生产环境应自行设置。 - 更换服务端密钥后,已保存的连接无法用新密钥解密,需要逐个重新保存。
- 详情接口返回给浏览器前,
password、secret、token等敏感字段会被清空。 - JDBC URL 会经过安全校验,拒绝
allowLoadLocalInfile、autoDeserialize、socketFactory、queryInterceptors,H2 的INIT、RUNSCRIPT、CREATE ALIAS等危险内容。 - 连接如果指向系统自身的元数据库(按主机、端口、库名及模式比较),默认拒绝保存。管理员可在提示中选择「仍然强制保存」,该操作会记入审计。复制这类连接始终被拒绝。
注意:给报表使用的数据库账号只授予读权限。报表 SQL 虽有注入校验,但账号权限才是最后的防线。
访问权限
- 数据连接页面、连接池、驱动与全局设置的接口需要系统权限
datasource。 - 数据集的管理接口接受
datasource或report-design任一权限,因此报表设计人员无需管理数据连接也能创建数据集。 - 报表 SQL 日志开关(「输出每条SQL日志」)会把查询参数写入日志,可能包含患者信息,生产环境保持「关闭(推荐)」。
示例
为医院 Oracle 库配置只读连接,使用 SID 方式:
| 字段 | 填写 |
|---|---|
| 数据连接名称 | his_oracle |
| 数据库类型 | Oracle |
| 主机 / 端口 | 10.0.3.15 / 1521 |
| 连接模式 | SID |
| 数据库名称 | HISDB |
| 用户名 | rpt_reader |
| 连接测试查询语句 | SELECT 1 FROM DUAL |
生成的 URL 为 jdbc:oracle:thin:@10.0.3.15:1521:HISDB。测试通过后,在数据集编辑对话框的「数据连接」中即可选择 his_oracle。