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问题

相关推荐
ulias2122 小时前
单元最短路问题
数据库·c++·算法·动态规划
安卓开发者2 小时前
鸿蒙NEXT中SQLite数据库全面实战指南
数据库·sqlite·harmonyos
xuejianxinokok3 小时前
PostgreSQL 18 新功能:虚拟生成列
数据库·后端
DemonAvenger4 小时前
MySQL索引失效全解析:从分析到优化,10年经验实战分享
数据库·mysql·性能优化
咖啡Beans4 小时前
踩坑无数!MySQL UNION和ORDER BY混用的血泪教训,看完不再翻车
数据库·mysql
椰椰椰耶4 小时前
[Spring Cloud][3]从零开始简单工程搭建实践详解,远程调用
java·数据库·spring cloud
时序数据说4 小时前
物联网时序数据库IoTDB是什么?
大数据·数据库·物联网·时序数据库·iotdb
范纹杉想快点毕业4 小时前
请创建一个视觉精美、交互流畅的进阶版贪吃蛇游戏
数据库·嵌入式硬件·算法·mongodb·游戏·fpga开发·交互
时序数据说4 小时前
时序数据库:定义与基本特点
大数据·数据库·物联网·时序数据库