news 2026/9/11 4:37:16

JumpServer 远程应用 DBeaver 连接的数据库密码为什么不能使用 | 字符?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JumpServer 远程应用 DBeaver 连接的数据库密码为什么不能使用 | 字符?

JumpServer 远程应用 DBeaver 连接的数据库密码为什么不能使用 | 字符?

【免费下载链接】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 的远程应用(RemoteApp)用 DBeaver 连接数据库时,如果数据库账户的密码里含有|字符,代填连接无法工作。这是 DBeaver 代填实现机制本身决定的限制,本文基于仓库中 DBeaver 应用的说明与实际实现,解释这个限制从何而来,并说明它的适用范围和边界。

DBeaver 代填是如何组装连接参数的

DBeaver 应用以 applet 形式运行,安装来源与入口程序在 setup.yml 中定义:静默安装dbeaver-ce-22.3.4-x86_64-setup.exeC:\Program Files\DBeaver,入口程序为C:\Program Files\DBeaver\dbeaver-cli.exe

每次代填连接时,app.py 会把主机、端口、库名、用户名、密码等信息拼成一个参数字符串,再整体传给dbeaver-cli -con。核心代码如下(摘自AppletApplication._get_exec_params):

def _get_exec_params(self): driver = getattr(self, 'driver', self.protocol) params_string = f'name={self.name}|' \ f'driver={driver}|' \ f'host={self.host}|' \ f'port={self.port}|' \ f'database={self.db}|' \ f'user={self.username}|' \ f'password={self.password}|' \ f'save=false|' \ f'connect=true' return params_string
ret = subprocess.Popen([self.path, '-con', params], startupinfo=startupinfo)

也就是说,-con收到的是一串以|作为字段分隔符的key=value内容:name=...|driver=...|host=...|port=...|database=...|user=...|password=...|save=false|connect=true

|冲突发生在哪里

password={self.password}是直接把账户密码插值进这个字符串的,密码本身并没有做任何转义处理。而整个参数字符串已经依赖|来切分各个字段:

  • 如果密码本身含有|,拼接后的字符串在该位置会被切分成多余的片段,password=后面得到的不再是完整的密码,后续save=falseconnect=true等字段的解析也随之错位;
  • 同一机制下,部分数据库还会在密码之后继续追加|分隔的参数。例如 MySQL 会追加|prop.allowPublicKeyRetrieval=true_get_mysql_exec_params),Oracle 在勾选 sysdba 连接时会追加|authProp.oracle.logon-as=sysdba_get_oracle_exec_params),这些追加项同样以|开头。

DBeaver 应用自身的说明文档对这一点有直接陈述(README_ZH.md):

因代填的实现机制,连接的数据库密码不支持使用|字符。

所以这不是某个数据库或某个驱动的限制,而是代填拼参机制对所有协议通用的限制。

适用范围与前置事项

  • 支持的协议:manifest.yml 中声明该应用支持mysqlmariadbpostgresqlsqlserveroracle,这五类协议下的密码代填都受同一限制约束。
  • 驱动准备:按 README_ZH.md 的说明,连接数据库应用时需要下载驱动,可提前离线安装,或者连接时按提示安装相应驱动;应用启动时会先合并驱动配置(init_driver_config)并写入部分偏好设置(init_other_config,如关闭自动更新检查、跳过首次运行提示)。
  • 判断方式:对照 JumpServer 中该资产绑定的账户密码,只要密码字符串里出现|,通过 DBeaver 代填方式连接就会受到上述限制影响;仓库文档没有提供绕过该限制的替代拼参方式或配置项。

边界

文档给出的结论是明确的:该限制由代填实现机制决定,密码不支持|字符,因此要通过 DBeaver 代填连接目标数据库,账户密码中不能包含这个字符。除此之外的连接方式(例如不使用 DBeaver 代填)不在该应用的文档范围内。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 4:36:41

GEO与AI搜索优化:2026数字营销技术革命

1. 项目概述:当GEO遇上AI搜索优化的技术革命2026年的数字营销领域正在经历一场静悄悄的革命——GEO(地理定位优化)技术已经从单纯的本地SEO进阶为结合人工智能的智能位置服务系统。最近三个月,全球头部营销工具Semrush的流量数据显…

作者头像 李华
网站建设 2026/9/11 4:34:50

FFmpeg流复制详解:视频批量无损裁剪的原理与实战脚本

简介:需要批量裁剪视频片头片尾的个人创作者、自媒体运营者或办公人员,常因逐条导入剪辑软件、等待重新编码而耗费大量时间;这套无需重新编码的批量处理工具,可直接对音视频流精确剪切,一次处理数十甚至上千个文件。资…

作者头像 李华
网站建设 2026/9/11 4:34:39

SSL证书过期排查与自动续期:格式、部署、巡检一次讲清

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 4:34:10

3C精密零件厚度检测:激光位移传感器选型实战指南

1. 项目概述:为什么3C精密零件的厚度检测,不能再靠“手感卡尺”硬扛了做3C精密制造的朋友,尤其是干结构件、金属中框、玻璃盖板、柔性电路板(FPC)这些活儿的,肯定对“厚度公差”这四个字又爱又恨。爱的是—…

作者头像 李华
网站建设 2026/9/11 4:32:41

德承工控机DX-1300的Ubuntu NPU驱动安装教程与避坑指南

拿到一台德承工控机DX-1300,系统装好了Ubuntu,项目却在NPU驱动这一步卡了一整天,这种滋味我太熟悉了。边缘AI项目里,硬件选型往往不是最难的部分,真正的分水岭往往在软件栈能不能顺利跑起来,而NPU驱动正是这…

作者头像 李华
网站建设 2026/9/11 4:31:13

专科生必备8款AI工具提升就业竞争力

1. 专科生如何应对AI时代的就业挑战2026年的就业市场将比现在更加智能化、自动化。作为专科生,我们面临着前所未有的就业压力——AI正在取代大量传统岗位。但危机中也蕴藏着机遇,关键在于我们能否掌握正确的工具和方法。我花了三个月时间,实测…

作者头像 李华