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

use*_*355 7 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
Run Code Online (Sandbox Code Playgroud)

以下是我使用的api:

jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT, authSecret); 
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 我可以使用redis-cli -a选项使用完全相同的密码将命令成功发送到redis.
  2. 我还在日志中打印了密码以查看我是否发送了错误的密码,但传递给JedisPool的密码是正确的.
  3. 我也尝试在redis上进行"redis-cli monitor"调用,但我没有看到任何AUTH请求.

saz*_*zad 9

您的Redis实例中没有设置密码.发送的密码 redis-cli -a被忽略.

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

或者,在与redis通信时忽略密码选项.例如

jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)