当前位置:   article > 正文

记一次springboot整合redis异常排查: ERR Client sent AUTH, but no password is set_springboot 2.3 err client sent auth, but no passwo

springboot 2.3 err client sent auth, but no password is set

异常情况

项目打包后启动出现了这个异常: ERR Client sent AUTH, but no password is set。

原因是:redis-server 服务端没有设置密码,但是客户端是带着密码发送验证的。

解决方式

方式1:

redis-server 服务端修改对应配置文件,然后重启服务

方式2:

这里是我犯的错误

检查springboot打包后的配置文件application.yml、application-prod.yml等。

springboot 加载配置文件的优先级顺序依次是:–file:./config/、–file:./、 –classpath:/config/ 、–classpath:/ 

以上顺序按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置的内容,其中配置文件中的内容是互补配置,即

  • 存在相同的配置内容,高优先级的内容会覆盖低优先级的内容

  • 存在不同的内容的时候,高优先级和低优先级的配置内容取并集

我这里的问题就出在了这个并集上。我打包的时候,资源目录(classpath)下的application-prod.yml文件中, redis 参数设置了password属性的值,但是我打包完成之后,我在打好的jar包工程根目录下有重新添加了一个application-prod.yml文件,其中redis的参数没有添加password属性(因为redis-server 本身没有设置密码,所以这里直接没有添加password这个属性)。

结果工程启动的时候,根据配置文件的加载规则,redis的其他参数加载的是工程根目录下的application-prod.yml文件中配置的属性值,password参数加载了项目资源目录(classpath)下的application-prod.yml文件中的值,两个配置文件中redis参数的合集成为了我程序中实例化jedis客户端对象的属性。

而我启用的redis-server 本身没有设置密码的,所以在程序调用jedis客户端对象操作的时候,报了如下的错误:

 redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set

处理方法

  • 工程根目录下的application-prod.yml文件中配置redis.password属性值为空字符串;

  • 或者删除资源目录(classpath)下的application-prod.yml文件中的redis.password属性。

总之,确保配置文件加载完之后的配置内容的合集是你想要的结果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/835369
推荐阅读
相关标签
  

闽ICP备14008679号