Redis账户权限怎么查,用户权限那些事儿浅析和实操分享
- 问答
- 2026-01-10 01:19:43
- 4
主要结合了Redis官方文档关于ACL的说明、以及几篇技术社区如CSDN、掘金上用户分享的实战经验文章,比如名为“Redis 6.0 ACL机制详解”和“一次Redis权限排查经历”的帖子)
Redis账户权限怎么查,用户权限那些事儿浅析和实操分享
以前我们用Redis,很多时候图省事,就直接用那个默认的账号,密码可能也不设,或者就一个超级密码大家共用,这就像你家大门钥匙放在门口脚垫下面,谁都知道,挺不安全的,后来Redis 6.0版本出了一个很重要的功能,叫做ACL,就是访问控制列表,从那以后,Redis也能像很多数据库一样,给不同的用户分配不同的权限了,今天我们就来聊聊,怎么查看Redis里的用户和权限,以及这里面的一些门道和实际操作。
第一部分:权限查看篇——看看现在都有谁,能干什么

想知道Redis里现在有哪些用户,以及他们都有什么权限,最简单直接的办法就是使用命令行工具。
-
连接上Redis:你得用Redis的客户端工具连上你的Redis服务器,通常我们是用
redis-cli命令,如果设置了密码,还需要用-a参数输入密码。redis-cli -h 你的服务器地址 -p 6379 -a 你的密码,不过要注意,用-a参数可能会在历史命令里留下密码痕迹,不太安全,更推荐先连接上去,再用AUTH命令认证。 -
查看用户列表:连接成功后,输入命令
ACL LIST,这个命令会列出当前Redis实例中所有的用户以及他们详细的权限规则,你会看到类似这样的输出:user default on xxxxxx ~* &* +@alluser appuser on yyyyyy ~cache:* &* +get +set +hget +hset每一行代表一个用户,我们来拆解一下这串“天书”:
user:关键字。default/appuser:用户名。on:表示这个用户是启用的,如果是off,就表示这个用户被禁用了。xxxxxx/yyyyyy:这里是密码的哈希值,你看不到明文密码,是安全的。~cache:*:这个非常关键!它表示这个用户有权操作的键(Key)的模式,是前缀,cache:*意思是所有以cache:开头的键,就代表可以操作所有的键,如果你看到一个用户只能操作user:123:*这样的键,那他就动不了其他前缀的键。&*:这个是Redis 6.2版本后加入的,表示可以访问所有频道(用于发布订阅功能),同样,可以限制具体的频道模式。+@all或+get +set ...:这部分是命令权限,号表示允许执行某个命令。+@all是允许所有命令,这是超级管理员权限,下面的例子只允许执行get,set,hget,hset这几个命令,如果看到-@all或者-某个命令,就表示拒绝,权限是叠加的,一般是先拒绝所有-@all,再一个个加回来+命令。
-
查看特定用户信息:如果你只想看某一个用户的具体情况,比如想看
appuser的权限,可以用ACL GETUSER appuser,这个命令会把这个用户的权限规则更结构化地展示出来,看得更清楚。 -
查看当前连接的用户是谁:有时候你可能会用不同账号连接,想知道当前这个连接用的是哪个账号的权限,可以输入
ACL WHOAMI,它会直接返回当前客户端的用户名。
第二部分:权限浅析与实操篇——怎么管好权限

光会看还不行,我们还得知道怎么设置才合理,避免出问题。
-
原则:最小权限原则,这是安全领域的黄金法则,就是给一个用户的权限,刚好够他完成工作就行,一点都不要多,比如一个只用来做缓存的应用程序,它可能只需要
GET、SET、EXPIRE等几个命令,你绝对不应该给它FLUSHDB(清空当前数据库)或者CONFIG(修改服务器配置)这种危险的权限,那些技术社区分享的故障案例里,不少都是因为权限给太大,被误操作或者恶意攻击导致数据丢失。 -
实操:创建和管理用户。
- 创建新用户:我们可以用
ACL SETUSER命令来创建或修改用户,举个例子,我想创建一个叫data_reader的用户,密码是readonly123,只允许它读数据(比如用GET、HGET、SMEMBERS等读命令),并且只能读取report:*开头的键,命令可以这样写:ACL SETUSER data_reader on >readonly123 ~report:* &* +@read -@write +@hash +@set ...这里>readonly123表示设置密码。+@read是允许所有读命令类别,但为了更精确,我们用了-@write拒绝所有写命令,然后再单独加一些需要的读命令类别(@hash,@set)或具体命令,实际中可以根据内置的命令类别来简化操作。 - 修改用户密码:如果想给用户改密码,也是用
ACL SETUSER,ACL SETUSER data_reader >newpassword。 - 删除用户:用
ACL DELUSER data_reader。
- 创建新用户:我们可以用
-
一个常见的实操场景:线上应用和运维账号分离,根据那些经验分享文章里的建议,一个好的实践是:
- 创建一个权限很小的应用账号(比如叫
app_worker),只给它业务必需的命令和键空间,用于日常的应用程序连接。 - 创建一个高权限的运维账号(比如叫
ops_admin),拥有+@all权限,但平时不常用,这个账号的密码要严格管理,只在需要维护、排查问题的时候才使用。 - 禁用默认的
default账号,或者给default账号换一个非常复杂的密码并妥善保存,避免被默认攻击,这样即使有人想用默认空密码试,也进不来。
- 创建一个权限很小的应用账号(比如叫
总结一下
Redis的ACL功能给了我们细化权限管理的能力,核心就是通过ACL LIST和ACL GETUSER来查看权限状况,管理用户时,牢记“最小权限”原则,利用ACL SETUSER为不同的应用和人员创建合适的账号,只给必要的键访问权和命令执行权,这样做虽然前期会麻烦一点点,但能从很大程度上避免“删库跑路”的悲剧和安全隐患,让Redis用得更加稳妥,希望这些浅析和实操分享对你有帮助。
本文由畅苗于2026-01-10发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/77768.html
