修复使用Redis服务启动时的NOAUTH Authentication required报错

By | 2018年2月14日

在此文中《Linux下安装配置Redis服务》,介绍了如何安装Redis和基本配置,其中使用了install_server.sh脚本,创建了一个服务脚本,可以方便的启动暂停。

不过,在使用过程中,发现会出现如下错误:(error) NOAUTH Authentication required

根据提示的意思应该是没有加验证参数,而实际上我确实为Redis加了连接密码(requirepass  参数)。

打开/etc/init.d/redis文件,查看下是如何restart的,其中摘出stop方法:

# stop 方法
 stop)
        if [ ! -f $PIDFILE ]
        then
            echo "$PIDFILE does not exist, process is not running"
        else
            PID=$(cat $PIDFILE)
            echo "Stopping ..."
            $CLIEXEC -p $REDISPORT shutdown #此处使用redis-cli命令发送shutdown命令
            while [ -x /proc/${PID} ]
            do
                echo "Waiting for Redis to shutdown ..."
                sleep 1
            done
            echo "Redis stopped"
        fi
        ;;

stop方法中使用了redis-cli发送shutdown命令,前面带了p参数,是我们自定义的端口,唯独少了密码参数,正确的应该是:

$CLIEXEC -p $REDISPORT -a $PASSWORD shutdown 

加上a参数,后面跟上密码值,这个变量值值可以在文件开头定义好:

EXEC=/opt/programs/redis/redis-4.0.8/src/redis-server
CLIEXEC=/opt/programs/redis/redis-4.0.8/src/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/opt/programs/redis/conf/6379.conf"
REDISPORT="6379"
#加上此行
PASSWORD="password"

保存后,重启测试下。