Redis6.0.6哨兵高可用集群配置requirepass重启不生效如何解决?
Redis配置密码重启不生效的解决步骤
核心原因说明
你当前遇到的重启后AUTH失败问题,通常是以下几种操作遗漏导致的:
- 修改的
redis.conf并非Redis进程启动时实际加载的配置文件 - 终端执行
config set后未持久化到配置文件,或配置文件权限不足导致Redis启动时无法读取 - 高可用集群场景下未配套配置主从同步密码、Sentinel认证参数,就算Redis密码生效也会引发主从同步、故障转移异常
具体操作步骤
1. 确认Redis实际加载的配置文件路径
- 执行命令查看Redis启动参数:
ps -ef | grep redis-server - 输出结果末尾跟随的
.conf文件路径就是Redis实际加载的配置,例如/usr/bin/redis-server /etc/redis/6379.conf中,/etc/redis/6379.conf就是需要修改的目标文件,不要修改其他路径下的同名配置文件。
2. 持久化Redis密码配置
两种方法二选一即可,推荐用第二种避免手动编辑出错:
- 方法一:手动修改正确路径的配置文件
在确认后的redis.conf中添加/修改以下两个参数(去掉参数前的#注释,密码不要加额外引号):
其中requirepass password123 masterauth password123requirepass是客户端访问Redis的密码,masterauth是主从节点之间同步数据的认证密码,高可用集群必须和requirepass保持一致,否则主从同步会中断。 - 方法二:用运行时命令自动持久化
你已经可以用密码正常连接Redis,直接在Redis终端执行以下命令,会自动把当前运行的密码配置写入到实际加载的redis.conf中:config set requirepass password123 config set masterauth password123 config rewrite
3. 配置文件权限校验
修改完配置文件后,确保Redis运行用户(通常为redis)对该配置文件有读权限,否则Redis启动时会忽略该配置文件的参数:
chown redis:redis /etc/redis/6379.conf chmod 600 /etc/redis/6379.conf
4. 配置Sentinel组件的认证参数
因为你是Redis和Sentinel同机部署的高可用集群,Sentinel无法认证主从节点的话会触发监控失效、故障转移失败的问题,需要修改Sentinel实际加载的配置文件(通过ps -ef | grep sentinel确认路径),添加以下参数:
# 替换mymaster为你sentinel.conf中配置的主节点名称 sentinel auth-pass mymaster password123 # 如果需要限制客户端访问Sentinel本身,额外添加以下两个参数 requirepass password123 masterauth password123
同样执行config rewrite也可以把运行时的Sentinel配置持久化到文件,避免手动编辑出错。
5. 重启验证
重启Redis和Sentinel服务后,执行以下命令验证密码是否生效:redis-cli --tls --cert /<path>/redis.crt --key /<path>/redis.key --cacert /<path>/ca.crt -a password123 ping
返回PONG即说明配置生效,不会再出现重启后AUTH失败的问题。
注意:如果你的Redis是通过yum/apt包管理器安装的systemd服务,要检查systemd unit文件(通常在
/usr/lib/systemd/system/redis.service)的ExecStart参数,确认里面指定的配置文件路径和你修改的路径一致,避免systemd启动时加载其他路径的配置。
内容的提问来源于stack exchange,提问作者user14867757
相关产品推荐
相关产品推荐

