尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MySQL驱动全解析:JDBC与ODBC的下载、配置与避坑指南
很多人在MySQL驱动上栽过跟头明明数据库装好了、代码也没问题程序一跑就报“ClassNotFoundException”或者“找不到数据源”最后发现是驱动压根没下对、没放对地方。另一个常见场景是公司内网环境用Excel、Access或者其他报表工具连MySQL这时候需要的又是ODBC驱动而不是Java的jar包。这篇文章就把两条路讲透从官网下载到配置使用全程实操适合刚接触MySQL的人也适合被驱动折腾过的老手查漏补缺。1. 先把概念理清楚你到底需要的是哪一种驱动很多人第一次接触“MySQL驱动”时以为只有一个文件。实际上驱动分好几类最常见的就是标题里提到的两种Java用的JDBC驱动也就是jar包驱动和Windows生态常用的ODBC驱动。两者的目标完全不同选错了后面全白搭。1.1 jar包驱动和ODBC驱动的本质区别jar包驱动是给Java程序用的。不管你是写SpringBoot后端、写一个普通的Java控制台程序还是用IDEA做课程设计只要代码里用JDBC方式连MySQL就必须有一个对应的Connector/J驱动包。它本质上是一组Java类实现了JDBC规范定义的接口让Java程序能通过标准API操作MySQL。ODBC驱动则是面向更广泛的语言和工具的。ODBC是微软提出的一个通用数据库访问接口标准Excel、Access、C程序、Python的pyodbc库、Power BI这些工具都能通过ODBC来连数据库。MySQL官方提供了Connector/ODBC这个驱动安装之后会在系统里注册一个数据源接口别的程序就能像访问本地文件一样访问远端MySQL数据库。这两类驱动不是一个东西也不能互相替代。Java程序用不了ODBC驱动Excel也不会去读jar包。所以第一步就是明确自己到底在什么环境里工作。1.2 选择驱动时需要看什么选择驱动主要看三个维度操作系统、应用程序类型、MySQL服务端版本。需求场景推荐驱动说明Java项目IDE、SpringBoot、Maven项目MySQL Connector/Jjar包版本选择依据MySQL服务端版本8.x和5.x差异较大Excel/Access/Power BI等微软生态工具MySQL Connector/ODBC安装时要注意32位还是64位与应用位数匹配C/C、VB、Delphi等桌面程序MySQL Connector/ODBC使用ODBC API通过DSN或连接字符串访问Python的pyodbc、Windows脚本MySQL Connector/ODBC系统数据源配置好后直接调用还有一个很多人忽略的细节下载驱动前先确认MySQL服务端版本。驱动版本不一定非要跟服务端完全一致但差距太大会出现兼容性问题。比如MySQL 8.0的服务端你拿一个5.1.x的老驱动去连虽然基本能用但密码认证方式很可能报错。反过来新驱动连老版本MySQL一般问题不大但能支持的特性会有差异。最稳妥的做法先查服务端版本再选驱动版本。2. 从MySQL官网下载JDBC驱动jar包别走错门既然要下jar包驱动直接去MySQL官网是最靠谱的方式。不过官网页面结构有点绕很多人进去就迷路点了一堆链接找不到下载入口。我把整个流程走一遍顺便把容易看漏的地方标出来。2.1 找到下载入口MySQL官网的地址是mysql.com点进去之后先看到的是产品介绍和新闻别在主页停留直接从顶部菜单或者地址栏进入下载专区。驱动对应的页面是“MySQL Community Downloads”下面的“Connector/J”。如果记不住路径直接访问 dev.mysql.com/downloads/connector/j/ 就能到。打开页面之后你会看到几个选项Operating System操作系统默认显示“Platform Independent”下面有zip和tar.gz两种格式的压缩包。很多人以为要选Windows然后下载exe其实Connector/J是Java写的跨平台zip包在任何操作系统上都能用。直接选Platform Independent下载zip即可。2.2 版本选择的门道Connector/J有两个版本线8.x和5.1.x。当前主流选择是8.x系列但具体用哪个版本取决于你的项目情况。如果你的项目是SSH框架StrutsSpringHibernate这种老技术栈或者MySQL服务端还在5.7以下5.1.x更省心。如果你的项目用的是SpringBoot 2.x或3.x、MySQL 8.0以上直接用8.x版本。8.x系列的驱动类名和连接URL参数跟5.1.x有差异这个后面会细说。下载页面上会列出多个版本比如“8.0.33”“8.1.0”等。不要盲目追求最新版一般来说选择最新的稳定版本问题不大但如果你已经有明确的项目依赖比如SpringBoot版本对Maven坐标版本做了一些限定优先参考项目实际需要。选择好版本后页面上通常会有一个登录框要求你输入Oracle账号。这里有个技巧往下找“No thanks, just start my download”这个链接可以直接跳过登录开始下载。这是官方提供的合法跳过方式不需要注册账号。2.3 下载后的文件校验下载完得到一个zip压缩包名字通常是 mysql-connector-j-8.0.33.zip 或 mysql-connector-java-5.1.49.zip。解压之前建议先校验一下文件完整性尤其是你打算在正式项目里使用的时候。官网下载页面通常提供SHA-256校验值。在Windows的PowerShell里可以用 Get-FileHash 命令计算文件哈希值然后跟官网的值对比。这个步骤不是必须的但能避免文件在下载过程中损坏。实测下来有时候下载过程中网络抖动会导致压缩包解压失败校验一下能少踩一个坑。2.4 解压后的目录结构解压之后根目录下会有一个jar包8.x系列叫 mysql-connector-j-8.0.33.jar5.1.x系列叫 mysql-connector-java-5.1.49.jar。这个就是我们要找的驱动文件。目录里还有一个 src.zip是驱动源码用于IDE里查看实现平时用不上。另外有一个 lib 文件夹里面可能有 protobuf-java 之类的第三方依赖jar通常情况下你只需要主jar包就够了。如果你的项目运行环境比较特殊比如把主jar放入Tomcat的lib目录可以留意一下依赖情况但99%的场景只引入主jar包即可。3. 拿到jar包之后四种接入Java项目的方式下载到了jar包只是第一步接下来要把它放进你的项目里。这里根据不同的项目工程方式给出四种接入方法你按实际场景挑一种就行。3.1 手动引入本地jar包适合普通IDE项目这种方式适合不用Maven或者Gradle管理的简单项目。以IDEA为例操作步骤是项目右键 - Open Module Settings快捷键F4- Libraries - 点加号 - Java - 选中你解压出来的jar包 - OK。之后在项目里就能正常 import com.mysql.cj.jdbc.Driver 了。Eclipse稍微有点不同项目右键 - Build Path - Configure Build Path - Libraries - Add External JARs - 选中jar包。这两种方式都是把外部jar加入编译路径运行时不报ClassNotFoundException就说明引成功了。3.2 使用Maven坐标推荐工程化方式如果你用Maven管理项目其实不用手动下载jar包直接在 pom.xml 里加依赖就行。8.x版本的坐标是dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId version8.0.33/version /dependency5.1.x的坐标是dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.49/version /dependency加了依赖后让Maven刷新一下它会自动从中央仓库拉取jar包。这里有个容易混的地方8.x系列之后groupId从 mysql 改成了 com.mysqlartifactId从 mysql-connector-java 改成了 mysql-connector-j。如果你复制了网上旧代码要留意这两处变化。3.3 离线环境把外部jar包安装到本地Maven仓库有时候项目用Maven管理但开发机不能上外网没法从中央仓库拉依赖。这时候你手里只有从官网下载的jar包怎么办可以先手动把jar安装到本地Maven仓库再在pom.xml里正常引用。在jar包所在目录执行mvn install:install-file -Dfilemysql-connector-j-8.0.33.jar -DgroupIdcom.mysql -DartifactIdmysql-connector-j -Dversion8.0.33 -Dpackagingjar执行成功后在pom.xml里使用相同坐标引用Maven就不会去远程找了。这个操作对于其他第三方jar包同样适用之前处理过一个项目需要引入某个老版本SDK中央仓库没有就是这么处理的。3.4 SpringBoot项目里的实际配置SpringBoot项目一般都用Maven或Gradle管理依赖所以直接加坐标即可。运行时的连接配置写在 application.properties 或 application.yml 里。一个典型的MySQL 8.x配置如下spring.datasource.urljdbc:mysql://localhost:3306/testdb?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8allowPublicKeyRetrievaltrue spring.datasource.usernameroot spring.datasource.password123456 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver这里有几个参数值得解释一下useSSLfalse 是因为本机开发环境一般没配SSL证书不关掉会报警告serverTimezoneAsia/Shanghai 是解决时区问题不然查询时间字段会差8个小时characterEncodingutf8 保证中文不乱码allowPublicKeyRetrievaltrue 是MySQL 8.0使用 caching_sha2_password 认证时需要的否则可能报“Public Key Retrieval is not allowed”。驱动类名也要注意MySQL 8.x用的是 com.mysql.cj.jdbc.Driver5.1.x用的是 com.mysql.jdbc.Driver。差了中间的 cj 两个字母写错一样是ClassNotFound。4. ODBC驱动的下载、安装与DSN配置Windows环境全程演示如果你的目标是让Excel、Power BI或者其他Windows桌面程序访问MySQL就需要装Connector/ODBC驱动。这一节按照Windows环境来走把每一步该点什么说清楚。4.1 下载ODBC驱动的版本选择同样是访问 dev.mysql.com/downloads/connector/odbc/ 页面。页面上会列出当前版本比如8.0系列。下载时重点看两个选项第一个是操作系统位数Windows下区分32位和64位安装包。这个不是随便选的要看调用ODBC的程序是32位还是64位。Excel如果装的是32位版本那就必须装32位的ODBC驱动64位的Excel对应64位驱动。混搭的情况下数据源管理器和驱动经常互相看不见这个坑非常经典。第二个是安装包类型Windows平台一般给MSI安装包下载 .msi 文件即可。页面可能还会提供ZIP压缩包版那个主要给免安装部署用普通用户直接MSI更省事。4.2 安装与注册双击MSI文件一路Next。安装过程中可以自定义安装路径但除非有必要保持默认就行。装完不会有任何图标出现在桌面它只是在系统里注册了ODBC驱动需要通过数据源管理器才能看到。打开数据源管理器的方法Windows搜索栏输入“ODBC数据源”就能找到。注意系统里可能同时存在两个ODBC数据源32位和ODBC数据源64位。打开的时候要跟自己装的驱动位数对上。如果你装的是32位驱动必须打开32位的数据源管理器不然列表里找不到这个驱动。我遇到过一次很典型的情况装了64位MySQL ODBC驱动但公司的报表系统是32位的结果驱动列表里什么都看不到排查了半天才发现位数不匹配。4.3 添加DSN数据源确认驱动出现在列表里之后点“添加”Add会看到“MySQL ODBC 8.0 Unicode Driver”这样的条目。选择它填写连接参数Data Source Name数据源名称给这个连接起个名字比如 MyLocalDB后面程序里引用就用这个名字。Description备注可留空。TCP/IP ServerMySQL服务端地址本机填 localhost 或 127.0.0.1。Port默认3306。User / Password数据库账号密码。Database下拉选择要连接的数据库也可以先不填。填完可以点“Test”按钮测试连通性。如果报错先去排查MySQL服务是否启动、端口是否被占用、账号密码是否正确、MySQL是否允许远程连接。Test通过后点OK保存DSN就创建好了。如果应用程序不支持DSN也可以用连接字符串直接连接不需要事先配置数据源。典型的字符串如下Driver{MySQL ODBC 8.0 Unicode Driver};Serverlocalhost;Databasetestdb;Userroot;Password123456;Option3;这种写法在代码里直接使用适合快速测试也适合部署时不需要在每台机器上手动添加DSN的场景。4.4 用ODBC连接Excel的实操示例在Excel里选择“数据”选项卡 - “获取数据” - “从其他源” - “从ODBC”然后选择刚才创建的DSN名称输入账号密码就能看到数据库表点导入即可。这是Excel连接MySQL最常用的一条路。需要注意如果Excel提示找不到数据源先去看一下Excel进程是32位还是64位。在Excel的“关于”对话框里能看到版本信息通常带有“64位”字样。根据这个信息去重新安装对应位数的ODBC驱动问题一般就解决了。5. 连接测试与高频报错把问题消灭在配置阶段配置完驱动不代表万事大吉。连接报错是每个人都会遇到的事这里直接给出一套快速验证方法以及最常见的报错原因和处理方案。5.1 JDBC连接测试代码下载并引入jar包后建议先写一个极简的测试程序确认环境没问题再往正式项目里集成。代码非常简单IDEA里新建一个类粘贴进去直接运行import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MySQLConnTest { public static void main(String[] args) throws Exception { String url jdbc:mysql://localhost:3306/testdb?useSSLfalseserverTimezoneAsia/Shanghai; Connection conn DriverManager.getConnection(url, root, 123456); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(SELECT VERSION()); if (rs.next()) { System.out.println(MySQL version: rs.getString(1)); } conn.close(); } }如果输出一行“MySQL version: 8.0.x”说明驱动和连接都没问题。如果报ClassNotFoundException说明jar包没引入成功重新走一遍第3章的引入步骤。如果报SQLException按下面的报错列表排查。5.2 ODBC驱动的命令行测试ODBC配置完之后最直接的验证方式是用Windows自带的odbcad32.exe工具测试就是在数据源管理器里点Test按钮。另外也可以在命令行用PowerShell写点简单的脚本测试但更常用的方式就是直接在DSN配置界面Test省时省力。5.3 高频报错及解决思路报错信息原因处理方式ClassNotFoundException: com.mysql.cj.jdbc.Driverjar包没引入或驱动类名写错检查项目依赖确认8.x用cj5.1.x不用cjUnknown database testdb连接URL里的库名不存在先在MySQL里建库Access denied for user rootlocalhost账号密码错误或账号不允许当前主机登录检查密码确认MySQL用户表权限Public Key Retrieval is not allowedMySQL 8.0的caching_sha2_password认证问题连接URL加 allowPublicKeyRetrievaltrueThe server time zone value is unrecognized服务端时区与驱动不匹配连接URL加 serverTimezoneAsia/ShanghaiCommunications link failure网络不通、端口未开放、MySQL未启动检查服务状态、防火墙、端口3306[08001] 无法连接ODBC连接失败通常是网络或服务端协议问题检查ODBC DSN中Server地址、端口、用户权限针对 MySQL 8.0还有一个隐藏问题值得单独说明8.0默认的密码认证插件是 caching_sha2_password。JDBC 8.x驱动能正常处理这种加密方式但一些老版本驱动或客户端工具就不行。如果连不上并报出加密相关的错误可以通过修改用户认证方式解决ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 123456; FLUSH PRIVILEGES;这种方式适合老工具兼容的情况。新开发的系统个人建议还是尽量保留默认的 caching_sha2_password安全性和生态兼容性都在变好非要切回老认证方式不是长久之计。5.4 驱动版本与服务端版本的匹配原则再强调一次驱动版本的选择逻辑先看服务端版本再看项目运行环境。MySQL 5.7服务端可用8.x驱动连接但某些新特性不会被触发MySQL 8.0服务端用5.1.x驱动连接密码认证几乎必出问题。一个比较稳妥的建议是新项目一律使用Connector/J 8.x老项目如果用的是5.1.x驱动且运行正常就没必要为了升级而升级。ODBC驱动同理8.0版本的Connector/ODBC既能连MySQL 5.7也能连MySQL 8.0但连接MySQL 5.7时有些新认证选项需要使用旧协议配置DSN时可能要勾选“Enable Cleartext Authentication Plugin”。如果遇到认证失败可以在DSN界面的“Advanced”选项卡里调整。6. 一些额外的经验从下载到上线的细节最后分享一下几次实际部署中积累的经验这些内容在官方文档里不一定找得到但确实能帮你避开不少麻烦。第一下载驱动的路径最好固定保存并且保留版本备份。很多人一段时间后重新打开项目发现原来下载的jar包找不到了又从官网重新下载。如果MySQL服务端版本升级过新旧驱动混用很容易出问题。建议在项目根目录放一个 lib/drivers 文件夹把驱动jar包按版本名归档。第二Maven项目里引入外部第三方jar包时最关键的坑是依赖scope和optional设置。手动通过 install-file 安装到本地仓库虽然能用但团队协作时每个成员都要在本地执行一次否则别人拉代码跑不起项目。如果你在意团队协作效率还是尽量找官方仓库上有坐标的版本别走本地安装这条路线。第三ODBC连接字符串里的 Option3 这个参数默认很好用它表示启用“使用压缩协议”和“忽略数据库名大小写”等组合选项。不过选项值在不同驱动版本里可能有细微差别如果出现奇怪的表现在数据类型有关的问题可以查一下官方文档中Options参数的完整定义不要盲目照抄。第四写连接URL时不要偷懒省略多余参数尤其不要在生产环境省略SSL配置。开发环境下 useSSLfalse 能减少证书问题但生产环境强烈建议配置SSL或者至少用数据库代理提供加密连接。驱动本身支持不用白不用。最后小结一下动手顺序确定你的程序语言和工具类型 - 从MySQL官网选择对应驱动 - 下载后优先校验文件完整性 - 正确引入到项目或系统 - 用最小化测试验证连接 - 按报错信息修正配置。这条流程走通不管你是Java后端还是Excel数据分析师基本都能独立搞定MySQL驱动相关的所有问题。
RELATED

相关推荐

PHP 8.4新特性解析与性能优化指南

PHP 8.4新特性解析与性能优化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/12 12:13:13
SSM框架搭建二手车平台:从web.xml到JSON接口的完整实践

SSM框架搭建二手车平台:从web.xml到JSON接口的完整实践

简介:本资源是一套完整的基于SSM框架的二手车交易平台毕业设计项目,面向Java初学者及高校计算机专业本科生,解决课程设计、毕设选题与Web开发实战能力提升的实际需求。项目采用SpringSpringMVCMyBatis主流整合架构,结合JSP前端页面…

📅 2026/9/12 12:13:13
独立开发者实战:技术选型与产品开发经验分享

独立开发者实战:技术选型与产品开发经验分享

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/12 12:13:13
MORE NEWS

更多资讯

📰

wezterm 键位绑定指南:用 `ActivateWindowRelativeNoWrap(delta)` 实现多窗口顺序切换

wezterm 键位绑定指南:用 ActivateWindowRelativeNoWrap(delta) 实现多窗口顺序切换 【免费下载链接】wezterm A GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust 项目地址: https://gitcode.com/GitH…

📰

Markdown技术写作指南:从语法到高效工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

LlamaIndex ReAct Agent 系统提示模板(System Header Template)深度解析与自定义指南

LlamaIndex ReAct Agent 系统提示模板(System Header Template)深度解析与自定义指南 【免费下载链接】llama_index LlamaIndex is the document processing platform for AI 项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index 导读…

📰

.NET独立包部署原理与Java环境配置对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

SpringBoot+Vue3驾校预约管理系统架构设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

团子翻译器单元测试覆盖率:代码质量保障措施

团子翻译器单元测试覆盖率:代码质量保障措施 引言:OCR翻译器的质量痛点与解决方案 你是否曾遇到过翻译器识别 accuracy(准确率)忽高忽低?粘贴的日文文本总是出现乱码?图片翻译结果残缺不全?作…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬