Java连接MySQL需引入mysql-connector-j 8.3.0+驱动,URL须含serverTimezone=Asia/Shanghai、characterEncoding=utf8mb4、useSSL=false和allowPublicKeyRetrieval=true参数,并用try-with-resources调用DriverManager.getConnection()获取Connection。

Java 中连接 MySQL 数据库,关键在于引入正确的驱动依赖、构造合规的连接 URL,并调用 DriverManager.getConnection() 获取 Connection。MySQL 8.0+ 版本已全面支持 JDBC 4.0+ 规范,驱动可自动注册,无需手动调用 Class.forName()。
添加 mysql-connector-j 依赖
必须使用官方最新驱动 mysql-connector-j(不是旧名 mysql-connector-java),Maven 项目在 pom.xml 中声明:
<groupId>mysql</groupId><artifactId>mysql-connector-j</artifactId>-
<version>8.3.0</version>(推荐用当前稳定版)
非 Maven 项目需将对应 JAR 包放入 lib 目录并确保在类路径中。
构造带关键参数的 JDBC URL
URL 必须显式指定时区和编码,否则易出现连接失败或中文乱码。标准格式如下:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
jdbc:mysql://localhost:3306/your_db?serverTimezone=Asia/Shanghai&characterEncoding=utf8mb4&useSSL=false&allowPublicKeyRetrieval=true
-
serverTimezone=Asia/Shanghai:解决 MySQL 8 默认拒绝未设时区的连接 -
characterEncoding=utf8mb4:完整支持中文与 emoji(比 utf8 更可靠) -
useSSL=false:开发环境可关闭;生产环境建议启用 SSL 或配置证书 -
allowPublicKeyRetrieval=true:适配 MySQL 8 默认认证插件caching_sha2_password
获取 Connection 并安全使用
直接传入 URL、用户名、密码调用 DriverManager.getConnection(),推荐配合 try-with-resources 自动释放资源:
String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=utf8mb4&useSSL=false&allowPublicKeyRetrieval=true";
String user = "root";
String password = "123456";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("连接有效:" + conn.isValid(1));
} catch (SQLException e) {
e.printStackTrace();
}
注意:conn.isValid(1) 是轻量验证方式,不发起额外查询;若仅需建立连接,此步可省略。
常见错误排查要点
- 报
ClassNotFoundException:确认 JAR 包已加载,且是mysql-connector-j(非旧版) - 报
Access denied:检查用户名密码、MySQL 是否允许远程登录、是否开了防火墙端口 - 报
Unknown system variable 'query_cache_size':说明用了过旧驱动连 MySQL 8+,必须升级驱动 - 中文存取乱码:确认 URL 含
characterEncoding=utf8mb4,且数据库/表字符集也是utf8mb4


















