ERR 客户端发送了 AUTH,但未设置密码
ERR Client sent AUTH, but no password is set
我正在使用 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);
备注:
- 我能够使用确切的方式成功地向 redis 发送命令
使用 redis-cli -a 选项的相同密码。
- 我也在日志里打印了密码,看看是不是发错了
密码,但传递给 JedisPool 的密码是正确的。
- 我也尝试 "redis-cli monitor" 调用 redis 但我没有看到任何 AUTH
请求。
您的 Redis
实例中没有设置密码。使用 redis-cli -a
发送的密码将被忽略。
现在,您可以在redis实例中设置密码了。为此,编辑 redis 配置文件,设置 requirepass
选项并重启 redis 实例。
或者,在与redis通信时忽略密码选项。例如
jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT);
如果您不想设置密码,这可能会奏效。
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
将密码字段留空。
或
使用要求传递密码选项
redis 127.0.0.1:6379> 授权密码
(错误)ERR 客户端发送了 AUTH,但未设置密码。
redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
OK
redis 127.0.0.1:6379> AUTH mypass
OK
我正在使用 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);
备注:
- 我能够使用确切的方式成功地向 redis 发送命令 使用 redis-cli -a 选项的相同密码。
- 我也在日志里打印了密码,看看是不是发错了 密码,但传递给 JedisPool 的密码是正确的。
- 我也尝试 "redis-cli monitor" 调用 redis 但我没有看到任何 AUTH 请求。
您的 Redis
实例中没有设置密码。使用 redis-cli -a
发送的密码将被忽略。
现在,您可以在redis实例中设置密码了。为此,编辑 redis 配置文件,设置 requirepass
选项并重启 redis 实例。
或者,在与redis通信时忽略密码选项。例如
jedisPool = new JedisPool(jedisPoolConfig, host, port, IDLE_CONNECTION_TIMEOUT);
如果您不想设置密码,这可能会奏效。
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
将密码字段留空。
或
使用要求传递密码选项
redis 127.0.0.1:6379> 授权密码
(错误)ERR 客户端发送了 AUTH,但未设置密码。
redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
OK
redis 127.0.0.1:6379> AUTH mypass
OK