尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

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.exe到C:\Program Files\DBeaver入口程序为C:\Program Files\DBeaver\dbeaver-cli.exe。每次代填连接时app.py 会把主机、端口、库名、用户名、密码等信息拼成一个参数字符串再整体传给dbeaver-cli -con。核心代码如下摘自AppletApplication._get_exec_paramsdef _get_exec_params(self): driver getattr(self, driver, self.protocol) params_string fname{self.name}| \ fdriver{driver}| \ fhost{self.host}| \ fport{self.port}| \ fdatabase{self.db}| \ fuser{self.username}| \ fpassword{self.password}| \ fsavefalse| \ fconnecttrue return params_stringret subprocess.Popen([self.path, -con, params], startupinfostartupinfo)也就是说-con收到的是一串以|作为字段分隔符的keyvalue内容name...|driver...|host...|port...|database...|user...|password...|savefalse|connecttrue。|冲突发生在哪里password{self.password}是直接把账户密码插值进这个字符串的密码本身并没有做任何转义处理。而整个参数字符串已经依赖|来切分各个字段如果密码本身含有|拼接后的字符串在该位置会被切分成多余的片段password后面得到的不再是完整的密码后续savefalse、connecttrue等字段的解析也随之错位同一机制下部分数据库还会在密码之后继续追加|分隔的参数。例如 MySQL 会追加|prop.allowPublicKeyRetrievaltrue_get_mysql_exec_paramsOracle 在勾选 sysdba 连接时会追加|authProp.oracle.logon-assysdba_get_oracle_exec_params这些追加项同样以|开头。DBeaver 应用自身的说明文档对这一点有直接陈述README_ZH.md因代填的实现机制连接的数据库密码不支持使用|字符。所以这不是某个数据库或某个驱动的限制而是代填拼参机制对所有协议通用的限制。适用范围与前置事项支持的协议manifest.yml 中声明该应用支持mysql、mariadb、postgresql、sqlserver、oracle这五类协议下的密码代填都受同一限制约束。驱动准备按 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),仅供参考
返回列表