问题背景

在使用 Jedis 连接 Linux 上的 Redis 时,可能会出现“DENIED Redis is running in protected mode”错误。Redis 3.2 之后的版本默认开启了 protected mode,该模式下只允许来自本地主机的连接请求。因此,如果要从远程主机连接到 Linux 上的 Redis,就需要解决该问题。

解决方法

解决以上问题的方法主要有三种:关闭 protected mode、绑定远程主机、修改 Redis 配置文件。

方案一:关闭 protected mode

1. 首先,使用 SSH 登录到运行 Redis 的 Linux 服务器。

2. 打开 Redis 的配置文件,通常位于 /etc/redis/redis.conf。

sudo vi /etc/redis/redis.conf
Bash

3. 在打开的配置文件中,找到“protected-mode yes”这一行,并将其改为“protected-mode no”。

4. 保存并关闭配置文件。

5. 重启 Redis 服务器,使配置生效。

sudo systemctl restart redis
Bash

通过上述操作,成功关闭了 Redis 的 protected mode,即可允许来自任意主机的连接。

方案二:绑定远程主机

1. 使用 SSH 登录到运行 Redis 的 Linux 服务器。

2. 打开 Redis 配置文件,同样位于 /etc/redis/redis.conf。

sudo vi /etc/redis/redis.conf
Bash

3. 找到并修改“bind 127.0.0.1”这一行,将其注释掉(在行首添加“#”字符),或修改为“bind 0.0.0.0”(允许来自任意 IP 地址的连接)。

4. 保存并关闭配置文件。

5. 重启 Redis 服务器,使配置生效。

sudo systemctl restart redis
Bash

通过以上操作,成功将 Redis 服务器绑定到了任意 IP 地址,即可允许来自远程主机的连接。

方案三:修改 Redis 配置文件

1. 使用 SSH 登录到运行 Redis 的 Linux 服务器。

2. 打开 Redis 配置文件,位于 /etc/redis/redis.conf。

sudo vi /etc/redis/redis.conf
Bash

3. 找到并修改“protected-mode yes”这一行,改为“protected-mode no”。

4. 找到并修改“bind 127.0.0.1”这一行,改为“bind 0.0.0.0”。

5. 保存并关闭配置文件。

6. 重启 Redis 服务器,使配置生效。

sudo systemctl restart redis
Bash

通过以上操作,成功关闭了 Redis 的 protected mode,并将其绑定到了任意 IP 地址。


本文由轻山版权所有,禁止未经同意的情况下转发