最近自己的 VPS 上部署了几个 Docker 服务,其中一个打算用 Reids 做个计数的功能,因为我的偏好是数据库类的程序不用 Docker 来部署,所以在本地安装了 Redis 服务,但是这样如果不做任何配置的话 Docker 容器中的服务是访问不到宿主机的 Redis 服务的。
从网上搜了下解决方法,都挺复杂的,需要配置网桥之类的,所以我就走了个捷径,直接将 Redis 的端口进行开放,然后设置一个密码:
修改 /etc/redis/redis.conf
:
将里边的 bind 127.0.0.1
改为 bind 0.0.0.0
,这样的话 Redis 就可以监听外部请求了。
接下来为 Redis 配置一个认证密码:
找到 #requirepass foobared
将注释去掉,同时将 foobared
改为自己想设置的密码。
修改完后,保存退出,然后重启 Redis 服务:sudo /etc/init.d/redis-server restart
这样就完成了,在我本地尝试登录服务器的 Redis:
redis-cli -h ipaddress
发现登录成功,发送个命令试试看: keys *
,这是会得到:
(error) NOAUTH Authentication required.
这样的结果,告诉我们没有权限,因为我们设置了访问密码。
正确的登录姿势是:redis-cli -h ipaddress -a password
同时,Python 程序中连接 Redis 的时候也要记得加上 password
参数。