【Redis】redis JedisDataException: ERR Client sent AUTH, but no password is set

1.概述

redis连接不上

Exception in thread "redis listener thread" redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
        at redis.clients.jedis.util.Pool.getResource(Pool.java:59)
        at redis.clients.jedis.JedisPool.getResource(JedisPool.java:234)
        at com.dbapp.baas.lang.util.redis.RedisClientUtil.getJedis(RedisClientUtil.java:50)
        at com.dbapp.baas.lang.util.redis.subscriber.RedisSubscriber.lambda$initListenerThread$37(RedisSubscriber.java:39)
        at java.lang.Thread.run(Thread.java:748)
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
        at redis.clients.jedis.Protocol.processError(Protocol.java:131)
        at redis.clients.jedis.Protocol.process(Protocol.java:165)
        at redis.clients.jedis.Protocol.read(Protocol.java:219)
        at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:309)
        at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:236)
        at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2225)
        at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:119)
        at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
        at redis.clients.jedis.util.Pool.getResource(Pool.java:50)
        ... 4 more

redis 的启动、关闭 判断其是否在运行中
#检查后台进程是否正在运行

ps -ef |grep redis

ps aux | grep redis

#检测6379端口是否在监听

netstat -lntp | grep 6379

上面发现都运行正常。

2.我的原因

【问题原因】
Redis服务器没有设置密码,但客户端向其发送了AUTH(authentication,身份验证)请求。

我的问题是,我redis没有设置密码,然后我的代码却发送了身份验证请求

3.决方案-

在redis配置文件中redis.conf加入:

requirePass: 你的密码

有些版本是

requirePass  你的密码

这个要看你的版本,一般配置文件中都有案例。

docker的话,可以全局查找配置文件位置以及参考:Docker 部署Redis并配置redis.conf

4.解决方案二

把上面的配置中password一行去掉,既然没密码,就不要写。

spring:
	redis:
	    database: 0
	    host: 127.0.0.1
	    port: 6379
	    timeout: 10000

方案二才是根本,既然没密码,就不要写。写个password,后面却没密码,当然要报错。

比较有意思的是,使用Redis DeskTop Manager的时候,无论有没有密码都不会报错。
但是如果设置了密码一定会报错

参考:https://blog.csdn.net/qq_21583077/article/details/88225728

你可能感兴趣的:(数据库-redis)