我在windows上远程连接linux上的redis(我虚拟机上的)遇到了问题,我是在windows上php代码中的调用redis接口来远程连接的,代码中ping()的时候报错。
服务器端我确定了iptables和selinux是关闭的,我的redis-server有启动,因为ps能查到,端口6379也是有监听的,netstat能查到。
我的redis-server是部署在192.168.229.131上的。
在虚拟机上,不论是用localhost还是127.0.0.1,还是不加ip,都是可以正常连接的。
通过ps命令的结果可以看到这个redis-server应该只是监听了来自127.0.0.1的请求,所以其他ip的请求是被拒绝了。
接下来我是修改了redis-server的配置文件:/usr/local/redis/etc/redic.conf
找到bind 127.0.0.1这一行,注释掉,然后重启redis-server,命令行查看进程:
root 24016 0.0 0.7 143912 7568 ? Ssl 15:35 0:00 /usr/local/redis/bin/redis-server *:6379
说明redis server并没有指定只允许127.0.0.1的地址才能连接进来,现在redis-server是允许所有的ip的连接了。
现在我在192.168.229.130上试着连接下,结果还是报错,说是有安全模式保护,因为放开了ip地址限制,又没有设置密码和开启认证,就会有安全问题。
就是说,redis-server开启了保护模式,这里提供了4种方法。
如果是短暂的测试想试着玩下,可以重启redis-server,在重新启动的时候加上 --protected-mode no 的选项,
如果是想永久的修改,比如下次reboot机器后还生效,可以修改redis-server的配置文件,找到 protected-mode yes这一行,把yes改为no,然后重启redis-server
我采用的是第二种,也就是修改redis-server的配置文件,重启后,192.168.229.130的redis-cli的连接的好的。
这个时候我的windows的连接也是ok的