ACL SETUSER
是 Redis 中用于管理访问控制列表(Access Control List, ACL)用户规则的命令。下面为你详细介绍这个命令。
命令概述
ACL SETUSER
命令的作用是创建或修改一个 Redis 用户,并且可以为该用户指定一系列的规则,从而精确控制该用户对 Redis 服务器的访问权限。
命令语法
ACL SETUSER username [rule [rule ...]]
username
:要创建或者修改的用户的名称。rule
:一系列用于定义用户权限的规则。这些规则可以有多种类型,下面为你列举常见的规则类型及其示例:
规则类型及示例
1. 密码规则
on
:启用该用户。off
:禁用该用户。>password
:为用户设置一个密码。例如>mypassword
表示设置密码为mypassword
。#hashedpassword
:为用户设置一个经过哈希处理的密码。nopass
:表示该用户不需要密码即可登录。
示例:
ACL SETUSER alice on >password123
此示例将创建或修改名为 alice
的用户,启用该用户,并设置密码为 password123
。
2. 命令权限规则
+command
:允许用户执行指定的命令。例如+get
表示允许用户执行GET
命令。-command
:禁止用户执行指定的命令。例如-flushall
表示禁止用户执行FLUSHALL
命令。+@category
:允许用户执行某一命令类别下的所有命令。例如+@read
表示允许用户执行所有读操作命令。-@category
:禁止用户执行某一命令类别下的所有命令。例如-@admin
表示禁止用户执行所有管理类命令。allcommands
或+@all
:允许用户执行所有命令。nocommands
或-@all
:禁止用户执行所有命令。
示例:
ACL SETUSER bob on >securepass +get +set -@admin
此示例创建或修改名为 bob
的用户,启用该用户,设置密码为 securepass
,允许用户执行 GET
和 SET
命令,同时禁止用户执行所有管理类命令。
3. 键访问规则
~pattern
:允许用户访问匹配指定模式的键。例如~user:*
表示允许用户访问所有以user:
开头的键。resetkeys
:清除之前为用户设置的所有键访问规则。
示例:
ACL SETUSER charlie on >secretpass +get +set ~user:*
此示例创建或修改名为 charlie
的用户,启用该用户,设置密码为 secretpass
,允许用户执行 GET
和 SET
命令,并且允许用户访问所有以 user:
开头的键。
使用示例代码(Python Redis 客户端)