masterauth 只写在从节点配置文件中,用于指定连接主节点时使用的密码,必须与主节点 requirepass 值完全一致;修改后需重启 Redis,不支持运行时 CONFIG SET 修改。

masterauth 配置写在哪台机器上?
只写在从节点(slave)的配置文件里,不是主节点。主节点用 requirepass 设密码,从节点靠 masterauth 告诉自己:“连主库时要用这个密码”。漏配或配错位置,从节点启动后会卡在 SYNC 阶段,日志反复出现 Authentication required 或 NOAUTH Authentication required。
-
masterauth必须和主节点的requirepass值完全一致(包括空格、大小写) - 如果主节点没设
requirepass,从节点也别配masterauth,否则会主动发 AUTH 命令导致握手失败 - 改完从节点配置后必须重启 Redis,
CONFIG SET masterauth xxx不生效 —— 这个参数不支持运行时修改
Redis 6+ 的 ACL 用户名怎么填?
默认用 default 用户,所以 masterauth 填的是密码,不是用户名。只有当你在主节点显式创建了非 default 用户(比如 user myreplica on >mypass ~* &* +psync +sync),才需要让从节点用 masteruser myreplica + masterauth mypass 成对配置。多数人不需要这步,强行加 masteruser 反而触发认证失败。
- 检查主节点是否启用了 ACL:执行
ACL LIST,看有没有非user default的条目 - 若主节点只用了
requirepass,从节点只需masterauth,忽略masteruser - Redis 5 及更早版本不支持
masteruser,配了会启动报错:Unsupported CONFIG parameter: masteruser
从节点连接主节点时提示 “NOAUTH” 但密码没错?
大概率是主节点开启了 requirepass,但从节点还没完成配置加载就尝试同步 —— 比如用 SLAVEOF 命令动态切换主从,而不是靠配置文件启动。这种情况下,masterauth 还没生效,连接立刻失败。
- 优先用配置文件方式启动从节点:
slaveof 192.168.1.100 6379+masterauth yourpass - 避免运行时执行
SLAVEOF host port,除非你确定从节点已提前通过CONFIG SET masterauth xxx设置过(但注意:该命令在 Redis 6.2+ 才支持) - 确认主节点未启用
protected-mode yes且绑定地址允许从节点访问(比如没只绑127.0.0.1)
密码含特殊字符时要不要转义?
不用。Redis 配置文件里所有值都是纯文本解析,masterauth @#123!$ 就照这么写,不加引号、不转义。但要注意:如果用 redis-cli --slaveof 启动从节点,shell 会对 !、$ 等做扩展,此时必须用单引号包裹整个参数,例如:redis-server --slaveof 192.168.1.100 6379 --masterauth '@#123!$'。
- 配置文件中任何字符都原样读取,包括换行、空格、Unicode
- 命令行启动时,双引号无法阻止
!被 bash 替换,必须用单引号 - 密码里有
#不影响,它只在行首 + 空格后才被当注释
配置生效的关键不在“写对”,而在“时机”——从节点必须在发起 TCP 连接前就知道密码。很多问题其实不是密码错了,是它根本没机会用上。

















