*Redis AUTH 命令 验证连接密码(支持用户名+密码)

*语法说明

AUTH password
AUTH username password

*中文详细说明

AUTH 命令用于向 Redis 服务器验证当前连接的访问权限。Redis 支持两种认证模式:

1. 传统密码模式(Redis < 6.0)

通过 requirepass 配置项设置访问密码。客户端必须使用 AUTH <password> 进行验证,密码匹配后才能执行后续命令。

2. ACL 用户名/密码模式(Redis >= 6.0)

Redis 6.0 引入了 ACL(Access Control List,访问控制列表)系统,支持基于用户名和密码的精细化权限控制。

  • AUTH <username> <password> — 使用指定的用户名和密码验证
  • AUTH <password> — 在 ACL 模式下只传密码时,隐式使用用户名 default

当验证失败时,Redis 会返回错误并拒绝执行后续命令。验证成功后返回 OK,连接进入授权状态。

安全提示:Redis 的高性能使其能在短时间内承受大量暴力破解尝试,请务必设置足够复杂的密码。可使用 ACL GENPASS 命令生成强密码。

*可运行示例

*示例 1:使用传统密码验证

# 先设置密码(需通过配置文件或 CONFIG SET 设置 requirepass)
redis-cli CONFIG SET requirepass mypassword

# 重新连接后需要认证
redis-cli AUTH mypassword

预期输出:

OK

*示例 2:使用 ACL 用户名和密码(Redis 6.0+)

# 创建 ACL 用户
redis-cli ACL SETUSER alice on >alicepassword ~* +@all

# 使用用户名密码认证
redis-cli AUTH alice alicepassword

预期输出:

OK

*示例 3:密码错误时的失败场景

# 使用错误的密码尝试认证
redis-cli AUTH wrongpassword

预期输出:

(error) ERR invalid password

*示例 4:ACL 模式下仅传密码(隐式 default 用户)

# 假设 default 用户的密码为 defaultpass
redis-cli AUTH defaultpass

预期输出:

OK

*返回值

  • 简单字符串回复(Simple String):验证成功时返回 OK
  • 错误回复(Error Reply):验证失败时返回错误信息,如 (error) ERR invalid password

*版本兼容性

Redis 版本 变更说明
>= 6.0.0 新增 ACL 支持,支持 AUTH username password 格式
< 6.0.0 仅支持 AUTH password 单参数格式

*时间复杂度

O(1) — 常量时间。仅涉及密码哈希比较,与数据量无关。