当前位置:首页 > 问答 > 正文

Redis用户密码忘了咋办,重启后密码怎么重新设置才行呢?

综合参考了Redis官方文档、社区常见问题解答以及技术博客中的实践经验)

如果你把Redis的密码给忘了,这确实是个麻烦事,但别担心,是有办法解决的,Redis的设计者早就考虑到人会忘密码这种情况,处理这个问题的核心思路其实很简单:既然忘了密码进不去,那就想办法让Redis暂时“别用密码”或者“绕过”密码检查,让你能重新进去设置一个新密码,整个过程有点像如果你忘了家里的智能锁密码,你得先找到一种强制重置的模式(比如通过物理钥匙或者恢复出厂设置),进去之后再把新密码设好。

第一步:找到Redis的配置文件

Redis的所有行为,包括要不要用密码、用什么密码,都是由一个叫 redis.conf 的文件控制的,这个文件通常藏在Redis的安装目录里,它的具体位置因你的安装方式(比如是用软件包管理器安装的,还是自己下载源码编译的)和操作系统而异。

  • 在Linux上,常见的位置可能是 /etc/redis/redis.conf
  • 如果你是用brew在Mac上安装的,可能是在 /usr/local/etc/redis.conf
  • 如果你是自己编译的,它就在你解压Redis源代码的那个目录里。

如果你实在找不到,可以用系统自带的搜索功能,比如在Linux或Mac上,可以打开终端,尝试用 find / -name redis.conf 2>/dev/null 这个命令来全盘搜索(可能需要管理员权限)。

第二步:让Redis“忘记”密码(临时关闭密码验证)

找到配置文件后,我们需要修改它,让Redis下次启动时不检查密码,具体做法是:

  1. 先停止Redis服务:这是很重要的一步,确保数据安全,停止服务的方法也因系统而异。

    • 如果Redis是作为系统服务运行的(比如在Ubuntu上用 systemctl),命令通常是 sudo systemctl stop redissudo systemctl stop redis-server
    • 如果你是直接运行 redis-server 启动的,那么回到那个终端窗口,按 Ctrl + C 就能停止它。
  2. 备份配置文件(好习惯):在修改任何重要文件前,先做个备份总是没错的,你可以把 redis.conf 复制一份,比如叫 redis.conf.backup

  3. 编辑配置文件:用你熟悉的文本编辑器打开 redis.conf 文件,比如用 nanosudo nano /etc/redis/redis.conf

  4. 找到密码设置行:在文件里,你需要找到一行关于密码的配置,这行通常长这样:# requirepass foobared,你可能会注意到,它最开始有个 符号,这表示这一行是注释,是不生效的,也可能你的那一行没有 ,foobared 被换成了你之前设的密码(当然你现在忘了)。

  5. 修改配置:你有两种简单的选择:

    • 方法A(推荐):直接注释掉密码行,在这一行的最前面加上一个 号,让它变成注释,如果原来是 requirepass your_forgotten_password,就改成 # requirepass your_forgotten_password,这样,Redis启动时就会忽略这个密码设置。
    • 方法B:设置一个空密码,你也可以直接把密码设置为空,写成 requirepass "",效果和方法A是一样的。
  6. 保存并关闭文件

第三步:重启Redis服务并连接

Redis已经被我们配置成“免密码”模式了。

  1. 重启Redis服务

    • 系统服务方式:sudo systemctl start redis
    • 或者,你也可以切换到Redis的安装目录,直接命令行启动并指定配置文件:redis-server /path/to/your/redis.conf
  2. 测试连接:打开Redis的命令行客户端 redis-cli,你应该可以直接连进去,而不用输入 AUTH 命令了,命令行会显示 0.0.1:6379> 这样的提示符。

第四步:重新设置新密码

成功连进去之后,事情就简单了。

  1. 在Redis命令行内设置新密码:在 redis-cli 里,输入以下命令(把 your_new_strong_password 换成你想设的复杂新密码):

    CONFIG SET requirepass "your_new_strong_password"

    按下回车,如果服务器返回 OK,说明新密码已经设置成功了。

  2. 立即验证新密码:为了确保万无一失,你最好马上在当前的连接里验证一下,输入:

    AUTH your_new_strong_password

    如果也返回 OK,恭喜你,密码已经生效了。

第五步:让修改永久生效

上一步用 CONFIG SET 命令设置的密码,只对当前运行的Redis服务有效,如果服务器重启了,这个设置会丢失,Redis又会回去读配置文件——而我们的配置文件里密码还是被注释掉的空状态,所以我们需要把新密码写回配置文件,让它永久生效。

  1. 再次编辑 redis.conf 文件(Redis服务还在运行,不用停)。
  2. 找到我们之前修改的那一行(就是带 号或者空密码的那行)。
  3. 把它改成新密码:去掉行首的 号(如果有的话),并将密码部分改为你的新密码,最终这一行应该看起来像:requirepass your_new_strong_password
  4. 保存文件

第六步:最后的安全重启(可选但推荐)

为了确保一切配置都正确无误,最好进行一次彻底的重启。

  1. 停止Redis服务(sudo systemctl stop redis)。
  2. 再次启动Redis服务(sudo systemctl start redis)。
  3. 尝试用新密码连接:这次,你再用 redis-cli 连接后,直接执行任何命令(ping)都会得到 (error) NOAUTH Authentication required. 的错误提示,这时你需要输入 AUTH your_new_strong_password 认证之后才能正常操作,这证明你的新密码已经完全配置成功了。

整个过程就是“停服务 -> 改配置(免密码)-> 启服务 -> 连进去设新密码 -> 改回配置(写入新密码)-> 最终重启”,只要按步骤操作,忘记Redis密码的问题就能轻松解决,以后可要记好这个新密码了,或者把它放在安全的密码管理器里。

Redis用户密码忘了咋办,重启后密码怎么重新设置才行呢?