问题背景

在连接 Linux 上的 Redis 时,有时候会出现 DENIED Redis is running in protected mode 的问题。protected mode 是 Redis 的安全机制之一,用于保护 Redis 免受未经授权的访问。

解决方案

1. 修改 Redis 配置文件

通过修改 Redis 配置文件,可以禁用 protected mode,从而解决连接 Redis 的问题。以下是具体的操作步骤:

  1. 使用 root 用户登录 Linux 系统。
  2. 打开 Redis 配置文件 redis.conf。
  3. sudo vi /etc/redis/redis.conf
    Bash
  4. 查找 protected-mode 的配置项。如果配置项的值为 yes,将其改为 no
  5. protected-mode no
    Bash
  6. 保存并退出配置文件。
  7. 重启 Redis 服务。
  8. sudo systemctl restart redis
    Bash

2. 修改 Redis 配置参数

如果 Redis 配置文件中并没有 protected-mode 配置项,可以尝试通过修改 Redis 启动命令中的参数来关闭 protected mode。以下是具体的操作步骤:

  1. 使用 root 用户登录 Linux 系统。
  2. 编辑 Redis 的启动脚本。
  3. sudo vi /etc/systemd/system/redis.service
    Bash
  4. 在 ExecStart 行的末尾添加参数--protected-mode no
  5. ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --protected-mode no
    Bash
  6. 保存并退出脚本文件。
  7. 重启 Redis 服务。
  8. sudo systemctl restart redis
    Bash

3. 检查网络和端口

如果以上两种方法都无法解决问题,就需要检查网络和端口是否正常。以下是具体的操作步骤:

  1. 确保 Redis 服务正在运行。
  2. sudo systemctl status redis
    Bash
  3. 检查 Redis 监听的 IP 和端口是否正确。
  4. sudo netstat -tunlp | grep redis
    Bash
  5. 检查防火墙配置,确保 Redis 服务的端口没有被阻止。
  6. sudo iptables -L
    Bash
  7. 如果防火墙阻止了 Redis 端口,可以通过配置防火墙规则允许该端口的访问。
  8. sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
    Bash
  9. 重启防火墙。
  10. sudo systemctl restart iptables
    Bash