在使用scrapy-redis中 ,运行命令时 报错 ResponseError: NOAUTH Authentication required. 经过查阅资料发现是给redis加了密码。 去掉密码后可以运行了。
Redis默认配置是不需要密码认证的,也就是只要连接Redis服务器的host和port正确,就可以连接使用。这在安全上会有一定的问题,所以需要启用Redis的认证密码,增加Reids服务器的安全性。
1.修改配置文件
Redis配置文件在redis根目录下,在设置redis自启动后,在/etc/redis/6379.conf也含有一个配置文件:
# vim /etc/redis/6379.conf
找到如下行
#requirepass foobared
去掉前面的注释,并修改为所需要的密码:
requirepass redis
2.重启Redis
# service redis restart
也可以:
# /usr/local/bin/redis-cli shutdown
# /usr/local/bin/redis-server /etc/redis/6379.conf
3.登录验证
设置Redis认证密码后,客户端登录时需要使用** -a**参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有操作权限。如下:
# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>ping
(error) NOAUTH Authentication required.
使用密码认证之后,并验证操作权限:
# ./redis-cli -h 127.0.0.1 -p 6379 -a redis
127.0.0.1:6379>config get requirepass
1) "requirepass"
2) "redis" ## 密码
127.0.0.1:6379>ping
pong
也可以在连接后认证:
# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth myPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
127.0.0.1:6379>
4.在命令行客户端配置密码(不需要重新启动Redis)
配置方式如下:
127.0.0.1:6379> config set requirepass newPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "newPassword
注意:使用命令行客户端配置密码,重启Redis后仍然会使用 redis.conf配置文件中的密码。
5.在Redis集群中使用认证密码
如果Redis服务器,使用了集群。除了在master中配置密码外,也需要在slave中进行相应配置。在slave的配置文件中找到如下行,去掉注释并修改与master相同的密码即可:
masterauth master-password