目录

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

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

Linux发行版

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

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

https://i-blog.csdnimg.cn/direct/deb2c9b3c7014eed82ca965b6ba890b9.png

这里包含两个环节:

  • 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 正常启动

https://i-blog.csdnimg.cn/direct/e1167d625d494d0aae3ce8e41b5f6a9f.png

  • inactive (dead)  → Redis 没启动,执行

https://i-blog.csdnimg.cn/direct/1ad1fd05a1e24669aba2aa1ed3cc9801.png

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


systemctl start redis

1.2确认redis配置文件操作

  • 配置文件所在路径

    /etc/redis.conf

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

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

    
    # 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
  • 设置允许远程连接

    
    # 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服务即可)

https://i-blog.csdnimg.cn/direct/0b73da3b92274450ae6a329cab835471.png

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

https://i-blog.csdnimg.cn/direct/af5ebc09ecb541318cad4283edded957.png

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

https://i-blog.csdnimg.cn/direct/3a8ea8247f934bfb9108008258d12ad6.png