作为Java开发者或数据库管理员,与MySQL数据库建立连接是日常工作中最基础却又至关重要的环节。MySQL官方提供了两种主流驱动方式:JDBC驱动(即jar包驱动)和ODBC驱动。前者是Java应用程序连接MySQL的标准方式,后者则更多用于支持ODBC接口的应用程序(如Excel、PowerBI等)与MySQL交互。
在实际项目中,我发现很多新手开发者经常卡在驱动下载和配置的第一步。要么下载了错误版本的驱动导致兼容性问题,要么不清楚不同驱动包之间的区别而选错文件。本文将基于我多年使用MySQL的经验,手把手带你完成从驱动选择到下载配置的全过程,并分享一些官方文档中没有提及的实用技巧。
MySQL官方JDBC驱动(Connector/J)目前主要维护三个版本分支:
8.0系列:最新稳定版,支持MySQL 8.0+的所有特性,包括:
5.1系列:兼容旧版MySQL(5.6/5.7),适合维护老系统时使用
5.0及以下:已停止维护,仅用于极端兼容性需求
重要提示:驱动版本应与MySQL服务器版本大致匹配。例如MySQL 8.0服务器最好使用Connector/J 8.0+,否则可能遇到协议不兼容问题。
访问MySQL官网下载页:https://dev.mysql.com/downloads/connector/j/
在"Select Operating System"下拉菜单选择"Platform Independent"
选择下载包类型:
点击下载按钮(建议选择"No thanks, just start my download"跳过注册)
下载的zip包通常包含以下文件:
code复制mysql-connector-java-8.0.xx/
├── CHANGES # 版本变更日志
├── README # 使用说明
├── LICENSE # 授权协议
├── mysql-connector-java-8.0.xx.jar # 核心驱动文件
└── src/ # 源代码目录
实际部署时只需要将.jar文件添加到项目的classpath中即可。
MySQL ODBC驱动(Connector/ODBC)主要用于以下场景:
当前主流版本:
ANSI与Unicode版本的区别:
- Unicode版支持多语言字符集(推荐)
- ANSI版仅支持单字节字符(已逐渐淘汰)
选择操作系统(Windows/Linux/macOS)
下载对应架构的安装包:
运行安装程序(Windows示例):
Maven项目配置:
xml复制<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
手动添加jar到项目:
连接字符串示例:
java复制String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
Connection conn = DriverManager.getConnection(url, "username", "password");
odbcad32.exe)问题1:No suitable driver found
Class.forName("com.mysql.cj.jdbc.Driver")(JDBC4.0+可省略)问题2:Public Key Retrieval is not allowed
allowPublicKeyRetrieval=true问题3:时区错误
serverTimezone=UTC参数Asia/Shanghai问题1:Driver not found
问题2:字符集乱码
charset=utf8问题3:SSL连接失败
OPTION=67108864禁用SSL建议在项目中固定驱动版本,避免自动升级导致兼容性问题。对于Maven项目可以使用<dependencyManagement>锁定版本:
xml复制<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
</dependencyManagement>
生产环境建议使用连接池(如HikariCP)而非直接DriverManager:
java复制HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("user");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
HikariDataSource ds = new HikariDataSource(config);
启用Connector/J的日志功能有助于排查问题:
logging.properties文件code复制-Djava.util.logging.config.file=/path/to/logging.properties
对于ODBC驱动,可以在连接字符串添加OPTION=1048576启用跟踪日志。
定期检查驱动更新非常重要:
我在实际项目中曾遇到因未及时升级驱动导致的SSL漏洞问题,建议建立规范的驱动版本管理制度。