redis密码验证

前言

redis在生产环境中通常都会设置密码以保证一定的安全性,本篇blog就简单记录一下如何在redis中设置客户端登录密码。

修改redis.conf

说明:暂时没有测试,一般自己的电脑安装中使用没有用到密码。

打开redis.conf文件,搜索requirepass关键字,如下图: 

关注标记的那一行,#requirepass foobared。设置密码的方法就是去掉注释的#,把foobared替换成自己的密码即可,例如将密码设置为123456: 

修改完成后重启redis,再次通过redis客户端redis-cli登录并操作可以发现会报一个身份认证错误: 

这就说明我们已经成功的设置了密码,所以通过客户端连接的话必须加上密码参数才能正常连接: 

如上图所示,加了-a参数之后即可正常连接并操作redis。

jedis设置密码

当我们用Java客户端连接redis时会遇到同样的问题,下面看一段简单的jedis连接redis的测试代码:

package com.firstelite.test;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class Test4Jedis {

    @Test
    public void testTwo() {
        Jedis jedis = new Jedis("192.168.145.10");
        System.out.println("Connection to server sucessfully");
        // 查看服务是否运行
        System.out.println("Server is running: " + jedis.ping());
    }
}

非常简单,仅仅是测试一下Jedis是否连通redis服务器,运行junit后我们发现报异常了:

redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
at redis.clients.jedis.Protocol.processError(Protocol.java:117)
at redis.clients.jedis.Protocol.process(Protocol.java:142)
at redis.clients.jedis.Protocol.read(Protocol.java:196)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:288)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:187)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:109)
at com.firstelite.test.Test4Jedis.testTwo(Test4Jedis.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

显而易见,由于我们设置了密码但在这里又没有指定密码,所以报了和刚才相同的错误,那么如何指定密码呢?很简单,Jedis的父类BinaryJedis提供了这样一样方法:

  1. public String auth(final String password) {
  2. checkIsInMulti();
  3. client.auth(password);
  4. return client.getStatusCodeReply();
  5. }

所以在创建了Jedis的实例后再加上一行jedis.auth("123456"); 即可,最后看一下运行结果: 

spring-data-redis设置密码

通常情况下在实际的java项目中我们会选择Spring提供的spring-data-redis来操作redis,spring的封装可以给我们提供很多便捷之处。那么spring-data-redis又是如何设置密码的呢?首先定义一个redis.properties配置文件,定义一组redis属性供spring加载使用,其中就包含密码(redis.password):

# Redis settings
redis.host=192.168.145.10
redis.port=6379
redis.password=123456
redis.timeout=100000
redis.maxTotal=300
redis.maxIdle=100
redis.maxWaitMillis=1000
redis.testOnBorrow=true

boot2.#
spring.redis.host=192.168.81.129
spring.redis.port=6379
spring.redis.password=123456

然后在由Spring封装的JedisConnectionFactory中来设置密码属性即可,下面是完整redis配置:

<!-- redis配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxIdle" value="${redis.maxIdle}" />
    <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
    <property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
    p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.password}" p:pool-config-ref="poolConfig" />
    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
  </bean></bean

出处: https://blog.csdn.net/crazy__qu/article/details/78738264

原文地址:https://www.cnblogs.com/But-you/p/11506255.html

时间: 2025-01-17 18:39:17

redis密码验证的相关文章

PHP操作Redis(一) PHP连接Redis,含Redis密码验证、指定某一Redis数据库

台服务器上都快开启200个redis实例了,看着就崩溃了.这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开. 那么,redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下. redis下,数据库是由一个整数索引标识,而不是由一个数据库名称.默认情况下,一个客户端连接到数据库0.redis配置文件中下面的参数来控制数据库总数: 1 databases 16 可以通过下面的命令来切换到不同的数据库下

springboot连接redis密码验证失败

由于测试环境连接redis时没有用密码,服务一切都正常!发到生产时登录系统,在处理功能的时候老报错,查看错误是连接redist失败,查看redis服务正常,redis密码对了一遍又一遍也没错啊 ~~~~真是活见鬼,那么问题是怎么出现的呢 !然后就开始比较测试和生产的xml文件,发现就加了个redis 的password,原配置文件如下--- redis:    database: 1    pool:      max-idle: 8      min-idle: 0      max-acti

redis的密码验证,及哨兵的相关配置

背景 我们知道,redis默认是不配置密码的,这就造成只要有redis的IP+Port就可以无需验证,登陆redis.如果恰巧你的redis是开放在公网上的,很容易就被黑客入侵,获取你的系统权限,经常被黑去当成了矿机. redis的安全,配置防火墙当然是一种方法,但是,给redis配置一个密码,也是一个不错的选择. 环境   redis: 192.168.1.227:6379(master) 192.168.1.227:6380(slave) 192.168.1.227:6381(slave)

Python3 redis集群连接 (带密码验证)

环境:python 3.7.4redis集群 单集群(无slave) 很多文章都说redis密码,今天验证的了很多次失败,查了相关资料有才知道连接方式,一下为代码,修改123456为自己代码就可以使用了 from rediscluster import StrictRedisCluster list = [ '02200000001', '02200000002', '02200000003', '02200000004', '02200000005', '02200000006', '0220

Codis 3.0 Release (密码验证) 群集部署文档

前言: Codis 3.x 由以下组件组成: Codis Server:基于 redis-2.8.21 分支开发.增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令.具体的修改可以参考文档 redis 的修改. Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议. 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy). 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例:

redis密码相关的配置

默认redis没有密码,若想配置密码有两种方法: 更改配置文件增加: requirepass yourpass 命令行里设置密码 然后重启redis其中"yourpass"为redis密码redis-cli -p 6379redis 127.0.0.1:6379>redis 127.0.0.1:6379> config get requirepass1) "requirepass"2) (nil)显示密码是空的,然后我们就可以设置一个密码了:redis

scrapy 如何链接有密码的redis scrapy-redis 设置redis 密码 scrapy-redis如何为redis配置密码

# 使用scrapy_redis的调度器SCHEDULER = "scrapy_redis.scheduler.Scheduler"# 使用scrapy_redis的去重机制DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"# 在ITEM_PIPELINES中添加redis管道# 'scrapy_redis.pipelines.RedisPipeline': 200# 定义redis主机地址和端口号

Redis 密码设置和查看密码

Redis 密码设置和查看密码 Redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证. 1.初始化Redis密码: 在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数: 比如 requirepass test123:(ps:需重启Redis才能生效) redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码:所以密码要尽量长(对于DBA 没有必要必须记住密码): 2.不重启Redis设置

接上篇 OPENVPN 证书+简单密码验证+防火墙策略

还是先介绍下环境 外网pc客户端  119.119.119.119 内网出口IP    112.112.112.112 openvpn服务器 192.168.0.250 openVPN ip池  172.18.1.0/24 内网服务器    192.168.0.1 安装步骤请参考之前文章,或者tar包下载源码安装即可. 配置支持用户名密码验证 服务器端配置文件: ###cat server.conf local 192.168.0.250  监听本地IP port 11940