redis设置密码后,关闭服务的问题

请注意,本文编写于 340 天前,最后修改于 6 天前,其中某些信息可能已经过时。

redis设置密码config set requirepass password之后,任何操作指令都需要验证密码。包括关闭服务时,也会授权失败,无法关闭服务。以下为转载内容:

Redis安装之后,如果设置了密码,需要在关闭服务的时候也提供密码,否则无法关闭服务,可以直接通过修改/etc/init.d/redis启动脚本解决。Redis服务的启动和关闭脚本,只需要在关闭的脚本中添加如下的内容PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g'),然后在服务关闭命令中,添加密码就可以了,

EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/redis.conf"
REDISPORT="6379"
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')
if [ -z $PASSWORD ]
then 
    $CLIEXEC -p $REDISPORT shutdown
else
    $CLIEXEC -a $PASSWORD -p $REDISPORT shutdown
fi
#$CLIEXEC -a $PASSWORD -p $REDISPORT shutdown

这个方法在开启和关闭的时候,都会自动获取配置文件中设置的密码,然后在参数中携带该密码。所以起作用的前提是,redis.conf文件中的字段requirepass已经设置了值(有点svn的即视感)。
有个缺点:开启和关闭它都去携带了密码,开启是没有必要携带的,并且在脚本中携带密码会有warning提醒,很烦人。

另附一简单暴力关闭方法

pkill redis / kill -9 pid
# 如何未将redis设置成服务,除了修改配置文件外,也可以通过以下命令让此进程转换为后台进程,不占用shell的服务。
redis-server &

转自Redis设置密码之后,关闭服务的问题

此处评论已关闭