赞
踩
最近一段时间都在做谷粒学院,一直没有好好整理知识点,昨晚刚好在做项目的时候使用了Redis作为缓存的中间件,但是出现了无法访问到虚拟机上Redis的问题,今天对这个问题的解决方法做了个小小的整理。
由于我的虚拟机版本是ubuntu,所以下面涉及的一些命令可能和centos虚拟机的命令不太一样。
Ubuntu系统版本可以通过 uname -v
命令查询,一般高版本都是向下兼容的,低版本的可能本篇文章的方法会失效。
错误显示
(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients.
首先要进入到Redis的安装目录中,如果忘记安装位置,可以通过find
命令搜索。Redis的配置文件名为redis.conf,可以通过以下命令搜索
find / -name redis.conf
执行该命令需要获取权限,可以在命令前面加上 sudo
或者 直接通过 sudo su
进入超级用户模式。
搜索后我们可以看到配置文件的路径,那么这个目录哪呢?在桌面上通过ls
查看目录会发现根本不存在这个目录,这里涉及到Linux的目录结构,具体的可以查阅相关资料,这里只要输入cd /
回车之后就能进入到root目录中。之后就能找到usr文件夹,根据搜索到的路径进入。
找到配置文件后,自己选择编辑器打开,我的虚拟机上使用的是vim编辑器。输入vim redis.conf
打开配置文件,为了防止修改配置文件出错,最好提前拷贝一份配置文件。
编辑器搜索功能命令 /搜索内容
,比如输入/ protected-mode
搜索到之后按esc
键,然后输入 i
表示进入编辑模式,修改完成后,按esc
,然后输入英文的:wq
,表示保存并退出。
修改的内容
打开配置文件把下面对应的注释掉,否则只允许在虚拟机本地访问Redis数据库。
bind 127.0.0.1
附:这里如果不生效的话,可以注释掉之后,在这行下面输入 bind 0.0.0.0 表示允许所有IP访问。如何判断是否修改成功,可以在启动Redis后,通过ps -ef|grep redis
查看redis相关进程,如下图,如果没修改成功,会显示127.0.0.1:6379
,如果修改成功生效后就是 *:6379
。
Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,设置为no。
daemonize no
关闭保护模式
protected-mode no
修改完配置文件后,一定要重启Redis(关键)
首先要停止Redis服务端,可以在窗口中通过crtl + c
关闭,或者通过kill -9 进程号(pid)
进行关闭。
然后在配置文件目录中输入redis-server redis.conf
重新启动Redis,注意一定要在该目录中通过配置文件启动,不能在其他窗口通过Redis-server
启动,这样配置文件是不会生效的。
注意Redis默认端口是6379,然后防火墙把本地的防火墙和虚拟机的防火墙都关闭。下面的Linux中防火墙操作的相关命令。
# 开启防火墙
ufw enable
# 重启防火墙
ufw reload
# 关闭防火墙
ufw disable
# 查看端口开启状态
ufw status
# 开启某个端口, 这里表示开启 6379 端口
ufw allow 6379
# 关闭某个端口
ufw delete allow 6379
查询Linux系统的IP可以通过ifconfig
命令进行查询。
ssh服务一般我们在安装虚拟机的时候会默认安装,因此可以直接启动,如果不能启动的,可以自己手动安装,相关命令如下。
// 安装命令
apt-get install ssh
apt-get install openssh-server
// 启动 SSHD 服务
service sshd start
密码修改
Redis数据库的密码也是在配置文件Redis.conf中进行修改,默认是没有密码的。 通过/requirepass
命令搜索,可以把注释去掉,自行设置密码。
一般来说把配置文件按照上面方法进行配置都能解决远程连接Redis的问题,如果还存在其他问题无法访问,可能是虚拟机的网络配置或者是本地电脑的问题,可以通过Ping命令测试或者查阅其他方法进行解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。