阿里云中Redis远程连接不上解决方案(连接RedisDesktopManager,连接springboot项目)

今天有必要说说困扰了我几天的一个问题,springboot项目远程连接阿里云中的redis不成功的问题。

看了网上很多解决方案,都是端口问题,将127.0.0.1注释或改为0.0.0.0,但是本人的问题不是端口问题,这些配置之前也都改过了。

其实redis无法连接数据库就只有这几种可能,防火墙,安全组,密码,绑定IP。

按照顺序依次检查了防火墙,安全组,密码,配置文件,都确认没有问题之后,再次启动redis,依然是服务器可以访问,本地telnet都无法连接。这个问题很像是防火墙和绑定IP的原因。

所以我再次检查firewall防火墙(firewall-cmd --state)和iptables(service iptables status)防火墙,我的centos的防火墙是没有关闭的,下图是我关闭后的状态。
在这里插入图片描述
防火墙关闭后,然后设置开启禁止启动防火墙的命令,具体操作命令如下。

如果你的是运行中的话,这里是一些操作防火墙的命令:

1.查看防火墙状态:
firewall-cmd --state 
2.启动防火墙
systemctl start firewalld
3.关闭防火墙
systemctl stop firewalld
4.检查防火墙开放的端口
firewall-cmd --permanent --zone=public --list-ports
5.开放一个新的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
6.重启防火墙
firewall-cmd --reload
7.验证新增加端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
8.防火墙开机自启动
systemctl enable firewalld.service
9.防火墙取消某一开放端口
firewall-cmd --zone=public --remove-port=9200/tcp --permanent
10禁止firewall开机启动
systemctl disable firewalld.service 

再去检查iptables防火墙的状态
在这里插入图片描述
这句话的意思是,找不到iptables,那就是因为系统版本的原因,已经由firewall防火墙接管了。那自然也就不再考虑是因为防火墙的原因,导致无法连接服务器。使用iptables -L -n查看已设置的iptables规则:
阿里云中Redis远程连接不上解决方案(连接RedisDesktopManager,连接springboot项目)_第1张图片
如果上边结果显示范围内的端口号都只能本地访问,6379自然也就不能被访问到了。知道原因就好办了,直接使用

iptables -F

将这些规则都清楚掉,再次使用

iptables -L -n

查看,规则都不存在了,使用telnet测试服务器端口号,也可以正常连接了。
规则不存在就如上图一样。
阿里云中Redis远程连接不上解决方案(连接RedisDesktopManager,连接springboot项目)_第2张图片

然后检查服务器的防火墙配置,iptables 配置,需要开放 6379 端口,执行下面的命令:

iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

然后再次使用

iptables -L -n

阿里云中Redis远程连接不上解决方案(连接RedisDesktopManager,连接springboot项目)_第3张图片
最后进行重启redis server,连接成功。项目也能正常运行。
阿里云中Redis远程连接不上解决方案(连接RedisDesktopManager,连接springboot项目)_第4张图片

附:redis配置文件中几个常用配置详解

指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求
bind 127.0.0.1
#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,
拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为no
protected-mode yes
redis监听的端口号
port 6379
是否在后台执行,yes:后台运行;no:不是后台运行
daemonize yes
#redis的进程文件
pidfile /var/run/redis/redis.pid
指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile /usr/local/redis/var/redis.log
数据库的数量,默认使用的数据库是0。可以通过”SELECT 【数据库序号】“命令选择一个数据库,序号从0开始
databases 16
RDB核心规则配置 save <指定时间间隔> <执行指定次数更新操作>,满足条件就将内存中的数据同步到硬盘
中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒内有10000个更改,则将内存中的
数据快照写入磁盘。

若不想用RDB方案,可以把 save "" 的注释打开,下面三个注释
 save ""
save 900 1
save 300 10
save 60 10000
requirepass配置可以让用户使用AUTH命令来认证密码,才能使用其他命令。这让redis可以使用在不受信任的
网络中。为了保持向后的兼容性,可以注释该命令,因为大部分用户也不需要认证。使用requirepass的时候需要
注意,因为redis太快了,每秒可以认证15w次密码,简单的密码很容易被攻破,所以最好使用一个更复杂的密码
requirepass foobared

你可能感兴趣的:(Redis,数据库,网络,java,redis,linux)