Redis如何设置密码?

Posted

技术标签:

【中文标题】Redis如何设置密码?【英文标题】:How to set password for Redis? 【发布时间】:2011-11-24 04:08:43 【问题描述】:

我在本地机器上使用 redis,所以我真的不需要设置密码来使用我的 php 客户端连接到服务器(我使用 predis 作为客户端)。但是,我正在将我的应用程序移动到实时服务器,所以我想设置一个密码来连接到我的 redis 服务器。

我有几个问题:

我在网上查遍了如何设置密码,看来我需要在 redis.conf 中添加密码。我找不到我应该在配置文件中添加什么来设置密码。

在predis中我应该如何添加密码。我正在使用以下参数数组连接到redis服务器

$my_server = array('host' => '127.0.0.1','port' => 6379,'数据库'=> 1);

我应该这样添加密码吗?

> $my_server = array('host'     => '127.0.0.1','port'     =>
> 6379,'database' => 1,'password'=>password);

最后一个问题,我正在尝试在实时服务器上停止我的 redis-server。每次输入以下命令时,我都会收到相同的错误消息

redis 服务器停止

[23925] 23 Sep 20:23:03 # 致命错误,无法打开配置文件 'stop'

通常在我的本地机器上输入

/etc/init.d/redis-server 停止

停止 redis 服务器,但它不能在我的实时服务器上运行,因为我的 /etc/init.d 中没有名为 redis-server 的进程

【问题讨论】:

【参考方案1】:

在 REDIS 6 之前的版本中,保护 REDIS 的唯一方法是打开您的 redis.conf ,取消注释 # requirepass 行,然后添加您的密码。但是,这样做的缺点是这是一个由所有连接共享的全局密码。

requirepass iampwd

除非您需要向后兼容,否则您应该迁移到 REDIS 6,而是使用 ACL 来创建具有最低权限的用户

acl setuser dummyuser on >dummypwd allcommands allkeys 

https://redis.io/topics/acl

【讨论】:

【参考方案2】:

    使用以下命令停止 redis 服务器

    /etc/init.d/redis-server stop
    

    输入命令:sudo nano /etc/redis/redis.conf

    找到 requirepass foobared 单词并删除 # 并将 foobared 更改为您的密码

例如。要求通过根

【讨论】:

【参考方案3】:

如果您在 Redis 重启时丢失了密码并且您正在将 Redis 作为 Windows 服务运行,那么您也应该在 redis.windows-service.conf 文件中设置 requirepass .

【讨论】:

【参考方案4】:

运行命令

redis-cli


redis 127.0.0.1:6379> AUTH PASSWORD
(error) ERR Client sent AUTH, but no password is set
redis 127.0.0.1:6379> CONFIG SET requirepass "amolpass"
OK
redis 127.0.0.1:6379> AUTH amolpass    
Ok

------------------或----------

获取 Redis 安装路径

redis-cli 配置获取目录

获取配置文件路径

sudo find / -name "redis.conf" -exec grep -H "^dir"  \; 2> /dev/null

生成与此相同的密码:

echo "amol-pass" | sha1sum 输出 :960c3dac4fa81b4204779fd16ad7c954f95942876b9c4fb1a255667a9dbe389d

Edit : /etc/redis/redis.conf
requirepass 960c3dac4fa81b4204779fd16ad7c954f95942876b9c4fb1a255667a9dbe389d

重启 Redis

 service redis-server restart

 TEST Command : 
 redis-cli 
 set key1 10
 (error) NOAUTH Authentication required.
 auth your_redis_password

【讨论】:

【参考方案5】:

对于那些使用docker-compose的人来说,设置密码真的很容易,不需要像redis.conf这样的配置文件。以下是您通常如何使用官方 Redis 映像:

redis:
    image: 'redis:4-alpine'
    ports:
      - '6379:6379'

以下是设置自定义密码所需的全部更改:

  redis:
    image: 'redis:4-alpine'
    command: redis-server --requirepass yourpassword
    ports:
      - '6379:6379'

一切都将正常启动,您的 Redis 服务器将受到密码保护。

关于细节,this blog post 似乎支持这个想法。

【讨论】:

【参考方案6】:

例子:

redis 127.0.0.1:6379> AUTH PASSWORD
(error) ERR Client sent AUTH, but no password is set
redis 127.0.0.1:6379> CONFIG SET requirepass "mypass"
OK
redis 127.0.0.1:6379> AUTH mypass
Ok

【讨论】:

如果使用redis-py,则关联命令为:redis.Redis.config_set('requirepass', "mycoolpassword") Config set requirepass "myPassword" 这个命令对我不起作用,当我执行这个命令时它运行没有错误。然后我重新启动了我的 Redis 实例。但我仍然可以从 CLI ping 到 Redis 实例,而无需提供任何密码。后来我检查了我的 redis.conf 的 requirepass 属性,在那里我发现它处于默认状态,这意味着 config set requirepass 命令未能在我的配置中设置 requirepass 的值,这就是它不起作用的原因。任何猜测/原因为什么它不起作用? @AshishShukla 你是如何重启你的 Redis 实例的? @LeaReimann 在 Linux 中你可以使用命令 -> sudo systemctl restart redis【参考方案7】:

如何设置redis密码?

步骤 1. 使用以下命令停止 redis 服务器 /etc/init.d/redis-server 停止

步骤2.输入命令:sudo nano /etc/redis/redis.conf

步骤 3.find #requirepass foobared 单词并删除 # 并将 foobared 更改为您的密码

例如。要求通过根

【讨论】:

【参考方案8】:

为此,你需要更新redis配置文件。默认情况下,redis没有任何密码。

01) 打开redis配置文件

sudo vi /etc/redis/redis.conf

SECURITY 部分下找到 requirepass 字段并取消注释该字段。然后设置您的密码而不是 "foobared"

# requirepass foobared

应该是这样的,

requirepass YOUR_PASSWORD

然后重启redis,启动redis-cli。

如果需要检查密码是否设置正确,可以在redis-cli中的commads下面运行。

sithara@sithara-X555UJ ~ $ redis-cli
127.0.0.1:6379> set key1 18
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth admin
OK
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> exit


sithara@sithara-X555UJ ~ $ redis-cli
127.0.0.1:6379> set key1 18
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth admin
OK
127.0.0.1:6379> set key2 check
OK
127.0.0.1:6379> get key2
"check"
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> set key1 20
OK
127.0.0.1:6379> get key1
"20"
127.0.0.1:6379> exit

`

【讨论】:

【参考方案9】:

使用 redis-cli:

root@server:~# redis-cli 
127.0.0.1:6379> CONFIG SET requirepass secret_password
OK

这将临时设置密码(直到 redis 或服务器重新启动)

测试密码:

root@server:~# redis-cli 
127.0.0.1:6379> AUTH secret_password
OK

【讨论】:

【参考方案10】:
sudo nano /etc/redis/redis.conf 

找到# requirepass foobared行并取消注释,然后重启服务器

现在你的密码是foobared

【讨论】:

【参考方案11】:

打开redis配置文件

sudo nano /etc/redis/redis.conf 

设置密码

替换

# requirepass foobared

requirepass YOURPASSPHRASE

重启redis

redis-server restart

【讨论】:

如果您在 Windows 上使用 redis 作为服务,那么您还需要在 redis.windows-service.conf 文件中设置密码。【参考方案12】:

您也可以在客户端使用以下命令

cmd :: config set requirepass p@ss$12E45

以上命令会将p@ss$12E45 设置为redis 服务器密码。

【讨论】:

补充一点:正如tutorialspoint.com/redis/redis_security.htm 中提到的,通过redis-cli 登录首先通过运行redis-cli.exe 进入redis shell。然后输入AUTH <password> 要禁用密码验证,只需使用config set requirepass "" 如果你重启redis它会重置为旧的。所以,也添加 conf 文件。 Config set requirepass "myPassword" 这个命令对我不起作用,当我执行这个命令时它运行没有错误。然后我重新启动了我的 Redis 实例。但是我仍然可以从 CLI ping 到 Redis 实例,而无需提供任何密码。后来我检查了我的 redis.conf 的 requirepass 属性,在那里我发现它处于默认状态,这意味着 config set requirepass 命令未能在我的配置中设置 requirepass 的值,这就是它不起作用的原因。任何猜测/原因为什么它不起作用? 但是你必须在每次服务器启动后发出这个。否则它不会咬人,对吧?这就是我得到的。【参考方案13】:

要设置密码,编辑你的redis.conf文件,找到这一行

# requirepass foobared

然后取消注释并将 foobared 更改为您的密码。确保您选择了相当长的内容,大约 32 个字符可能会很好,正如配置文件中的注释所提到的,外部用户很容易在一秒钟内猜出超过 150k 个密码。

要使用 predis 使用新密码进行身份验证,您显示的语法是正确的。只需添加密码作为连接参数之一。

要关闭 redis...检查您的配置文件中的 pidfile 设置,它可能是

pidfile /var/run/redis.pid

从命令行运行:

cat /var/run/redis.pid

这将为您提供正在运行的服务器的进程 ID,然后使用该 pid 终止该进程:

kill 3832

更新

我还想补充一点,您也可以将/etc/init.d/redis-server stop 用于在您的实时服务器上工作。 /etc/init.d/ 中的所有这些文件都只是 shell 脚本,将 redis-server 脚本从本地服务器上取下来,然后将其复制到同一位置的实时服务器,然后看看它用 vi 或其他东西做了什么你喜欢用,你可能需要修改一些路径之类的,但应该很简单。

【讨论】:

这似乎不适用于 Windows。我尝试了两个conf文件。我尝试了多种组合的 Redis 重启。唯一有效的是:“redis-cli config set requirepass somepass”。此外,每次服务器重新启动/关闭时,它都会丢失密码。所以我想,窗户就是这样。 根据选择的安装过程,我们可以将 Redis 配置文件设置为“vi /etc/redis/redis.conf”或“vi /etc/redis/6379.conf”(例如)其中“ 6379" 是为端口选择的值! 是否有最大密码长度? 另外,如果redis服务器正在运行,它会在启动时打印出顶部的pid...应该说 Redis version=xxx bits=64, commit=xxxxxx, modified=0, pid =xxxx Redis 变得更好,机器变得更快。 Redis 6 的配置文件指出,“由于 Redis 速度非常快,因此外部用户每秒可以针对现代机器尝试多达 100 万个密码”。它是 150K :-) 我个人使用类似 openssl rand 50 | openssl base64 -A 的东西来生成一个长密码。不过,也许现在使用 ACL 会更好。【参考方案14】:

我找不到我应该准确添加到配置中的内容 文件来设置密码。

配置文件应位于/etc/redis/redis.conf,密码可以在SECURITY 部分设置,该部分应位于REPLICATION 和LIMITS 部分之间。密码设置是使用 requirepass 指令完成的。有关更多信息,请尝试查看AUTH 命令说明。

【讨论】:

以上是关于Redis如何设置密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何给redis设置密码

redis windows 怎么设置密码

[CentOS7]redis设置开机启动,设置密码

如何给redis设置密码

如何在windows下面设置redis密码

[CentOS7]redis设置开机启动,设置密码