Redis引发错误:NOAUTH需要身份验证,但没有密码设置

时间:2015-12-06 07:48:14

标签: ruby-on-rails ruby-on-rails-4 redis sidekiq

当我通过命令public override void OnApplyTemplate() { base.OnApplyTemplate(); Path p = GetTemplateChild("path") as Path; p.Data = ... } 连接到Redis服务器时,我收到错误 NOAUTH Authentication ,并运行redis-cli检查Redis是否正常工作。

我发现answer for NOAUTH Authentication required error描述了此错误仅在Redis设置密码时发生,但我在ping检查了Redis配置文件并且没有设置密码。

Redis config

有没有人知道如果有其他设置可能导致此错误?谢谢你的帮助。

p / s:我使用的是Ruby on Rails Web框架,Redis数据库用于Sidekiq。

编辑:Redis版本是2.8.4。服务器托管在AWS上。

目前,我决定为Redis服务器设置密码,以便在运行时无法设置密码。

(重启Redis服务器时,它将正常工作。您可以运行etc/redis/redis.conf重启Redis服务器。)

7 个答案:

答案 0 :(得分:41)

我们也面临类似的问题。看起来有人去扫描AWS并连接到所有公共redis并可能运行“CONFIG SET REQUIREPASS''”,从而锁定正在运行的redis实例。一旦重新启动 redis,配置就会恢复正常。

最好的办法是将AWS安全组策略和阻止端口6379 用于公开。

答案 1 :(得分:3)

我有同样的问题(在AWS上运行)并发现我们的redis端口已暴露。你可能也一样。有人搞乱了。

编辑: 解决方案:reset your redis password然后(假设您将其作为服务运行)重新启动服务providing the new password

答案 2 :(得分:1)

我有同样的问题。之后,我为requirepass服务器设置了redis
并在initializer/redis.rb

中添加该密码
$redis = Redis.new(:password=>"****") 

工作正常

答案 3 :(得分:1)

在AWS实例上运行Redis时遇到完全相同的问题。我会重新启动redis-server而没有任何密码要求(#requirepass''),可以正常工作几个小时,然后会抛出“NOAUTH Authentication required”,最终将不得不重新启动redis-server。

在AWS中检查了实例的安全组设置,并看到端口6379向公众开放(0.0.0.0/0)。我们限制了端口访问我们唯一需要访问的服务器,从那时起就没有出现问题!

P.S。这是我对StackOverflow的第一次贡献。谢谢你的帮助!

答案 4 :(得分:0)

如果您在配置文件中进行了任何更改,请不要忘记使用sudo service redis-server restart命令重新启动redis服务。

修改 如果您在生产模式下运行redis服务,则redis需要密码才能运行。为此,您需要在/etc/redis的配置文件中设置密码。

您需要在requirepass *******部分下的该文件中设置########### SECURITY ############

然后重新启动服务器sudo service redis-server restart

之后,在您已设置主机名和端口的配置或初始化文件中添加该密码。 例如:

$redis = Redis.new(:host => 'localhost', :port => 6379, :password => "*******")

答案 5 :(得分:0)

我有同样的问题,我发现它是由另一个redis.cnf配置文件启动redis引起的,所以我停止了redis-server,然后启动redis-server指定配置文件。

redis-server /etc/redis.cnf

然后一切都运转良好。

答案 6 :(得分:0)

你可以试试:auth 'foobared' 应该是配置文件中的默认密码:/etc/redis/redis.conf