*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) — 常量时间。仅涉及密码哈希比较,与数据量无关。