首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Eclipse 连接 MySQL 失败:Communication link failure 完整排查

     編輯:程式設計綜合問答

异常信息

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 
Communication link failure, message from server: "Can't get hostname for your address"

核心原因矩阵

原因类别典型现象排查命令/配置
网络不通ping/telnet 3306 失败telnet db_host 3306、检查防火墙/安全组
MySQL 绑定地址仅监听 127.0.0.1bind-address = 0.0.0.0 在 my.cnf/[mysqld]
用户主机限制用户仅允许 localhostCREATE USER 'user'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON db.* TO 'user'@'%';
DNS 反向解析报错含 "Can't get hostname"skip-name-resolve 在 my.cnf/[mysqld] 或修复 DNS
驱动版本不匹配MySQL 8.0 用 5.x 驱动升级 mysql-connector-java 至 8.0.28+
SSL/TLS 握手失败MySQL 5.7+ 默认要求 SSLURL 添加 ?useSSL=false 或配置证书

标准连接模板

// JDBC URL 标准格式
jdbc:mysql://host:3306/database?useSSL=false&serverTimezone=UTC&characterEncoding=utf8

// 完整连接代码
String url = "jdbc:mysql://192.168.1.100:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai";
String user = "app_user";
String password = "secure_pass";

Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 8.0+ 驱动类
Connection conn = DriverManager.getConnection(url, user, password);

Eclipse 专项配置

  1. Data Source Explorer:右键 Database Connections → New → MySQL → 填入上述参数
  2. 项目构建路径:确保 mysql-connector-java-x.x.xx.jar 在 Libraries 中
  3. Tomcat 部署:若用连接池,检查 context.xml Resource 配置

快速验证步骤

# 1. 服务器端测试本地连接
mysql -u root -p -h 127.0.0.1

# 2. 客户端测试网络连通性
telnet server_ip 3306

# 3. 检查 MySQL 错误日志
tail -f /var/log/mysql/error.log
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved