*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
*常见错误
- 规则冲突:后设置的规则覆盖前面的规则。
*最佳实践
- 最小权限原则:只授予用户必需的命令和 key 权限。
- 密码安全:使用强密码或 ACL GENPASS 生成随机密码。
- key 前缀隔离:不同应用使用不同的 key 前缀(
~app1:*、~app2:*),通过 ACL 隔离。
*FAQ
Q: ACL SETUSER 创建新用户和修改现有用户语法一样吗? A: 一样。用户不存在则创建,存在则修改(规则叠加)。
Q: 如何给用户设置多个密码?
A: 多次使用 >password 或 #sha256 规则。