ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

JumpServer DBeaver 数据库应用 Applet 使用指南:驱动安装与密码代填限制解析

JumpServer DBeaver 数据库应用 Applet 使用指南:驱动安装与密码代填限制解析 JumpServer DBeaver 数据库应用 Applet 使用指南驱动安装与密码代填限制解析【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver本篇技术指南围绕 JumpServer 内置的DBeaver Community 数据库应用 Applet展开重点讲解通过 Web 浏览器连接 MySQL、PostgreSQL、SQL Server、Oracle 等数据库时JDBC 驱动应如何下载/离线预装以及代填autofill机制下数据库密码不允许包含|字符的底层原因。读完本文你将掌握 DBeaver Applet 的安装部署方式、驱动配置方法并理解密码字符限制的实现原理从而避免在实际运维中踩坑。一、DBeaver Applet 在 JumpServer 中的定位JumpServer 作为开源特权访问管理PAM平台支持通过 Web 浏览器对 SSH、RDP、Kubernetes、数据库与 RemoteApp 端点进行安全访问。其中**数据库应用Database App**场景由dbeaverApplet 承载它在用户本机启动 DBeaver 社区版并以代填方式自动注入数据库账号密码用户无需接触真实凭据即可完成连接。Applet 的元信息定义在 manifest.yml 中关键字段如下字段值说明namedbeaverApplet 唯一标识display_nameDBeaver Community社区版界面展示名称version0.4Applet 版本exec_typepython以 Python 方式执行typegeneral通用应用类型protocolsmysql / mariadb / postgresql / sqlserver / oracle支持的数据库协议也就是说该 Applet 覆盖了当前主流的关系型数据库协议针对每一种协议JumpServer 都内置了对应的 JDBC 驱动定义详见下文第四节。二、客户端安装与补丁setup.yml 与 patch.ymlDBeaver Applet 需要在**用户本机Windows**安装 DBeaver 客户端。安装与补丁描述分别位于setup.yml主程序静默安装patch.yml官方补丁静默安装主安装脚本内容如下type: exe # exe, zip, manual source: jms:///download/applets/dbeaver-ce-22.3.4-x86_64-setup.exe arguments: - /S - /allusers destination: C:\Program Files\DBeaver program: C:\Program Files\DBeaver\dbeaver-cli.exe md5: EDA4440D4E32312DD25C9CE5289A228Etype: exe通过可执行文件安装另有zip、manual、msi等类型source安装包来源于 JumpServer 服务器自身的jms:///download/applets/下载通道对应版本为DBeaver CE 22.3.4x86_64arguments/S静默安装、/allusers为所有用户安装安装过程无需人工点击destination/program安装目录与最终启动的可执行文件路径为C:\Program Files\DBeaver\dbeaver-cli.exeApplet 运行时会直接调用该 CLI 程序见 app.py 中的_default_path常量md5安装包完整性校验值防止下载被篡改。补丁脚本 patch.yml 则通过msi类型安装dbeaver-patch-22.3.4-x86_64-setup.msi参数为/quiet静默模式用于对已安装的 DBeaver 进行修复/升级。实操提示在 JumpServer 管理后台部署 DBeaver 应用时这些安装脚本会引导用户完成客户端部署由于安装与补丁包都托管在 JumpServer 的jms://下载通道要求服务器端已上传对应安装包。三、驱动下载离线预装 or 连接时按提示安装关联文档明确指出连接数据库应用时需要下载驱动可提前离线安装或者连接时按提示安装相应驱动。DBeaver 连接数据库的第一步是加载对应 JDBC 驱动Driver。驱动获取有两条路径连接时在线下载DBeaver 在首次连接时根据drivers.xml中声明的 Maven 依赖从 Maven Central 下载对应的 JDBC JAR 包提前离线安装运维人员预先将驱动 JAR 放入 DBeaver 的drivers目录如C:\Program Files\DBeaver\drivers或在 JumpServer 侧准备好内置驱动包避免用户连接时因网络不可达导致失败。在源码层面Applet 启动时会做两类驱动相关初始化见 app.pyinit_driver_config()将 Applet 自带的 config/drivers.xml合并进用户工作区的workspace6/.metadata/.config/drivers.xml。合并采用去重追加策略——_merge_driver_xml会遍历内置 XML 中的每个driver若目标文件不存在相同tag且相同属性的条目才将其追加进去若目标文件尚不存在首次运行则直接复制内置drivers.xml。该文件位于用户目录下的C:\Users\用户名\AppData\Roaming\DBeaverData由get_app_work_path()计算。init_other_config()写入org.jkiss.dbeaver.core.prefs关闭自动更新检查ui.auto.update.checkfalse、取消示例数据库提示sample.database.canceledtrue与每日提示弹窗ui.show.tip.of.the.day.on.startupfalse保证代填连接过程不被弹窗干扰。因此即便用户本机没有预装驱动只要能够访问 Maven 仓库或 JumpServer 已代理相关下载连接时也会按提示自动拉取而离线环境下则建议在客户端预先放好驱动 JAR。四、内置驱动覆盖范围drivers.xml 解析config/drivers.xml 是 Applet 内置的驱动定义文件共声明 5 个数据库驱动与manifest.yml中的protocols一一对应驱动 ID数据库JDBC 类默认端口内置版本mariaDBMariaDBorg.mariadb.jdbc.Driver3306mariadb-java-client 3.0.7mysql8MySQLcom.mysql.cj.jdbc.Driver3306mysql-connector-java 8.0.29postgres-jdbcPostgreSQLorg.postgresql.Driver5432postgresql 42.5.0microsoftSQL Servercom.microsoft.sqlserver.jdbc.SQLServerDriver1433mssql-jdbc 9.2.0.jre8oracle_thinOracleoracle.jdbc.OracleDriver1521ojdbc8 12.2.0.1每个driver节点同时声明了library依赖Maven 坐标、版本与本地 JAR 路径和license许可文件DBeaver 启动时据此定位/下载 JAR。若需新增其他数据库类型可在该 XML 中扩展对应的 provider/driver 节点。五、密码代填机制与|字符限制关联文档第二条限制是因代填的实现机制连接的数据库密码不支持使用|字符。为什么偏偏是|答案在 Applet 的启动参数构造逻辑中。Applet 以python类型执行入口 main.py 将 JumpServer 下发的 base64 参数解码为 JSON随后AppletApplication.run()构造 DBeaver CLI 的-con连接参数串见 app.py 中_get_exec_params()params_string fname{self.name}| \ fdriver{driver}| \ fhost{self.host}| \ fport{self.port}| \ fdatabase{self.db}| \ fuser{self.username}| \ fpassword{self.password}| \ fsavefalse| \ fconnecttrue可以看到|是各连接参数之间的分隔符name、driver、host、port、database、user、password、save、connect依序以|拼接后作为dbeaver-cli.exe -con params的参数传入。DBeaver CLI 解析时按|切分键值对——如果密码本身包含|password...的值会被提前截断导致密码解析错误甚至参数错位。这正是代填实现机制对密码字符集的硬性约束。实战建议为通过 DBeaver Applet 访问的数据库账号设置密码时请避免使用|字符其余字符如、#、%等在代填场景中均可正常传递。六、不同协议下的代填参数差异run()方法根据self.protocol动态选择参数构造函数未命中时回退到通用的_get_exec_params()MySQL / MariaDB_get_mysql_exec_params()在通用参数后追加|prop.allowPublicKeyRetrievaltrue解决 MySQL 8 缓存 SHA-2 密码认证caching_sha2_password下Public Key Retrieval is not allowed的经典报错Oracle_get_oracle_exec_params()在连接选项use_sysdba为真时追加|authProp.oracle.logon-assysdba支持以 SYSDBA 身份登录SQL Server_get_sqlserver_exec_params()将驱动固定切换为mssql_jdbc_ms_new对应新版本 JDBC 驱动后再生成参数。主机与端口默认取自资产的address与协议端口asset.get_protocol_port(self.protocol)若配置了隧道转发tinker_forward则改用隧道的 host/port。连接名称name形如主机地址-数据库名-时间戳每次连接唯一。连接建立后wait()通过wait_pid见 common.py每 5 秒调用tasklist轮询 CLI 进程 PID直到 DBeaver 退出才结束整个 Applet 生命周期同时main.py在运行期间调用block_input()/unblock_input()临时锁定本机输入防止代填过程中用户误操作干扰凭据注入。七、部署与排障要点小结客户端准备确保用户本机为 Windows 且已通过 setup.yml / patch.yml 安装 DBeaver CE 22.3.4 及补丁安装路径保持默认的C:\Program Files\DBeaver。驱动准备在线环境下首次连接按提示下载即可离线/受限网络环境请提前将驱动 JAR 放置到 DBeaverdrivers目录或通过内置drivers.xml统一管理config/drivers.xml。密码约束数据库账号密码禁止包含|字符原因见第五节参数拼接源码。常见报错对照MySQL 8 连接报Public Key Retrieval is not allowedApplet 已自动追加allowPublicKeyRetrievaltrue一般无需手工处理连接后弹窗/自动更新干扰Applet 已通过init_other_config()关闭自动更新与每日提示首次连接提示下载驱动失败检查客户端到 Maven 仓库的网络或改为离线预装驱动。通过以上配置即可在 JumpServer 中以零接触凭据的方式安全访问多种数据库。如需进一步阅读 Applet 完整实现可参考 app.py、common.py 以及同目录下的 README_ZH.md中文版说明。【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进