根本原因是主节点启用认证而从节点未配置或错配masterauth;需确保从节点redis.conf中masterauth值与主节点requirepass完全一致(含大小写、空格),且必须重启服务生效,不支持CONFIG SET动态修改。

从节点报NOAUTH:masterauth没配或配错
Redis主从同步时,从节点连接主节点被拒绝并报(error) NOAUTH Authentication required,根本原因不是从节点自己缺密码,而是它连不上主节点——因为主节点启用了认证,而从节点没告诉自己“主节点要什么密码”。关键配置项是masterauth,不是requirepass。
常见错误现象:
- 从节点日志反复出现
Connecting to MASTER 10.0.1.100:6379后立刻断开 -
INFO replication里显示master_link_status:down - 主节点
INFO clients里看不到从节点的连接记录
必须确认三点:
-
masterauth值必须和主节点的requirepass完全一致(区分大小写、空格、特殊字符) -
masterauth只能写在从节点的配置文件中,不能用CONFIG SET动态设置(Redis 6.2+才支持运行时设masterauth) - 如果主节点用的是ACL用户(非default),从节点还需额外配
masteruser,且该用户必须有+replconf、+psync权限
masteruser怎么配:ACL模式下从节点必须显式声明用户名
Redis 6.0+默认启用ACL,若主节点用ACL SETUSER repluser on >mypass +replconf +psync创建了专用复制用户,从节点光靠masterauth不够,必须指定masteruser。否则从节点仍以default身份尝试认证,主节点直接拒掉。
实操要点:
- 从节点配置文件中需同时存在两行:
masteruser repluser和masterauth mypass - 主节点上检查该用户权限:
ACL GETUSER repluser,输出中必须包含commands=+replconf +psync - 改完配置后必须重启从节点服务,
CONFIG REWRITE不生效 - 若主节点是集群模式,所有master节点都要为该ACL用户开放对应权限
配置位置与重启验证:别漏掉从节点的redis.conf
很多人只改主节点配置,或者只在命令行启动从节点时加-a参数,这完全无效——masterauth和masteruser只读取从节点自身的redis.conf,且仅在服务启动时加载。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
典型路径(按部署方式):
- 源码安装:
/usr/local/redis/redis.conf - systemd管理(Ubuntu/CentOS):
/etc/redis/redis.conf - Docker容器:
/usr/local/etc/redis/redis.conf(需确认挂载路径)
验证是否生效:
- 重启从节点:
sudo systemctl restart redis-server(或对应服务名) - 查日志:
tail -f /var/log/redis/redis-server.log,看到MASTER REPLICA sync started才算成功 - 在从节点执行
INFO replication,确认master_link_status:up且master_sync_in_progress:0
容易被忽略的兼容性坑:Redis版本与配置语法差异
Redis 5.x 和 6.x 对masteruser的支持逻辑不同,低版本强行写会静默忽略,导致同步始终失败。
版本判断与处理:
- 查版本:
redis-cli -v或INFO server里的redis_version - Redis ≤ 5.0.14:不支持
masteruser,必须用default用户,主节点密码只能设在requirepass,且不能启用ACL - Redis ≥ 6.0:支持
masteruser,但6.0.0–6.2.0有bug,建议升到6.2.6+或7.0+ - 配置语法必须顶格写,不能有前置空格,否则Redis启动时直接报错退出
真正卡住人的,往往是主节点开了ACL却没给repluser加+psync,或者从节点配置文件改了但忘了重启服务——这两处一漏,日志里就只剩NOAUTH四个字母来回刷屏。

















