You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mongodump密码含单双引号触发EOF语法错误的修复方案咨询

含特殊字符的MongoDB密码执行mongodump报错修复方案

报错根因

返回的/bin/sh: 1: Syntax error: EOF in backquote substitution错误由Shell字符串解析规则冲突导致:

  • 单引号包裹的字符串无法直接嵌入单引号,原命令中的-p='f'%Z(Ov"{Z(i'写法会被Shell截断,导致密码中的反引号没有被正确包裹,触发Shell的命令替换逻辑,缺少闭合标记就会抛出EOF错误
  • 本次使用的密码同时包含单引号、双引号、反引号三类Shell特殊保留字符,普通单/双引号包裹都会触发解析异常

修复方案

方案1:使用Shell ANSI-C引号语法(最快解决)

利用Shell支持的$'...'ANSI-C字符串语法包裹密码,仅需转义密码内的单引号为\'即可,无需处理其他特殊字符,修改后命令如下:

sudo docker exec -t container_name mongodump --db db_name --authenticationDatabase admin -u=username -p=$'f\'%`Z(Ov"{Z(i' -o=/data/db/backup/mongodump_sample --gzip

方案2:环境变量传递密码(更高安全性)

通过环境变量传递密码,既可以规避转义冲突,还能避免密码明文出现在进程列表中,操作如下:

# 定义密码变量,单引号内的单引号用'\''格式转义
MONGO_PASS='f'\''%`Z(Ov"{Z(i'
# 传入环境变量到容器并执行命令
sudo docker exec -t -e MONGO_PASS="$MONGO_PASS" container_name mongodump --db db_name --authenticationDatabase admin -u=username -p="$MONGO_PASS" -o=/data/db/backup/mongodump_sample --gzip

方案3:配置文件传递认证信息(最稳妥无转义)

将认证信息写入MongoDB配置文件,执行命令时指定配置文件,完全不需要处理特殊字符转义:

  1. 在docker容器内创建配置文件/tmp/mongo-auth.conf,内容如下:
username: "username"
password: "f'%`Z(Ov\"{Z(i"
authenticationDatabase: "admin"
  1. 执行mongodump命令指定配置文件:
sudo docker exec -t container_name mongodump --config /tmp/mongo-auth.conf --db db_name -o=/data/db/backup/mongodump_sample --gzip

内容的提问来源于stack exchange,提问作者Neo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:15:04