Redis集群设置密码和查看密码方法

小熊 Redis1 2,264字数 1616阅读5分23秒阅读模式

redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。

1、初始化Redis密码:

在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数;比如:

requirepass test123;

Ps:需重启Redis才能生效
redis的查询速度是非常快的,外部用户一秒内可以尝试多达150K个密码;所以密码要尽量长(对于DBA没有必要必须记住密码);

2、不重启Redis设置密码:

redis 127.0.0.1:6379> config set requirepass test123

查询密码(为什么查不到,因为命令行设置以后需要登陆一次):

redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted

密码验证:

redis 127.0.0.1:6379> auth test123    OK

再次查询:

redis 127.0.0.1:6379> config get requirepass
 1) "requirepass"    2) "test123"

PS:如果配置文件中没添加密码 那么redis重启后,密码失效;

3、登陆有密码的Redis:

在登录的时候的时候输入密码:

redis-cli -p 6379 -a test123

先登陆后验证:

redis-cli -p 6379
redis 127.0.0.1:6379> auth test123    OK

auth命令跟其他redis命令一样,是没有加密的;阻止不了攻击者在网络上窃取你的密码;

最后

redis加一个密码访问是为了提供多一层的保护。如果防火墙或者用来保护redis的系统防御外部攻击失败的话,外部用户如果没有通过密码认证还是无法访问redis的。

同时有一个字段是bind,作用是绑定本机的IP地址,(准确的是:本机的网卡对应的IP地址,每一个网卡都有一个IP地址),而不是redis允许来自其他计算机的IP地址。
比如:

bind 127.0.0.1 就是只有本机可以连接
bind 0.0.0.0 所有来源都可以访问
bind 172.18.235.206 只有通过172.18.235.206这张网卡来的流量可以访问。

附注:

bind 127.0.0.1的解释:(为什么只有本机可以连接,而其他不可以连接)

我们从ifconfig可以看出:lo网卡(对应127.0.0.1IP地址):是一个回环地址(Local Loopback),也就是只有本地才能访问到这个回环地址,而其他的计算机也只能访问他们自己的回环地址。

那么来自这个lo网卡的计算机只有本机,所以只有本机可以访问,而其他计算机不能访问。

bind 172.18.235.206的话,只要通过这个网卡地址(172.18.235.206)来的Redis请求,都可以访问redis。

总结

添加密码

#配置文件里加(重启依然生效)
requirepass test123;

#进入后命令行配置(重启后失效,注意配置完以后必须验证身份后才能使用)
redis 127.0.0.1:6379> config set requirepass test123
redis 127.0.0.1:6379> auth test123    OK 

查询密码

redis 127.0.0.1:6379> config get requirepass
 1) "requirepass"    2) "test123"

登陆访问

#无密码
redis-cli -h 127.0.0.1 -p 6379

#有密码
redis-cli -h 127.0.0.1 -p 6379 -a 123456

#登录进去再验证密码
redis-cli -p 6379
redis 127.0.0.1:6379> auth test123    OK

PS:其他用到redis的服务在配置了redis密码以后需要添加密码配置,然后重启。

引用

Redis 用户验证
redis命令行启动和设置密码
Redis中bind的正确配置

weinxin
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
Redis最后更新:2020-8-31
小熊