Java调用Redis出现 “ERR Client sent AUTH, but no password is set” 解决办法

Java调用Redis时出现 “ERR Client sent AUTH, but no password is set” 的原因及解决办法

【错误提示】

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at cn.hncu.RedisPool.getJedis(RedisPool.java:66)
at cn.hncu.RedisJava.main(RedisJava.java:15)
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
at redis.clients.jedis.Protocol.processError(Protocol.java:127)
at redis.clients.jedis.Protocol.process(Protocol.java:161)
at redis.clients.jedis.Protocol.read(Protocol.java:215)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2139)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:108)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)

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

2、Redis启动时候,没有指定配置文件进行启动。

【解决办法】

1、查看Redis配置文件,是否设置密码。

1)windows下找到Redis目录下 redis.windows.conf 文件,用文本编辑工具打开文件,找到“requirepass”,去掉注释设置密码。

Java调用Redis出现 “ERR Client sent AUTH, but no password is set” 解决办法

2)Linux下找到到Redis目录下redis.conf文件,vim命令,编辑requirepass 的对应值。

2、Redis启动时候,必须指定配置文件进行启动(这个非常重要)

1)windows下启动Redis,进入到Redis安装目录,输入 redis-server.exe redis.windows.conf

Java调用Redis出现 “ERR Client sent AUTH, but no password is set” 解决办法

2)Linux下启动Redis,也需要指定Redis配置文件redis.conf

后台启动:nohup /usr/local/redis/bin/redis-server redis.conf &
或/usr/local/redis/bin/redis-server redis.conf

Java调用Redis出现 “ERR Client sent AUTH, but no password is set” 解决办法

重启启动Redis后,再次启动java应用就正常访问不报异常了。