问题:
利用go连接远程阿里云centos主机的redis,代码如下:
redisCli := redis.NewClient(&redis.Options{
Addr: url,
Password: Passwd, // no password set
DB: 0, // use default DB
})
报错1
connectex: No connection could be made because the target machine actively refused it
解决: 首先确保在阿里云控制台,已开放6379接口的防火墙,然后运行以下命令:
备份配置文件
cp /etc/redis.conf /etc/redis.conf_bak
修改绑定端口:
vim /etc/redis.conf
将 bind 127.0.0.1 改为 bind 0.0.0
在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
127.0.0.1 是一个环回地址。并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。
在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。
比如我有一台服务器,一个外放地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我之绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。
重启redis:
systemctl restart redis.service
报错2
ERR Client sent AUTH, but no password is set
解决: 没有设置密码造成的
vim /etc/redis.conf
更改 requirepass: 密码
重启即可。