sentinel auth-pass 必须在每个 sentinel.conf 中单独配置,且仅对本哨兵生效;格式为 sentinel auth-pass , 需与 sentinel monitor 一致,密码不可含空格或特殊字符;主库密码变更后哨兵不会自动感知,必须重启所有哨兵进程才能生效。

sentinel auth-pass 配置在哪写、写几次
必须在每个 sentinel.conf 文件里单独配置,且只对本哨兵进程生效;不是写一次全局生效,也不是写在 Redis 主从配置里。如果你有 3 个哨兵节点,就得在 3 份配置文件中都加上对应行。
常见错误是只改了其中一个哨兵的配置,重启后发现它能连主库,但其他哨兵持续报 NOAUTH Authentication required,监控就断了。
- 配置位置:放在
sentinel monitor指令之后,同一份sentinel.conf中 - 格式严格:
sentinel auth-pass,必须和sentinel monitor用的名字完全一致(大小写敏感) - 密码不能带空格或特殊字符;如果含
#或引号,会被当注释或语法错误,直接导致哨兵启动失败
主库改了 requirepass,哨兵不重启会怎样
哨兵不会自动感知主库密码变更。它只在初始化连接或故障转移时尝试认证,一旦连接建立成功,后续心跳和 INFO 查询靠已有连接维持,不会重验密码——所以旧密码还能“苟”一阵子,但只要发生主从切换、网络抖动重连,就会立刻失败。
典型现象是:哨兵日志反复出现 +sdown master mymaster 127.0.0.1 6379,接着跟一行 Failed to AUTH connection to master,然后整个集群被标记为 odown,但实际主库服务正常。
- 必须重启所有哨兵进程,才能加载新
sentinel auth-pass - 重启顺序无关紧要,但建议错开几秒,避免全部同时失联造成误判
- 验证方式:连上哨兵执行
SENTINEL MASTER mymaster,看返回里的auth-pass字段是否已更新
sentinel auth-pass 和 redis-cli -a 的区别
sentinel auth-pass 是哨兵自己连主库/从库时用的密码,和客户端完全无关;redis-cli -a 是你手动连哨兵或 Redis 实例时用的,两者作用域隔离,互不影响。
容易踩的坑是:以为给哨兵配了 auth-pass,自己用 redis-cli -p 26379 连哨兵就不需要密码了——其实哨兵本身默认没开认证,除非你额外配了 requirepass 在哨兵配置里(不推荐,没必要)。
- 哨兵监听端口(如 26379)默认不校验密码,
redis-cli -p 26379直连即可 - 但如果你真在哨兵配置里加了
requirepass xxx,那连哨兵也要-a xxx,这和sentinel auth-pass完全是两回事 - 主库密码变了,只影响哨兵连主库,不影响客户端连哨兵,也不影响哨兵连客户端
故障转移后新主库没设密码,哨兵会卡住吗
会。哨兵在提升某个从库为新主库后,会尝试用原来的 sentinel auth-pass 去连它。如果这个从库没配 requirepass,而哨兵仍带着密码去 AUTH,就会收到 ERR Client sent AUTH, but no password is set,导致后续的 CONFIG REWRITE、SLAVEOF NO ONE 等操作失败,新主库状态异常,整个 failover 卡在中间态。
- 所有从库必须和主库使用相同的
requirepass,否则哨兵无法完成完整故障转移 - 检查方式:连上每个从库执行
CONFIG GET requirepass,确认返回值一致 - 生产环境建议用配置中心统一推送 Redis 密码,避免主从不一致
哨兵对密码的处理很机械:只认配置里写的那一串字符,不推导、不 fallback、不自动适配。哪怕主从密码只差一个字母,或者某个节点漏配,监控链路就断了,而且错误日志藏得深,容易当成网络问题排查半天。










