idea连接虚拟机上面的redis报错问题:Failed to connect to any host resolved for DNS name.【已成功解决】

1.前期准备

(1)先把redis安装配置好,可以看看我的这篇文章:

linux虚拟机上面安装配置redis-优快云博客

(2)最好把Finalshell也下载好,具体下载教程详见如下文章:

保姆级教程下载finalshell以及连接云服务器基础的使用教程_finalshell下载安装-优快云博客

(3)确认一下报错:

这个报错Failed to connect to any host resolved for DNS name.的具体原因是
  1. redis关闭了远程连接,需要在redis.conf中修改
  2. 防火墙拦截了6379端口,需要放行端口
接下来就讲讲怎么解决报错

2.解决问题(这里操作全部在root用户下进行)

(1)首先修改 /export/server/prod/redis/etc/redis.conf 这个文件

vi /export/server/prod/redis/etc/redis.conf
进入文件后,点击esc键,输入/protected-mode
/protected-mode

然后会跳转到相应位置,先按 i 进入插入模式,再将protected-mode yes改为protected-mode no(关闭保护模式)

修改后效果如下

接着点击esc键,输入/bind 127.0.0.1
/bind 127.0.0.1

把这两个都注释掉,如果文件里本身没有注释的话,就都要加上注释

像这样把这两行注释掉

# bind 127.0.0.1 ::1              # listens on loopback IPv4 and IPv6
和
#bind 127.0.0.1 -::1
注释效果如下: 

最后保存并且退出

(2)先启动redis服务,然后再输入以下命令,放行6379端口,并重启防火墙

redis-server /export/server/prod/redis/etc/redis.conf 
firewall-cmd --zone=public --add-port=6379/tcp --permanent
systemctl restart firewalld

效果如下

[root@node1 ~]# redis-server /export/server/prod/redis/etc/redis.conf 
[root@node1 ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
Warning: ALREADY_ENABLED: 6379:tcp
success
[root@node1 ~]# systemctl restart firewalld
  • 有关后两个命令的注释
  • 第一个命令是添加一个永久的防火墙规则,允许通过 TCP 协议访问端口 6379(通常是 Redis 的端口)。
  • 第二个命令是重启防火墙服务,以使得新的规则生效。

(3)重启redis服务

redis-cli shutdown
redis-server /export/server/prod/redis/etc/redis.conf 
[root@node1 ~]# redis-cli shutdown
[root@node1 ~]# redis-server /export/server/prod/redis/etc/redis.conf 

(4)最后进入idea再次尝试连接数据库redis

记得选择无身份验证(如果没有给redis设置登录密码的话)

成功了! 

写点代码试试看
运行set命令

运行get命令

好了,到了这里,所有问题基本上都被解决了!

3.参考文章:

(1)idea连接云服务器上的redis报错:Failed to connect to any host resolved for DNS name.【已解决】-优快云博客

(2)linux虚拟机上面安装配置redis-优快云博客

(3)Linux下安装Redis,及部分配置详情_linux下载redis-优快云博客

(4)在linux虚拟机上面配置Docker时所踩过的坑_docker 20.10.6设置镜像源不生效-优快云博客

(5)Redis教程(从入门到高阶)-优快云博客

4.补充笔记

(1)有关这两个命令的完整解释

好的,以下是经过美化后的版本:

---

这两个命令的作用是配置防火墙规则,允许特定端口的网络流量,并确保这些规则在防火墙重启后依然生效。

### 1. `firewall-cmd --zone=public --add-port=6379/tcp --permanent`
- **`firewall-cmd`**:用于管理 `firewalld` 防火墙的命令行工具。
- **`--zone=public`**:指定操作的防火墙区域。`public` 是常见的默认区域,通常用于公共网络。
- **`--add-port=6379/tcp`**:允许通过 TCP 协议访问端口 `6379`,这是 Redis 服务的默认端口。
- **`--permanent`**:将此规则设置为永久生效,即使系统重启后,规则仍然保持有效。

### 2. `systemctl restart firewalld`
- **`systemctl`**:用于管理系统服务的工具。
- **`restart firewalld`**:重启 `firewalld` 防火墙服务,使防火墙立即应用新的配置规则。

### 总结:
- 第一个命令添加了一条防火墙规则,允许 TCP 流量访问端口 `6379`,通常是为了允许外部访问 Redis 数据库。
- 第二个命令则重启了防火墙服务,确保新的规则立即生效。

通过这两个命令,你可以轻松配置防火墙以允许外部设备或应用连接到 Redis 服务。

---

希望这版内容能帮助你更清晰地理解和使用!如果还有问题,随时告诉我!

(2)这个grep --color=auto redis是什么进程?

简而言之,`14872` 是 `grep` 命令的进程号,而不是 Redis 服务的进程。

从你提供的 `ps -ef | grep redis` 输出中,可以看到两个相关的进程:

```
root      13096      1  0 17:54 ?        00:00:00 redis-server 127.0.0.1:6379
root      14872  10945  0 17:56 pts/0    00:00:00 grep --color=auto redis
```

其中,`redis-server` 进程的进程号(PID)是 `13096`。

所以,`redis` 的进程号是 **13096**。

进程号 `14872` 对应的是你执行的 `grep --color=auto redis` 命令的进程。

在你执行 `ps -ef | grep redis` 时,`grep` 命令本身也会出现在输出结果中,因为它的命令行参数中包含了 `redis` 字符串。所以,`14872` 是 `grep redis` 命令的进程号。`grep` 会在 `ps` 命令的输出中搜索 `redis`,因此它自己也会被包含在结果中。

简而言之,`14872` 是 `grep` 命令的进程号,而不是 Redis 服务的进程。

### IDEA 连接虚拟机 Redis 报错 `io.lettuce.core.RedisConnectionException` 的解决方案 当在IDEA中尝试连接位于虚拟机中的Redis实例时,可能会遇到如下错误: ``` org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost/:6379 ``` #### 1. 检查配置文件设置 确保项目的`application.yml`或`application.properties`文件已正确指定了Redis服务器的位置。对于Spring Boot项目而言,通常需要指定Redis主机地址和端口号。 ```yaml spring: redis: host: 192.168.xx.xxx # 替换成实际的IP地址 port: 6379 # 默认端口为6379 ``` 需要注意的是,有时即使修改了上述参数,程序仍然试图访问本地(`localhost`)而非远程机器上的Redis服务。这可能是由于未激活对应的profile所致[^2]。 为了防止这种情况发生,在同一份YAML文档内添加以下内容来启用特定环境下的配置项: ```yaml --- server: servlet: context-path: / spring: profiles: dev # 定义当前使用的Profile名称 redis: host: 192.168.xx.xxx port: 6379 ``` #### 2. 验证网络连通性和防火墙状态 确认开发计算机能够通过命令行工具(如telnet、nc等)正常访问目标VM上的Redis端口。如果无法建立TCP连接,则需排查是否存在网络安全策略阻止外部请求到达Redis进程监听的端口。 此外,还需检查Linux VM内部是否有iptables或其他形式的防火墙规则阻碍来自外界的数据包进入。 #### 3. 修改Redis配置允许外网接入 默认情况下,某些版本的Redis仅接受本机回环接口(即`127.0.0.1`)发起的连接请求。要让其支持广域网内的其他设备访问,编辑`/etc/redis/redis.conf`并将绑定地址更改为`bind 0.0.0.0`或者具体的公网IPv4地址[^4]。 同时建议开启身份验证机制并设定强密码保护资源安全: ```bash requirepass your_strong_password_here ``` 重启Redis服务使更改生效: ```shell sudo systemctl restart redis.service ``` 完成以上操作之后再次尝试从IDEA里边初始化与远端Redis节点之间的通信链路应该就不会再抛出类似的异常信息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值