*Redis ACL WHOAMI 命令

ACL WHOAMI 返回当前连接所使用的 ACL 用户名。


*语法

ACL WHOAMI

*参数说明

参数 类型 必填 说明
该子命令不接受额外参数

*返回值

  • String:当前连接的用户名

*时间复杂度

O(1)

*

*示例

*未启用 ACL 时(默认用户)

> ACL WHOAMI
"default"

*使用认证后的用户

> AUTH appuser mypassword
OK
> ACL WHOAMI
"appuser"

*在脚本中检查当前身份

> ACL WHOAMI
"readonly"
> SET mykey value
NOPERM this user has no permissions to run the 'set' command or its subcommand

*常见错误

错误 原因 解决
NOPERM 当前用户无 ACL 读取权限 使用有权限的用户连接

*最佳实践

  • 连接多个 Redis 实例时,用 WHOAMI 确认自己是谁,防止误操作
  • 在管理脚本开头加入 WHOAMI 检查,确保以预期用户运行
  • 排查权限问题时,先用 WHOAMI 确认身份,再用 ACL DRYRUN 验证命令权限
  • 多租户环境中,WHOAMI 可用于确认当前属于哪个业务线账号

*FAQ

Q1: 未启用 ACL 时 WHOAMI 返回什么? A: 返回 "default",因为 Redis 始终有一个默认用户。

Q2: 和 AUTH 命令的关系? A: AUTH 切换用户后,WHOAMI 会返回新认证的用户名。

Q3: 可以通过 WHOAMI 判断 Redis 版本是否支持 ACL 吗? A: 可以。Redis < 6.0 不认识 ACL 命令,会返回 ERR unknown command 'ACL'