Java连接MySQL数据库,核心步骤是下载匹配版本的MySQL Connector/J驱动,将其添加到项目类路径,然后在代码中加载驱动并建立连接。
mysql连接驱动版本选择与下载
选择驱动版本是连接MySQL的第一步,直接决定连接是否成功。多数情况下,你运行的MySQL版本决定了驱动版本的上限,比如MySQL 8.0以上就需要使用8.x版本的驱动,而MySQL 5.7则可以用5.1.x或8.x两种选择。
查看MySQL版本匹配驱动
- MySQL 5.5 – 5.7:推荐使用onnector/J 5.1.x系列,最后一个稳定版是5.1.49。
- MySQL 8.0:必须使用Connector/J 8.0.x系列,目前最新稳定版在8.0.33左右。
- MySQL 8.1及以上:需要8.1.x以上驱动,但国内多数生产环境仍停留在8.0。
行业共识认为,驱动版本尽量与MySQL大版本保持一致,避免因协议差异导致连接失败。
驱动下载渠道
- 官方下载页:从MySQL官网下载Connector/J,选择Platform Independent的ZIP包,解压后得到jar文件。
- Maven中央仓库:通过Maven依赖直接获取,无需手动下载,这是目前最主流的方式。
- 国内镜像:如果Maven下载慢,可使用简米云或华为云镜像,速度明显提升。
驱动文件命名规则
jar文件通常命名为mysql-connector-java-8.0.33.jar,注意8.x版本后类名有所变化,驱动类从com.mysql.jdbc.Driver变为com.mysql.cj.jdbc.Driver。很多新手在连接8.0版本时报错,正是因为没有使用新驱动类名。
上传MySQL数据库连接驱动到项目
驱动文件拿到后,需要将它部署到项目中,不同项目类型有不同的上传方式,我通常按以下三种场景操作。
通过Maven添加依赖(推荐)
Maven项目只需在pom.xml中加入依赖,坐标如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
- 版本号根据实际需求修改,建议使用RELEASE版本。
- 依赖会自动下载jar包并打包到最终产物中,无需手动上传。
- 如果使用Gradle,写法类似
implementation 'mysql:mysql-connector-java:8.0.33'。
手动上传jar包到WEB-INF/lib
对于传统Java Web项目(非Maven),需要将驱动jar包直接复制到项目的WEB-INF/lib目录下。
- 操作步骤:下载jar包,放入
src/main/webapp/WEB-INF/lib(或对应目录),然后在IDE中刷新项目。 - 注意:如果使用Eclipse,还需将jar包添加到Build Path,否则运行时会报ClassNotFoundException。
- 在IDEA中,手动放在lib目录后,可以右键jar包选择Add as Library,或直接使用Project Structure模块添加。
上传到服务器运行环境
在部署阶段,驱动jar包需要进入Tomcat或应用服务器的类路径。
- 嵌入Tomcat:将jar包放在
$CATALINA_HOME/lib下,所有应用共享。 - 应用独立:放在项目自身的
WEB-INF/lib,只对当前应用生效。 - Spring Boot:直接嵌入在Fat Jar中,无需独立上传,只需要在pom.xml里声明依赖。
如果你的项目使用直接拷贝jar包到服务器的方式,请务必检查jar权限,确保可读
,否则驱动无法加载。
java连接mysql数据库代码示例(JDBC连接)
驱动部署完成后,编写连接代码,这里给出一个标准的JDBC连接示例,并解释每一步。
加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");
- MySQL 8.x使用
com.mysql.cj.jdbc.Driver。 - MySQL 5.x使用
com.mysql.jdbc.Driver。 - 从JDBC 4.0开始,驱动会自动注册,这一步可以省略,但显式加载仍然是保险做法。
建立连接
String url = "jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=Asia/Shanghai"; String username = "root"; String password = "yourPassword"; Connection conn = DriverManager.getConnection(url, username, password);
- 连接URL必须包含数据库名称,IP和端口默认localhost:3306。
- 参数
useSSL=false:关闭SSL,本地开发推荐。 - 参数
serverTimezone=Asia/Shanghai:解决时区报错,MySQL 8.0必须指定。 - 如果连接不上,先检查MySQL服务是否启动,再检查防火墙和端口权限。
执行查询
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT FROM users");
while (rs.next()) {
System.out.println(rs.getString("username"));
}
或使用PreparedStatement防SQL注入:
PreparedStatement ps = conn.prepareStatement("SELECT FROM users WHERE id = ?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
关闭资源
rs.close(); stmt.close(); conn.close();
务必在finally块中按顺序关闭,或者使用try-with-resources自动关闭,业界常见错误之一是忘记关闭连接,导致数据库连接池耗尽。
常见问题与解决方案
问题1:java连接mysql8.0版本驱动为什么报错“The server time zone value ‘?й??’ is unrecognized”?
解答:MySQL 8.0要求显式设置时区,在连接URL中添加serverTimezone=Asia/Shanghai或serverTimezone=UTC即可,如果不想在URL中写死,可以在MySQL配置文件my.cnf中设置default-time-zone='+08:00'。
问题2:上传驱动jar包后仍然报“ClassNotFoundException: com.mysql.cj.jdbc.Driver”?
解答:先确认jar包是否在类路径中,对于Tomcat项目,检查WEB-INF/lib下是否有jar文件,并重启服务器,如果使用IDE,手动添加Build Path,对于Maven项目,检查pom.xml依赖是否生效,且scope不是provided。很多情况是jar包没有随项目一起发布,可以查看target目录确认。
问题3:Maven依赖下载慢,或者MySQL驱动版本不匹配怎么办?
解答:使用国内镜像仓库,如简米云仓库,在pom.xml的<repositories>中添加<id>aliyun</id>和<url>https://maven.aliyun.com/repository/public</url>,版本匹配方面,在MySQL官方文档的Connector/J版本兼容表中查找对应关系,通常驱动版本高于MySQL版本不会有大问题,但低于可能无法连接。
连接MySQL数据库,驱动部署是基础,代码配置是细节,版本匹配决定成败。 按照上述步骤操作,绝大多数连接问题都能在几分钟内解决。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/532678.html


