java用jdbc连接mysql核心是四步:加驱动、写url、获connection、关资源;关键在版本匹配——5.7用com.mysql.jdbc.driver和旧url,8.0+必须用com.mysql.cj.jdbc.driver及含servertimezone和usessl=false的url。

Java 用 JDBC 连接 MySQL,核心就四件事:加驱动、写连接串、获取 Connection、记得关资源。关键不是代码多难,而是版本匹配和参数写对——MySQL 5.7 和 8.0 的驱动类名、URL 参数差别很大,错一个就连不上。
驱动怎么加:Maven 最省心
推荐用 Maven 管理依赖,不用手动下载 JAR 包。根据你用的 MySQL 版本选对应驱动:
- MySQL 8.0+(主流新项目):
mysql
mysql-connector-j
8.0.33 - MySQL 5.7(老系统维护):
mysql
mysql-connector-java
5.1.49
注意:8.0 起 artifactId 改成了 mysql-connector-j,不是 java;而且驱动类名从 com.mysql.jdbc.Driver 变成 com.mysql.cj.jdbc.Driver。
连接 URL 怎么写:必须带关键参数
URL 不只是地址,它决定连接是否成功。常见写法示例:
- MySQL 8.0+(本地测试常用):
jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8 - MySQL 5.7(兼容写法):
jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8
必填参数说明:
- useSSL=false:开发环境不启用 SSL,否则会报 SSL 相关异常
-
serverTimezone:MySQL 8.0 强制要求,值如
Asia/Shanghai或UTC,不能留空或写GMT%2B8 - characterEncoding=utf8:避免中文乱码,建议加上
- 端口默认 3306,如果改过要显式写上,比如
:3307
代码怎么写:三行拿连接,别忘 try-with-resources
现代写法不需要手动 Class.forName(),JDBC 4.0+ 支持 SPI 自动加载驱动。直接用 DriverManager.getConnection() 即可:
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai";
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();
}
重点:
- 用 try-with-resources 自动关闭 Connection,避免连接泄露
- 不要在代码里硬编码驱动类名,靠 Maven 依赖和 URL 触发自动注册
- 首次运行报
ClassNotFoundException,大概率是驱动没引入或 artifactId 写错
连不上?先查这三点
大多数连接失败不是代码问题,而是环境或配置卡住:
-
MySQL 服务没起来:命令行执行
mysql -u root -p能登录吗?不能就先启服务 -
用户权限不足:MySQL 8.0 默认用 caching_sha2_password 认证方式,Java 驱动可能不兼容,可临时改成:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; -
防火墙/网络不通:如果是远程数据库,确认 3306 端口开放,且 MySQL 允许远程连接(
bind-address配置和用户 host 设置)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











