redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。但是一定要注意,设置了密码后,停止redis服务需要带上密码,否则停止不了。一般情况我们不会去设置Redis密码,但是一定要注意redis需要外网进行访问,就最好设置密码,否则可以不用设置。
一、临时配置,重启后失效
[root@localhost utils]# /apps/redis/src/redis-cli #进入redis客户端
127.0.0.1:6379> config set requirepass admin123 #设置密码
OK
127.0.0.1:6379> config get requirepass #获取密码,提示没有认证
(error) NOAUTH Authentication required.
127.0.0.1:6379>
127.0.0.1:6379> auth admin123 #进行认证
OK
127.0.0.1:6379> config get requirepass #获取成功
1) "requirepass"
2) "admin123"
127.0.0.1:6379> #这里推出当前客户端
[root@localhost utils]# /apps/redis/src/redis-cli #重新进入客户端
127.0.0.1:6379> config get requirepass #提示没有认证
(error) NOAUTH Authentication required.
[root@localhost utils]# /apps/redis/src/redis-cli -a admin123 #可以添加-a参数加上密码
127.0.0.1:6379> config get requirepass #获取成功
1) "requirepass"
2) "admin123"
但是,这样我们再进行停止redis服务,会一直提示Waiting for Redis to shutdown …
[root@localhost utils]# service redis stop
Stopping ...
(error) NOAUTH Authentication required.
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
Waiting for Redis to shutdown ...
因为配置了密码验证,而在stop的时候并没有配置密码,解决方案:
1、在启动脚本里面进行配置:$CLIEXEC -p $REDISPORT shutdown改行,添加-a参数和密码,如:$CLIEXEC -a “password” -p $REDISPORT shutdown
2、直接使用如下命令进行停止:
[root@localhost utils]# /apps/redis/src/redis-cli -a admin123 -p 6379 shutdown
二、配置文件配置,永久生效
1、修改配置文件/etc/redis/6379.conf找到”# requirepass foobared”所在行,复制一行,去掉注释,将foobared改为自己的密码
# requirepass foobared
requirepass admin123
2、重启后生效,然后进行验证