先看结论
Redis 6.0 引入 ACL(访问控制列表) 。所以在 Redis 6.0 及之后版本中,密码认证逻辑改为支持用户名和密码,而不仅仅是单一密码。所以在 Redis 6.0 中,
requirepass
机制被弱化,当 ACL 用户配置存在时,会优先使用 ACL。那么造成的后果就是requirepass设置的密码 123可能被 user default 的密码覆盖。
ACL功能一般长下面这样(注释即解决问题):
# user default on #8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 ~* &* +@all
案发现场
配置密码如下
最开始我以为配置了requirepass “123”
reedis密码就完成了设置,后面没想过用123验证的时候直接错误。
- 怎么发现密码是123456的呢?(实际上我最开始的百度关键词就是“redis6.2.3的默认密码是多少”看起来很蠢)然后就发现了redis6.0新特性中提到了ACL,于是就解决了。Redis 6.0 新特性详解-阿里云开发者社区 (aliyun.com)
问题分析
看到这文章我火速检查了一下我的配置文件,发现最后一行果然启用了ACL。
那么为了进一步验证,我将8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92进行解密,果然得到明文123
那么,问题解决,直接注释,重启redis,验证123,成功!