我是靠谱客的博主 欣喜犀牛,这篇文章主要介绍redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set,现在分享给大家,希望可以做个参考。

在上一篇文章中,修改了redis的密码,那么也修改了 jedis的配置 如下

配置文件

复制代码
1
2
3
host=127.0.0.1 port=6379 password=insurance2019
复制代码
1
2
3
4
5
6
7
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${host}" /> <property name="port" value="${port}" /> <property name="password" value="${password}" /> <property name="poolConfig" ref="poolConfig"/> </bean>

但是当跟redis建立链接的时候,报错如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2019-01-25 14:56:35.944 INFO org.apache.shiro.session.mgt.AbstractValidatingSessionManager - Enabling session validation scheduler... 25-Jan-2019 14:56:35.979 SEVERE [http-nio-7777-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [insurance_web_servlet] in context with path [] threw exception [Filtered request failed.] with root cause redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set at redis.clients.jedis.Protocol.processError(Protocol.java:117) at redis.clients.jedis.Protocol.process(Protocol.java:151) at redis.clients.jedis.Protocol.read(Protocol.java:205) 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:2048) at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:89) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:861) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) at redis.clients.util.Pool.getResource(Pool.java:48)

解决思路,redis client 与redis 建立链接是带了密码的,却发现redis没有设置密码, 这就很奇怪了,难道我设置的密码无效了吗。 我给redis设置密码的时候并不是修改配置文件,而是使用命令行 

127.0.0.1:6379> config set requirepass insurance2019
OK
127.0.0.1:6379> 
在linux终端验证一下,是有效的,那为何 程序与redis建立链接的时候却报错 说 redis 没有设置密码呢

复制代码
1
2
3
4
5
6
[root@insurance ~]# redis-cli -a insurance2019 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379>

因此怀疑 redis client 建立链接 是否去匹配 redis 的config 文件呢, 那就先看下 通过命令行修改的密码,是否会在配置文件中生效吧。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
# Warning: since Redis is pretty fast an outside user can try up to # 150k passwords per second against a good box. This means that you should # use a very strong password otherwise it will be very easy to break. # # requirepass foobared # Command renaming. # # It is possible to change the name of dangerous commands in a shared # environment. For instance the CONFIG command may be renamed into something # hard to guess so that it will still be available for internal-use tools # but not available for general clients. #

果然配置文件里的 requirepass 依然是注释的, 那么 修改配置文件 和 命令行修改密码究竟什么区别呢

reids client 是否通过 config 文件的密码 去校验呢,  先修改配置文件的密码  尝试一下看看

!! 果然在redis confi 修改了密码后,程序连接 正常。

修改redis密码,一定要修改配置文件。

最后

以上就是欣喜犀牛最近收集整理的关于redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set的全部内容,更多相关redis.clients.jedis.exceptions.JedisDataException:内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部