带 `$` 符号的 Redis 密码在 Flink 调度脚本中被截断的解决方案 WRONGPASS invalid username-password pair or user is disabled
在实际生产使用中,如果你的 Redis 密码中包含 $
符号,而你又通过调度脚本(如 DolphinScheduler)或 Shell 参数方式传递给 Flink,就可能造成密码被部分截断,进而导致:
WRONGPASS invalid username-password pair or user is disabled
这是因为 Shell 解释 $
为变量展开符,后续字符被当作环境变量名或被空串替换,破坏了原本正确的密码。
问题场景
你在调度器的 Flink 启动参数中写:
-Dredis.password=vH8cX9uGGsFE$qbD
当 Shell 解析这个字符串时,$qbD
部分被视为变量(未定义则为空),真实传入 Flink 的密码就变成 vH8cX9uGGsFE
,自然与服务端不符。
解决方法:在参数中使用反斜线转义 $
只需要在 $
前加上 \
,变成:
-Dredis.password=vH8cX9uGGsFE\$qbD
这样 Shell 会把 \$
识别为“普通字符 $
”,而不会再进行变量替换。最终传入 Flink 的字符串完整无缺,就能正常通过 Redis 认证。
总结
如果在脚本参数里直接包含 $
而不做任何转义,就会被 Shell 截断或替换,从而出现“WRONGPASS”问题。解决方式十分简单:在 $
前面加 \
即可,保证 Shell 不做变量解析。这样就能让带 $
符号的密码正常传递并成功连接到 Redis。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-01-21 XXL-JOB BEAN运行模式
2020-01-21 Those Compelling,Thought-provoking Movies