*Redis ACL SETUSER 命令

创建或修改 ACL 用户。


*语法

ACL SETUSER username [rule [rule ...]]

*参数说明

参数 类型 必填 说明
username String 用户名
rule String 权限规则,多个规则叠加

*常用规则

规则 说明
on/off 启用/禁用用户
>password 设置密码
# 设置 SHA256 哈希密码
~pattern 允许访问的 key 模式
resetkeys 清空 key 权限
+@category 允许某类命令
-@category 禁止某类命令
+command 允许单个命令
-command 禁止单个命令
allcommands 允许所有命令
nocommands 禁止所有命令
allkeys 允许所有 key
&pattern 允许访问的 Pub/Sub 频道模式

*返回值

条件 返回值
成功 OK

*时间复杂度

O(N)

*

*示例

# 创建只读用户
> ACL SETUSER readonly on >readonly123 ~app:* +@read
OK

# 创建应用用户,只允许特定 key 和命令
> ACL SETUSER appuser on >app123 ~app:* +get +set +del +hget +hset
OK

# 禁用用户
> ACL SETUSER appuser off
OK

# 重置并重新配置
> ACL SETUSER appuser reset on >newpass ~* +@all
OK

*常见错误

  1. 规则冲突:后设置的规则覆盖前面的规则。

*最佳实践

  1. 最小权限原则:只授予用户必需的命令和 key 权限。
  2. 密码安全:使用强密码或 ACL GENPASS 生成随机密码。
  3. key 前缀隔离:不同应用使用不同的 key 前缀(~app1:*~app2:*),通过 ACL 隔离。

*FAQ

Q: ACL SETUSER 创建新用户和修改现有用户语法一样吗? A: 一样。用户不存在则创建,存在则修改(规则叠加)。

Q: 如何给用户设置多个密码? A: 多次使用 >password#sha256 规则。