如何设置Redis的密码?


82

我在本地计算机上使用Redis,因此我真的不需要设置密码即可通过php客户端连接到服务器(我使用predis作为客户端)。但是,我将应用程序移动到实时服务器,因此我想设置一个密码以连接到我的Redis服务器。

我有几个问题:

  • 我在互联网上检查了如何设置密码,好像我需要在redis.conf中添加密码。我找不到我应该完全添加到配置文件中来设置密码的内容。

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

    $ my_server = array('主机'=>'127.0.0.1','端口'=> 6379,'数据库'=> 1);

我应该这样添加密码吗?

> $my_server = array('host'     => '127.0.0.1','port'     =>
> 6379,'database' => 1,'password'=>password);
  • 最后一个问题,我正在尝试在实时服务器上停止我的Redis服务器。每次输入以下命令,我都会收到相同的错误消息

    Redis服务器停止

    [23925] 23 Sep 20:23:03#致命错误,无法打开配置文件“停止”

    通常在我输入的本地计算机上

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

停止redis服务器,但是由于我的/etc/init.d中没有名为redis-server的进程,因此无法在我的实时服务器上运行

Answers:


119

要设置密码,请编辑您的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或其他功能有什么作用您喜欢使用,可能需要修改一些路径等,但这应该非常简单。


1
这似乎在Windows上不起作用。我尝试了两个conf文件。我以多种组合尝试过Redis重新启动。唯一起作用的是:“ redis-cli config set requirepass somepass”。此外,每次重新启动/关闭服务器时,都会丢失密码。所以我想这就是Windows。
Jeffz

1
根据选择的安装过程,我们可以将Redis配置文件设置为“ vi /etc/redis/redis.conf”或“ vi /etc/redis/6379.conf”(例如),其中“ 6379”是为港口!
Eduardo Lucio

是否有最大密码长度?
AndreasKralj,

另外,如果redis服务器正在运行,它将在启动时在顶部打印pid ...它应该说Redis版本= xxx位= 64,提交= xxxxxx,已修改= 0,pid = xxxx
dave4jr

Redis变得更好,机器变得更快。Redis 6的配置文件指出:“由于Redis相当快,外部用户每秒可以在现代机器上尝试多达100万个密码”。那是150K :-)我个人使用这样的东西openssl rand 50 | openssl base64 -A来生成一个长密码。但是,现在最好使用ACL。
拉沙

64

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

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

上面的命令将设置p@ss$12E45redis服务器密码。


1
只需添加:如tutorialspoint.com/redis/redis_security.htm所述,通过redis-cli登录首先通过运行进入redis shell redis-cli.exe。然后输入AUTH <password>
2015年

6
并禁用密码验证,只需使用config set requirepass ""
阿伦

3
如果重新启动Redis,它将重置为旧版本。因此,还要添加conf文件。
theGamblerRise

Config set requirepass“ myPassword”此命令对我不起作用,当我执行此命令时,它将正常运行。然后,我重新启动了Redis实例。但是我仍然可以从CLI ping到Redis实例,而无需提供任何密码。后来我检查了redis.conf中的requirepass属性,发现它处于默认状态,这意味着config set requirepass命令无法在我的配置中设置requirepass的值,这就是它无法正常工作的原因。任何猜测/原因为何不起作用?
Ashish Shukla

49

例:

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")
jamescampbell

Config set requirepass“ myPassword”此命令对我不起作用,当我执行此命令时,它将正常运行。然后,我重新启动了Redis实例。但是我仍然可以从CLI ping到Redis实例,而无需提供任何密码。后来我检查了redis.conf中的requirepass属性,发现它处于默认状态,这意味着config set requirepass命令无法在我的配置中设置requirepass的值,这就是它无法正常工作的原因。任何猜测/原因为何不起作用?
Ashish Shukla

20
sudo nano /etc/redis/redis.conf 

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

现在您的密码是 foobared


17

使用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

7

打开redis配置文件

sudo nano /etc/redis/redis.conf 

设置密码

更换

# requirepass foobared

requirepass YOURPASSPHRASE

重新启动Redis

redis-server restart

4

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

01)打开redis配置文件

sudo vi /etc/redis/redis.conf

在“安全性”部分下找到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

`


3

步骤1.使用以下命令/etc/init.d/redis-server停止redis服务器停止步骤2.enter命令:sudo nano /etc/redis/redis.conf

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

例如 requirepass根


2

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

配置文件应位于,/etc/redis/redis.conf可以在“安全”部分设置密码,该部分应位于“复制”和“限制”之间。密码设置是使用requirepass指令完成的。有关更多信息,请尝试查看AUTH命令描述。


0

如何设置Redis密码?

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

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

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

例如 requirepass根

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.