web-dev-qa-db-ja.com

ERRクライアントがAUTHを送信しましたが、パスワードが設定されていません

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. Redis-cli -aオプションを使用して、まったく同じパスワードを使用してコマンドをredisに正常に送信できます。
  2. また、ログにパスワードを印刷して、間違ったパスワードを送信しているかどうかを確認しましたが、JedisPoolに渡されたパスワードは適切です。
  3. また、redisで「redis-cli monitor」呼び出しを試みましたが、AUTH要求が表示されません。
7
user1619355

Redisインスタンスにパスワードが設定されていません。 redis-cli -aで送信されたパスワードは無視されています。

これで、redisインスタンスにパスワードを設定できます。これを行うには、redis設定ファイルを編集し、requirepassオプションを設定してredisインスタンスを再起動します。

または、redisとの通信中にパスワードオプションを無視します。例えば。

jedisPool = new JedisPool(jedisPoolConfig, Host, port, IDLE_CONNECTION_TIMEOUT);
9
sazzad