Java呼叫Redis出現 “ERR Client sent AUTH, but no password is set” 解決辦法
Java呼叫Redis時出現 “ERR Client sent AUTH, but no password is set” 的原因及解決辦法
【錯誤提示】
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at cn.hncu.RedisPool.getJedis(RedisPool.java:66)
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
at redis.clients.jedis.Protocol.processError(Protocol.java:127)
at redis.clients.jedis.Protocol.process(Protocol.java:161)
at redis.clients.jedis.Protocol.read(Protocol.java:215)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2139)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:108)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
【問題原因】
1、Redis伺服器沒有設定密碼,但客戶端向其傳送了AUTH(authentication,身份驗證)請求。
2、Redis啟動時候,沒有指定配置檔案進行啟動。
【解決辦法】
1、檢視Redis配置檔案,是否設定密碼。
1)windows下找到Redis目錄下 redis.windows.conf 檔案,用文字編輯工具開啟檔案,找到“requirepass”,去掉註釋設定密碼。
2)Linux下找到到Redis目錄下redis.conf檔案,vim命令,編輯requirepass 的對應值。
2、Redis啟動時候,必須指定配置檔案進行啟動(這個非常重要)
1)windows下啟動Redis,進入到Redis安裝目錄,輸入 redis-server.exe redis.windows.conf
2)Linux下啟動Redis,也需要指定Redis配置檔案redis.conf
後臺啟動:nohup /usr/local/redis/bin/redis-server redis.conf &
或/usr/local/redis/bin/redis-server redis.conf
重啟啟動Redis後,再次啟動java應用就正常訪問不報異常了。