问题描述
哨兵模式部署 redis 服务,本地使用 redis-py 客户端连接,抛异常:
redis.sentinel.MasterNotFoundError: No master found for 'mymaster'
或者
redis.exceptions.ResponseError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
已确定 ”mymaster“ 配置没问题。
原因
原因很简单,报错信息翻译过来就是:默认用户不需要认证密码,确定你的配置是正确的吗?刚开始一直以为是客户端连接时没有提供密码,实际上是本来不需要密码,但是我们连接时给人家提供了。
password = "redis_pwd"
host = "localhost"
sentinel = Sentinel([
(host, 26379),
(host, 26380),
(host, 26381),
], sentinel_kwargs={'password': password}, password=password)
conn = sentinel.master_for("mymaster")
conn.set('mykey', 'myvalue')
result = conn.get('mykey')
print(result)
参数:sentinel_kwargs 用来配置哨兵的密码。password 用来配置 redis 密码。
解决办法
也很简单。确认下部署redis 时都给谁配置密码了。我遇到的就是 redis 有密码,哨兵没有配置密码。
上述代码稍稍改下就 work 了文章来源:https://www.toymoban.com/news/detail-801400.html
password = "redis_pwd"
host = "localhost"
sentinel = Sentinel([
(host, 26379),
(host, 26380),
(host, 26381),
],password=password)
conn = sentinel.master_for("mymaster")
conn.set('mykey', 'myvalue')
result = conn.get('mykey')
print(result)
坑死!文章来源地址https://www.toymoban.com/news/detail-801400.html
到了这里,关于踩坑 AUTH password called without any password的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!