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, используя тот же пароль, используя опцию redis-cli -a.
  2. Я также напечатал пароль в журналах, чтобы убедиться, что я отправляю неправильный пароль, но пароль, переданный в JedisPool, правильный.
  3. Я также пытался «отслеживать» вызовы redis-cli на redis, но я не вижу никаких запросов AUTH.

person user1619355    schedule 16.06.2017    source источник


Ответы (2)


В вашем экземпляре Redis не установлен пароль. Пароль, отправленный с redis-cli -a, просто игнорируется.

Теперь вы можете установить пароль в экземпляре Redis. Для этого отредактируйте файл конфигурации Redis, установите параметр requirepass и перезапустите экземпляр Redis.

Или просто игнорируйте параметр пароля при общении с Redis. Например.

jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT);
person sazzad    schedule 17.06.2017
comment
Это верно. Я использовал несколько слоев Redis... в одном слое AUTH был включен, а в другом нет. - person user1619355; 19.06.2017

Это может сработать, если вы не хотите устанавливать пароль. введите здесь описание изображения

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

Оставьте поле пароля пустым.

OR

Используйте параметр «требовать пароль»

redis 127.0.0.1:6379› ПАРОЛЬ АУТЕНТИФИКАЦИИ

(ошибка) ERR Клиент отправил AUTH, но пароль не установлен.

redis 127.0.0.1:6379› НАБОР КОНФИГУРАЦИИ requirepass mypass

OK

redis 127.0.0.1:6379› АУТЕНТИФИКАЦИЯ мой пароль

OK

person Shubham    schedule 08.06.2020
comment
У меня не сработало использование Jedis. Оставление пароля пустым по-прежнему вызывало то же исключение. Что сработало для меня, так это просто настроить пароль с помощью requirepass в redis.conf - person Tom; 08.03.2021