IDEA连接redis数据库时出现Failed to connect to any host resolved for DNS name.

Linux发行版

本篇的实验版本是RockyLinux8.10版本

基于Debian的UbuntuLinux发行版默认防火墙是关闭的,而基于RHEL(CentOS)的RockLinux发行版防火墙默认是开启的,idea连接出现问题很大概率就是这个导致的

这里包含两个环节:

  • DNS name → 指的是域名解析(把名字解析成 IP,比如 redis-server.local192.168.135.131)。

  • Failed to connect → 说明 IP 已经解析到了,但是连接不上端口

也就是说:

  • 如果是 DNS 问题 ,那压根不会拿到 IP,就会报 Unknown hostName or service not known 这类错误。

  • 既然能显示 Failed to connect,就说明 DNS 是正常的,问题在网络连通性(防火墙、端口没开、服务没监听)。

1.Linux系统上的检查操作

1.1确认 Redis 服务是否运行

在进行网络方面的检查之前,需要做的前提操作是确认redis服务是否正常运行

复制代码
systemctl status redis
  • active (running) → Redis 正常启动
  • inactive (dead) → Redis 没启动,执行

如果检查到发现redis服务没启动就执行下面的命令:

复制代码
systemctl start redis

1.2确认redis配置文件操作

  • 配置文件所在路径

    /etc/redis.conf

    修改配置文件之前首先备份,记得先执行命令:cp -p /etc/redis.conf /etc/redis.conf.bak,将配置文件先拷贝一份

  • 设置连接密码(不是必要的,不做也行)

    md-end-block 复制代码
    # 1.配置文件中对应的配置
       requirepass 123456 #其中123456为设置的密码
    
    # 2.修改完成后重启Reids服务
       systemctl restart redis
       
    # 3.客户端连接测试
       redis-cli -h 127.0.0.1 -p 6379 -a 123456
       127.0.0.1:6379>PING
  • 设置允许远程连接

    md-end-block 复制代码
    # 1.注释掉配置文件中的本地IP地址绑定
        bind 127.0.0.1
    
    # 2.关闭保护模式(把yes改为no)
        protected-mode no
    
    # 3.重启Redis服务
      systemctl restart redis

1.3确认 Redis 是否监听外网地址

复制代码
ss -tnlp | grep 6379

ss -tnlp | grep 6379 的整体作用是:

检查当前系统中是否有进程正在监听 6379 端口,并找出是哪个进程。

在这里如果redis服务器未启动就会像图中内容这样,不能连接redis(此时开启redis服务即可)

正确的结果,你应该看到:

LISTEN 0 128 0.0.0.0:6379 ...

  • 0.0.0.0:6379 → 接收所有网卡的连接(外部可访问)

  • 127.0.0.1:6379 → 只能本机访问,需要编辑配置文件 /etc/redis.conf

  1. 服务状态Redis 服务已成功启动并在运行中

  2. 监听端口 :正在默认的 6379 端口监听连接。

  3. 网络访问

    • 可以通过服务器的 IPv4 地址 (如 192.168.1.100:6379)访问 Redis。

    • 如果服务器配置了 IPv6,也可以通过 IPv6 地址访问。

    • 监听在 0.0.0.0[::] 意味着可以从网络上的其他机器连接到此 Redis 服务(如果防火墙允许)。

  4. 进程信息 :Redis 服务器进程的 ID 是 4522。如果您需要管理(如停止)这个服务,这个信息很有用。

注意,我们每次执行一个步骤,就尝试一下是否IDEA可以正确连接redis

1.4检查 Linux 防火墙 (firewalld)

复制代码
firewall-cmd --list-ports

firewall-cmd --list-services
  • 如果没有 6379/tcp,说明端口没放行。

  • 临时关闭防火墙测试:

    systemctl stop firewalld

  • 如果能连上 → 就是防火墙问题。

如果是我们新手小白局域网下学习,而非在公网可访问状态下,其实我们把防火墙关掉了也是没有任何影响的。

(需要重启生效)

如果关闭后能连上 → 问题在 SELinux,可以考虑在 /etc/selinux/config 里改成:

1. 临时关闭(重启后会恢复)

复制代码
  systemctl stop firewalld

2. 永久关闭(重启后也不会启动)

复制代码
systemctl disable firewalld
systemctl stop firewalld

disable 会让 firewalld 不随系统启动。


3. 重新开启

如果你想再打开防火墙:

复制代码
  systemctl start firewalld
  systemctl enable firewalld

查看防火墙状态
复制代码
  systemctl status firewalld

1.5确认检查 SELinux

有些系统 SELinux 会拦截。

  • 查看 SELinux 状态:

    复制代码
    getenforce
    • Enforcing → 开启

    • Permissive/Disabled → 已关闭

  • 临时关闭:

    复制代码
    setenforce 0

2.Windows系统上的检查操作

  • 测试连通性(PowerShell):

    Test-NetConnection 192.168.135.131 -Port 6379

    • TcpTestSucceeded : True → 通了

    • False → 网络、防火墙或 SELinux 问题

在执行这个操作前也可以先cmd,然后ping一下你的linux ip地址看看是否能正常连接

经过上面一通操作,大概就能找到病因所在,并解决了,总共就几个病因,无非就是redis没有启动,配置文件没有修改或者修改错了,redis没有监听外网地址,linux防火墙问题(一般都是这个),还有ssh问题

相关推荐
老朋友此林39 分钟前
一文快速入门 MongoDB 、MongoDB 8.2 下载安装、增删改查操作、索引、SpringBoot整合 Spring Data MongoDB
数据库·mongodb·springboot
炬火初现1 小时前
SQL——子查询
数据库·sql
semantist@语校1 小时前
语校网500所里程碑:日本语言学校数据库的标准化与可追溯机制
大数据·数据库·人工智能·百度·语言模型·oracle·github
野犬寒鸦1 小时前
从零起步学习Redis || 第五章:利用Redis构造分布式全局唯一ID
java·服务器·数据库·redis·分布式·后端·缓存
yenggd1 小时前
QoS之流量整形配置方法
网络·数据库·华为
陪你在童年2 小时前
EXCEL根据类别分页预览或者直接生成PDF
数据库
l1t2 小时前
在duckdb 1.4中编译和使用postgresql协议插件duckdb-pgwire
开发语言·数据库·c++·postgresql·插件·duckdb
武子康2 小时前
Java-138 深入浅出 MySQL Spring Boot 事务传播机制全解析:从 REQUIRED 到 NESTED 的实战详解 传播机制原理
java·大数据·数据库·spring boot·sql·mysql·事务
snpgroupcn3 小时前
SAP S/4HANA迁移方法选哪种?选择性数据转换是否合适?企业需要考虑哪些关键因素!
运维·数据库·云计算
敲码图一乐3 小时前
流量安全——基于Sentinel实现限流,熔断,降级
java·开发语言·数据库