ERR客户端发送了AUTH,但未设置密码

时间:2017-06-16 21:32:56

标签: authentication redis jedis

我正在使用jedis 2.8.0并获得以下异常:

Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
        at redis.clients.jedis.Protocol.processError(Protocol.java:123)
        at redis.clients.jedis.Protocol.process(Protocol.java:157)
        at redis.clients.jedis.Protocol.read(Protocol.java:211)
        at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
        at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:196)
        at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2049)
        at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:89)
        at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:458)
        at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
        at redis.clients.util.Pool.getResource(Pool.java:49)
        ... 4 more

以下是我正在使用的api:

jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT, authSecret); 

注意:

  1. 我能够使用exact完成向redis发送命令 使用redis-cli -a选项使用相同的密码。
  2. 我还在日志中打印了密码,看看我发错了 密码,但传递给JedisPool的密码是正确的。
  3. 我也试过" redis-cli monitor"调用redis但是我没有看到任何AUTH 请求。

2 个答案:

答案 0 :(得分:7)

Redis个实例中未设置密码。使用redis-cli -a发送的密码将被忽略。

现在,您可以在redis实例中设置密码。为此,请编辑redis配置文件,设置requirepass选项并重新启动redis实例。

或者,在与redis通信时忽略密码选项。 E.g。

jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT);

答案 1 :(得分:-1)

如果您不想设置密码,这可能会起作用。 enter image description here

spring.redis.host=127.0.0.1 
spring.redis.port=6379 
spring.redis.password=

将密码字段保留为空白。