带 `$` 符号的 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。

posted on 2025-01-21 22:25  滚动的蛋  阅读(206)  评论(0)    收藏  举报

导航