web-dev-qa-db-fra.com

ERR Client envoyé AUTH, mais aucun mot de passe n'est défini

J'utilise jedis 2.8.0 et j'obtiens l'exception suivante:

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

Voici l'api que j'utilise:

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

Remarques:

  1. Je peux envoyer avec succès des commandes à redis en utilisant exactement le même mot de passe en utilisant l'option redis-cli -a.
  2. J'ai également imprimé le mot de passe dans les journaux pour voir si j'envoie un mot de passe incorrect, mais le mot de passe transmis à JedisPool est correct.
  3. J'ai également essayé de "redis-cli monitor" les appels sur redis mais je ne vois aucune demande AUTH.
7
user1619355

Aucun mot de passe n'est défini dans votre instance Redis. Mot de passe envoyé avec redis-cli -a est simplement ignoré.

Maintenant, vous pouvez définir le mot de passe dans l'instance redis. Pour ce faire, modifiez le fichier de configuration de redis, définissez l'option requirepass et redémarrez l'instance de redis.

Ou, ignorez simplement l'option de mot de passe lors de la communication avec redis. Par exemple.

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