Redis开启远程访问

17.11.3更新

实在抱歉没有在发表后仔细查看,我写文章的时候用的两个英文减号,犯懒没有上代码高亮,结果两个减号自动变成了一条横线。。导致执行错误,为大家说声对不起


 

首先来补个上篇redis文章的漏,我们在后台开启了redis,但是如何关闭呢?

假设没有更改端口,那么就使用如下语句:

redis-cli -p 6379 shutdown


下面来进入主题:

当我们应用docker的时候,docker内部的应用是可以直接通过宿主机IP来访问宿主机的,但是这种时候访问redis会被当做是远程访问了,而redis默认是关闭了远程访问的,那么首先我们需要开启,去哪里开启呢?自然还是在redis.conf中,上一篇文章已经介绍了这个文件,可以直接修改,当然我们这里还是使用’–‘语法来直接在启动时候改变。

但是首先还是来理解下redis.conf文件中如何关闭了远程访问,进入redis.conf,我们可以看到如下命令:

bind 127.0.0.1

就是这一条,限定了redis只接收本地端口的访问,看来我们只要更改了它的值就可以改变了,可是不要急,还有大段的注释我们没有看,当然这里我们就只截取对我们这个问题有用的:

# When protected mode is on and if:

#

# 1) The server is not binding explicitly to a set of addresses using the

#    “bind” directive.

# 2) No password is configured.

可以看到redis还存在protected mode,只要这个模式是开着的,就算更改了bind的值,如果没有设定密码的话,也无法开启远程访问:

protected-mode yes

那么如果不想设置密码,改成no就好了

所以直接这么写:

redis-server --bind 0.0.0.0 --protected-mode no  --daemonize yes

而远程访问就可以是:

redis-cli -h your ip -p port you set

可是连密码都不要,你的数据库是只要任何人试出来你的端口就可以随便访问了,这个肯定也是不行的,所以还是要设置个密码,再次去翻看redis.conf,可以看到如下命令被注释掉了

# requirepass foobared

这个词并没有意思,我第一反应是来自官方的恶意,fool + bared,愚蠢的裸露,意思是你们并没有设置密码,也挺有意思。只要解注释这一行,改一下就好了。当然我们会直接这么写:

redis-server --bind 0.0.0.0 --requirepass 1234567 --daemonize yes

已经设置了密码,就不必关闭protected-mode了

远程访问就变成了:

redis-cli -h your ip -p port you set -a your password

参考文献:

redis开启远程访问

redis安全设置

《Redis开启远程访问》上有3条评论

  1. $ redis-server –bind 0.0.0.0 –protected-mode no –daemonize yes
    2329:C 23 Jul 02:55:25.974 # Fatal error, can’t open config file ‘–bind

    1. 实在抱歉,这里没有用代码高亮,导致两个减号被HTML格式化了一下变成一条横线了,我已经修改了文章,很抱歉

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注