*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'。