Redis 时遇到错误信息 DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user
当你在使用 Redis 时遇到错误信息 DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user,这意味着 Redis 服务器出于安全考虑,只接受来自本地回环接口(loopback interface)的连接。如果你需要从外部连接到 Redis 服务器,需要采取相应的措施来禁用保护模式或设置密码。以下是解决这个问题的几种方法:
方法 1:禁用保护模式
使用 CONFIG SET 命令
- 连接到 Redis 服务器:
- 使用 Redis 客户端(如 redis-cli)从同一台主机连接到 Redis。
- 禁用保护模式:
- 执行 CONFIG SET protected-mode no 命令来禁用保护模式。
- 使更改永久生效:
-
执行 CONFIG REWRITE 命令将配置更改写入 redis.conf 文件。
示例# 连接到 Redis 服务器 redis-cli # 禁用保护模式 CONFIG SET protected-mode no # 使更改永久生效 CONFIG REWRITE
-
注意事项
- 安全性:
- 禁用保护模式后,Redis 服务器将不再限制来自非本地接口的连接。
- 确保 Redis 服务器不直接暴露在互联网上,或者使用防火墙和安全组来限制访问。
方法 2:编辑 redis.conf 文件
- 编辑 redis.conf 文件:
- 找到 protected-mode 配置项,将其设置为 no。
- 重启 Redis 服务器:
-
保存文件并重启 Redis 服务器以使更改生效。
示例# 编辑 redis.conf 文件 sudo nano /etc/redis/redis.conf # 找到 protected-mode 配置项,将其设置为 no protected-mode no # 保存并退出编辑器 Ctrl + X Y Enter # 重启 Redis 服务器 sudo systemctl restart redis
-
方法 3:启动 Redis 时禁用保护模式
如果你只是手动启动 Redis 服务器进行测试,可以在启动命令中添加 --protected-mode no 选项。
示例
# 启动 Redis 服务器并禁用保护模式
redis-server --protected-mode no
方法 4:设置密码
设置密码是一种更安全的解决方案,它允许你通过身份验证来访问 Redis 服务器。
- 编辑 redis.conf 文件:
- 找到 requirepass 配置项,设置一个强密码。
- 重启 Redis 服务器:
-
保存文件并重启 Redis 服务器以使更改生效。
示例# 编辑 redis.conf 文件 sudo nano /etc/redis/redis.conf # 找到 requirepass 配置项,设置一个强密码 requirepass yourStrongPassword # 保存并退出编辑器 Ctrl + X Y Enter # 重启 Redis 服务器 sudo systemctl restart redis
-
在客户端中使用密码
- 连接到 Redis 服务器:
- 使用密码连接到 Redis 服务器。
- 验证密码:
-
使用 AUTH 命令进行身份验证。
示例# 连接到 Redis 服务器 redis-cli # 验证密码 AUTH yourStrongPassword
-
建议的最佳实践
- 设置密码:
- 使用密码是最安全的解决方案,可以有效防止未经授权的访问。
- 使用防火墙:
- 即使禁用保护模式,也应使用防火墙或安全组来限制对 Redis 服务器的访问。
- 绑定到特定 IP:
-
在 redis.conf 文件中设置 bind 配置项,绑定到特定的 IP 地址,而不是 0.0.0.0。
示例:绑定到特定 IP# 编辑 redis.conf 文件 sudo nano /etc/redis/redis.conf # 找到 bind 配置项,绑定到特定的 IP 地址 bind 127.0.0.1 192.168.1.100 # 保存并退出编辑器 Ctrl + X Y Enter # 重启 Redis 服务器 sudo systemctl restart redis
-
总结
- 禁用保护模式:
- 使用 CONFIG SET protected-mode no 和 CONFIG REWRITE 命令。
- 或者编辑 redis.conf 文件将 protected-mode 设置为 no 并重启服务器。
- 或者在启动 Redis 时添加 --protected-mode no 选项。
- 设置密码:
- 在 redis.conf 文件中设置 requirepass 配置项。
- 使用 AUTH 命令在客户端进行身份验证。
- 最佳实践:
- 建议设置密码并结合防火墙规则来提高安全性。
- 避免将 Redis 服务器直接暴露在互联网上。
通过这些方法,可以解决 Redis 保护模式导致的连接问题,并确保 Redis 服务器的安全性和稳定性。
参考资源
- Redis 官方文档:
配置文件
保护模式 - StackExchange.Redis 文档:
StackExchange.Redis GitHub
StackExchange.Redis 文档
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体