DENIED Redis is running in protected mode because protected mode is enabled...

问题现象

在这里插入图片描述

解决办法

telnet ip port查看redis服务器情况,根据提示,登录服务器上的redis客户端,用命令关闭protected-mode即可(如下两图所示);
在这里插入图片描述
在这里插入图片描述

这里需要注意的是,在redis的配置文件中有protected-mode的配置(如下图所示),但是直接在配置文件中修改这个参数并重启并不能解决这个问题,(在我这儿是出现这样的情况,直接修改配置文件不能解决问题)在客户端修改这个配置才可。

在这里插入图片描述

### 解决 Redis 保护模式下的 JedisDataException 异常 当 Redis 处于保护模式(protected mode),并且客户端尝试连接到未配置密码的实例时,可能会触发 `JedisDataException` 或类似的错误消息 `'DENIED'`。这是因为 Redis 的保护模式会阻止来自非本地主机的请求,除非显式禁用了该模式。 以下是解决问题的方法: #### 方法一:修改 Redis 配置文件以关闭保护模式 可以通过编辑 Redis 配置文件来禁用保护模式。具体操作如下: 1. 找到并打开 Redis 配置文件(通常位于 `/etc/redis.conf` 或安装目录中的其他位置)。 2. 查找以下参数并将值更改为指定绑定地址或注释掉默认设置: ```bash protected-mode no bind 0.0.0.0 ``` 此处将 `bind` 设置为 `0.0.0.0` 表示允许所有 IP 地址访问服务器[^1]。 3. 保存更改后重启 Redis 服务以应用新配置: ```bash systemctl restart redis ``` #### 方法二:设置密码增强安全性 如果不想完全关闭保护模式,则可以考虑为 Redis 实例设定密码作为替代方案之一。这不仅解决了当前问题还提高了系统的整体安全等级。执行命令如下所示: ```bash CONFIG SET requirepass your_password_here ``` 之后,在 Java 应用程序中初始化 Jedis 客户端对象的时候记得传入相应的认证凭证信息即可正常工作而不会遇到拒绝权限的情况发生。 另外需要注意的是每次启动新的进程都需要重新输入上述指令直到永久生效为止;为了实现这一点可以在配置文档里增加一行代码完成自动化处理过程: ```text requirepass your_secure_password ``` 最后再次强调一下,请务必妥善保管好所使用的密钥以防泄露风险! ```java // Example of setting up a Jedis client with authentication. import redis.clients.jedis.Jedis; public class Main { public static void main(String[] args) { try (Jedis jedis = new Jedis("localhost", 6379)) { // Replace localhost and port as needed jedis.auth("your_secure_password"); System.out.println(jedis.ping()); } } } ``` 以上两种方式任选其一便可有效规避因受护状态而导致无法正常使用 API 接口的现象出现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中年老菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值