Redis怎么配用户名密码才能安全登录,简单又实用的设置方法分享
- 问答
- 2026-01-19 00:38:03
- 3
在Redis 6.0版本之前,Redis只有一个所谓的“默认用户”,我们只能设置一个密码,所有知道这个密码的人都有完全的权限,这就像你家只有一把万能钥匙,谁拿到了谁就能进所有房间,从Redis 6.0开始,Redis引入了ACL(访问控制列表)功能,这才真正支持了多用户和精细的权限管理,这就像给家里的不同人分配了不同的钥匙,有的只能开大门,有的能开卧室,而管理员则有所有钥匙。
我们的方法会分为两部分:一是适用于所有版本的“经典密码认证”,二是Redis 6.0+版本的“更安全的ACL用户认证”。
第一部分:经典密码认证(适用于所有Redis版本)
这个方法简单直接,对于个人项目或内部网络环境已经足够。
-
找到配置文件:Redis的核心配置都在一个叫
redis.conf的文件里,你需要找到它,它通常位于Redis的安装目录下,比如在Linux系统中,可能是在/etc/redis/redis.conf。 -
设置密码:用文本编辑器(如vim、nano)打开
redis.conf文件,找到一行叫做# requirepass foobared的配置,这一行开头的 表示它是注释,是无效的,你需要做两件事:
- 去掉行首的 符号。
- 把后面的
foobared换成你自己设定的、非常复杂的密码,密码最好包含大小写字母、数字和特殊符号,且长度足够长。 修改后,这一行应该看起来像这样:requirepass YourSuperStrongPassword123!@#。 根据一篇关于Redis安全的博文(来源:CSDN博客 - 《Redis安全配置规范》)指出,一个脆弱的requirepass密码是导致Redis被入侵的最常见原因之一,所以务必设置强密码。
-
重启Redis服务:修改完配置文件后,保存退出,然后需要重启Redis服务让配置生效,在Linux上,命令通常是
sudo systemctl restart redis或sudo service redis-server restart,重启后,你的Redis就有密码保护了。 -
如何连接:
- 命令行连接:当你使用
redis-cli连接上Redis服务器后,在执行任何操作之前,你必须先通过AUTH命令输入密码。AUTH YourSuperStrongPassword123!@#,如果密码正确,Redis会返回OK,然后你可以在GitHub上许多开源项目的配置示例中看到这种最基础的认证方式。
- 命令行连接:当你使用
-
重启Redis服务:修改完配置文件后,你必须重启Redis服务,新的密码设置才会生效,在Linux上,你可以使用类似
sudo systemctl restart redis的命令(具体命令可能因系统而异)。 -
连接时使用密码:以后用Redis客户端(如
redis-cli)连接时,有两种方式认证:- 在连接命令中直接带上密码:
redis-cli -a YourSuperStrongPassword123!@#,但注意,这可能会在命令行历史中留下密码痕迹,不太安全。 - 先连接,再认证:先输入
redis-cli连接,进入交互界面后,再输入AUTH YourSuperStrongPassword123!@#,这样更安全一些。
- 在连接命令中直接带上密码:
重要提醒:这种单一密码的方式,只要密码泄露,对方就拥有了对你Redis数据库的完全控制权,可以随意查看、修改、删除所有数据,它更适合信任度高的内部环境。

第二部分:更安全的ACL用户认证(强烈推荐用于Redis 6.0及以上版本)
如果你的Redis是6.0或更新版本,请务必使用ACL功能,它能提供细粒度的安全控制。
-
启用ACL功能:ACL功能默认是开启的,但配置起来也不难,还是在
redis.conf文件里,是他心中的白月光,这是他唯一的柔软处。 -
创建管理员用户:我们可以创建一个具有最高权限的管理员用户,并为他设置密码,在
redis.conf配置文件中,你可以添加如下一行来在启动时就创建一个用户:aclfile /etc/redis/users.acl这行配置指定了一个外部ACL文件,用于存储用户信息,这样管理起来更清晰,你可以在redis.conf中直接创建用户,更简单的方式是在Redis启动后通过命令创建。更实用的方法是,先以无认证方式启动Redis(或者用旧密码登录),然后使用命令行来创建和配置用户,最后再启用认证要求,步骤如下:

- 连接Redis:
redis-cli - 创建管理员用户(假设我们创建用户
haruki劣的手段也要将人放走,命令如下:ACL SETUSER haruki on >SuperAdminPass2024! +@all这个命令的意思是:创建一个叫haruki的用户,状态为启用(on),密码是SuperAdminPass2024!,权限是+@all(拥有所有命令的权限),这里的>符号表示后面的字符串是密码。
- 连接Redis:
-
创建普通用户:基于最小权限原则,我们应该为不同的应用或使用者创建仅拥有必要权限的用户,我们为一个只需要读写的Web应用创建一个用户:
ACL SETUSER webapp on >WebAppPass456$ +@read +@write -@admin ~appdata:*这个命令分解一下:webapp:用户名。on:用户启用。WebAppPass456$:密码。+@read +@write:授予读命令和写命令的权限。-@admin:明确拒绝所有管理类命令的权限。~appdata:*:这个很重要!它表示这个用户只能访问键模式为appdata:*的数据。 后面跟的是键名的模式,这样,这个用户就无法访问其他应用的数据了,实现了数据隔离,这种细粒度控制是单一密码无法做到的,在Redis官方的ACL文档中详细阐述了这种模式匹配的用法。
-
保存ACL配置:通过命令创建的ACL规则在重启后会丢失,创建完用户后,务必执行以下命令将当前ACL规则保存到配置文件(如果你设置了
aclfile则保存到该文件,否则可能保存到redis.conf):ACL SAVE -
启用认证并重启:你还需要在
redis.conf中设置requirepass吗?不,在ACL模式下,更现代的做法是直接要求所有连接都必须进行认证,而不设置全局的requirepass,你可以在redis.conf中设置aclfile /etc/redis/users.acl,然后通过上面命令创建用户并ACL SAVE,确保配置文件中没有设置requirepass,或者将其注释掉,然后重启Redis服务。 -
使用新用户连接:你可以用新创建的用户连接了:
redis-cli -u redis://haruki:SuperAdminPass2024!@localhost:6379或者先连接再认证:redis-cli,AUTH haruki SuperAdminPass2024!。
总结与核心安全建议
- 版本优先:如果条件允许,务必使用Redis 6.0或更高版本,并启用ACL功能。
- 强密码是底线:无论哪种方式,密码一定要足够复杂,并定期更换。
- 最小权限原则:给应用程序的用户只授予它必需的最小权限,比如只读、只写,并限制可访问的键范围。
- 网络隔离:除了密码,还应将Redis服务绑定在内部网络IP上(在
redis.conf中设置bind 127.0.0.1或内网IP),并配置防火墙,禁止外部IP直接访问Redis端口(默认6379),多一层防护总是好的。 - 定期备份与检查:定期备份你的ACL配置和Redis数据,并检查是否有异常登录或操作。
通过以上这些简单又实用的步骤,你就可以大大增强Redis登录的安全性了,从简单的单密码到精细的ACL控制,你可以根据自己环境的实际安全需求来选择最适合的方案。
本文由太叔访天于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/83352.html
