*Redis ACL GETUSER 命令

ACL GETUSER 返回指定 ACL 用户的完整配置信息。


*语法

ACL GETUSER username

*参数说明

参数 类型 必填 说明
username String 要查询的 ACL 用户名

*返回值

  • Array of key-value pairs:用户配置信息
    • flags — 用户标志(on, off, nopass 等)
    • passwords — 密码哈希列表
    • commands — 允许的命令规则
    • keys — 允许的 key 模式
    • channels — 允许的 pub/sub 频道模式
    • selectors — 附加选择器(Redis 7.0+)
  • Nil:用户不存在

*时间复杂度

O(1)

*

*示例

*查询默认用户

> ACL GETUSER default
 1) "flags"
 2) 1) "on"
    2) "allkeys"
    3) "allcommands"
    4) "nopass"
 3) "passwords"
 4) (empty array)
 5) "commands"
 6) "+@all"
 7) "keys"
 8) "~*"
 9) "channels"
10) "&*"
11) "selectors"
12) (empty array)

*查询受限用户

> ACL SETUSER appuser +get +set ~app:* on >secret123
OK
> ACL GETUSER appuser
 1) "flags"
 2) 1) "on"
 3) "passwords"
 4) 1) "cbaed5f5b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0"
 5) "commands"
 6) "+@all -@all +get +set"
 7) "keys"
 8) "~app:*"
 9) "channels"
10) (empty array)
11) "selectors"
12) (empty array)

*查询不存在的用户

> ACL GETUSER nonexist
(nil)

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 username 参数 提供用户名

*最佳实践

  • 定期审计用户权限:ACL USERS 列出所有用户,然后逐个 ACL GETUSER 检查
  • 编写配置迁移脚本时,用 GETUSER 导出用户配置
  • 对比不同环境的权限差异时,GETUSER 的输出可直接用于 diff
  • 密码以 SHA256 哈希形式返回,不会泄露明文

*FAQ

Q1: GETUSER 能看到明文密码吗? A: 不能。返回的是 SHA256 哈希值,出于安全考虑不返回明文。

Q2: 如何导出所有用户配置? A: 使用 ACL LIST 返回所有用户的纯文本配置格式,更适合备份和迁移。

Q3: flags 中的 allkeysallcommands 是什么意思? A: 表示该用户被授予了所有 key 和所有命令的访问权限,等同于 ~*+@all