在 Redis 生产环境中,配置访问密码是基础的安全措施。有时候修改了配置文件中的 requirepass 参数后,发现密码并未生效,这通常是因为服务没有正确重载配置。下面分享两种常见的处理方式及背后的原理。
方案一:修改配置文件并重启(推荐)
这是最稳妥的方式,确保密码在每次启动时都生效。
- 编辑配置文件,路径通常为
/etc/redis/6379.conf。 - 找到
# requirepass foobared这一行。 - 去掉前面的注释符号
#,并将默认密码替换为你自己的强密码,例如:requirepass MyStrongPassword123 - 保存文件后,必须重启 Redis 服务才能加载新配置。如果你是通过脚本直接启动的,可以使用以下命令:
如果是 systemd 管理的服务,请使用cd /usr/local/bin && ./redis-server /etc/redis/6379.confsystemctl restart redis。
方案二:运行时动态修改(临时生效)
如果不想重启服务,可以通过客户端命令临时修改,但这不会持久化到配置文件中。
- 进入 Redis 命令行工具:
./redis-cli - 执行配置命令:
CONFIG SET requirepass MyStrongPassword123 - 再次尝试连接测试。
如何验证密码是否生效?
不要盲目依赖 keys * 命令来测试,因为如果没有密码,它可能直接返回结果;如果有密码且未认证,通常会直接报错。更准确的验证方式是尝试执行需要认证的命令,或者直接观察连接时的反馈。
如果密码设置成功,当你未输入密码直接执行命令时,会看到如下错误提示:
(error) NOAUTH Authentication required.
这说明安全机制已正常工作。
为什么有时候配置没生效?
很多初学者会遇到'明明改了配置文件,重启后还是能无密码访问'的情况。核心原因在于 Redis 的配置加载机制:
- 配置文件方式:
requirepass在redis.conf中定义的值,仅在 Redis 进程启动初始化时读取。如果只改文件不重启,内存中的旧配置依然有效。 - Runtime 方式:
CONFIG SET修改的是当前运行实例的参数,一旦服务重启,这些修改就会丢失,除非你同时保存了配置到磁盘(CONFIG REWRITE)。
所以,修改配置文件后,重启服务是关键步骤。

