ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DataGrip 驱动包配置全指南:MySQL、Oracle、MongoDB 连接避坑

DataGrip 驱动包配置全指南:MySQL、Oracle、MongoDB 连接避坑 简介这份资源是面向使用 DataGrip 进行多数据库开发的工程师与运维人员的离线驱动包集合主要解决 Oracle、MySQL、MongoDB、PostgreSQL、SQL Server 等数据库在无网络或内网环境下驱动缺失、连接失败的问题。压缩包共 121 个文件以 27 个 jar 驱动包、22 个 pom 与 repositories 依赖描述文件、42 个 sha1 校验文件及若干 txt、xml 配置说明为主整体约 90.07MB覆盖 ojdbc、mysql-connector-java、mongo-jdbc-standalone 等常用驱动版本。使用时解压覆盖 DataGrip 配置目录下的 jdbc-drivers 文件夹并重启即可生效省去逐一下载与手动配置的繁琐。目前已有 1117 人学习下载适合需要快速搭建本地或离线数据库连接环境的中高级开发者参考使用。1. 驱动包这件事为什么总在 DataGrip 里卡住DataGrip 连接 Oracle、MongoDB、MySQL 等数据库时真正让人抓狂的往往不是 SQL 写不对而是驱动包这一步先翻车。你新建一个数据源填好主机、端口、库名、账号密码点 Test Connection转圈半天弹出一句“Driver files are not downloaded”或者“No suitable driver found”。这不是玄学是 DataGrip 的驱动管理机制在起作用它默认只内置了极少数驱动绝大多数数据库的 JDBC 驱动需要你在首次连接时手动下载或者提前把 jar 包准备好。这篇笔记面向的是日常要在多种数据库之间切换的开发者、数据分析师和运维同学。你可能同时维护着 MySQL 的业务库、Oracle 的历史库、MongoDB 的文档库甚至还有 PostgreSQL、SQL Server、Redis。每换一台机器、每重装一次 IDE驱动就要重新折腾一遍。把常用驱动包集合整理清楚知道每个驱动从哪来、放哪、怎么配能省下大量重复劳动。下面按“先搞懂机制再动手配最后避坑”的顺序讲透。2. 先搞懂 DataGrip 的驱动管理机制为什么不能直接复制 jar 就完事2.1 驱动配置存在哪和项目无关DataGrip 的驱动配置是 IDE 级别的不跟着项目走。它把驱动定义和下载的 jar 包放在用户配置目录下Windows 一般在%APPDATA%\JetBrains\DataGrip版本\jdbc-driversmacOS 在~/Library/Application Support/JetBrains/DataGrip版本/jdbc-driversLinux 在~/.config/JetBrains/DataGrip版本/jdbc-drivers。这个目录里按驱动名分子目录存放 jarDataGrip 启动时扫描这些目录把可用的驱动类注册进来。理解这一点很关键你在 A 机器上配好的驱动不会自动同步到 B 机器除非你手动拷贝整个jdbc-drivers目录或者用 IDE 的配置同步功能。很多同学换了电脑发现连不上就是因为驱动 jar 没跟过来。2.2 内置驱动和自定义驱动的区别DataGrip 对 MySQL、PostgreSQL 这类主流库内置了驱动定义你点 Test Connection 时它会提示下载下载完就能用。但 Oracle、MongoDB 这类内置的要么版本旧要么需要额外配置。Oracle 的 JDBC 驱动因为授权原因DataGrip 不能直接帮你下载必须你自己去 Oracle 官网拿ojdbc8.jar或ojdbc11.jar。MongoDB 更特殊DataGrip 用的是 MongoDB JDBC 驱动不是官方 MongoDB Java Driver两者不是一回事拿错了连不上。自定义驱动的做法是在 Database 工具窗口点→ Driver新建一个驱动定义指定驱动类名和 jar 包路径。这样即使内置驱动不好用你也能自己接管。2.3 驱动类名和 URL 模板必须对得上每个 JDBC 驱动都有一个主类名DataGrip 靠它来加载。填错了就是ClassNotFoundException。常见对应关系如下数据库驱动类名URL 模板MySQLcom.mysql.cj.jdbc.Driverjdbc:mysql://host:3306/dbOracleoracle.jdbc.OracleDriverjdbc:oracle:thin:host:1521/serviceMongoDBcom.dbschema.MongoJdbcDriverjdbc:mongodb://host:27017/dbPostgreSQLorg.postgresql.Driverjdbc:postgresql://host:5432/dbSQL Servercom.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver://host:1433;databaseNamedb注意 MongoDB 那一行类名是com.dbschema.MongoJdbcDriver这是第三方 JDBC 桥接驱动不是 MongoDB 官方的com.mongodb.MongoClient。很多人在这里踩坑拿了官方 Java Driver 的 jar 放进去DataGrip 根本不认。3. 把常用驱动包一次性备齐下载、存放与版本选择3.1 各数据库驱动包的获取渠道驱动包不要随便在网上找来源不可靠的 jar 有安全风险。优先从官方或可信渠道拿MySQLMySQL 官方提供mysql-connector-jMaven 中央仓库也有坐标com.mysql:mysql-connector-j。OracleOracle 官网的 JDBC 下载页选对应 JDK 版本的ojdbc8.jarJDK 8或ojdbc11.jarJDK 11。MongoDBDataGrip 内置的 MongoDB 驱动来自第三方 JDBC 桥接项目通常在 DataGrip 首次连接时自动下载也可以从 Maven 仓库找com.dbschema:MongoJdbcDriver。PostgreSQLorg.postgresql:postgresqlMaven 中央仓库直接拿。SQL Servercom.microsoft.sqlserver:mssql-jdbc。如果你用 Maven 或 Gradle 管理项目可以直接从本地仓库拷贝对应的 jar。没有构建工具的话去 Maven 中央仓库网页搜坐标下载 jar 文件即可。3.2 统一存放目录方便迁移我一般会在用户目录下建一个jdbc-drivers文件夹把所有常用 jar 集中放然后在 DataGrip 里逐个驱动指向这个目录。这样换机器时整个文件夹拷走重新指定路径就行不用一个个重新下载。# 在用户目录下创建统一驱动存放目录 mkdir -p ~/jdbc-drivers # 把下载好的 jar 包复制进去按数据库命名方便识别 cp ~/Downloads/mysql-connector-j-8.0.33.jar ~/jdbc-drivers/ cp ~/Downloads/ojdbc8.jar ~/jdbc-drivers/ cp ~/Downloads/postgresql-42.6.0.jar ~/jdbc-drivers/ cp ~/Downloads/mssql-jdbc-12.4.2.jre11.jar ~/jdbc-drivers/ # 查看目录内容确认文件都在 ls -lh ~/jdbc-drivers/这段命令做三件事建目录、拷 jar、列清单。-p保证目录已存在时不报错-lh让文件大小可读。执行完你应该能看到几个 jar 文件大小从几 MB 到十几 MB 不等。如果某个文件是 0 字节说明下载失败重新下。3.3 版本选择别盲目追新驱动版本和数据库服务端版本、JDK 版本都有兼容关系。MySQL 8.x 服务端配mysql-connector-j8.x 驱动没问题但如果你还在连 MySQL 5.7用 8.x 驱动一般也能连只是某些旧特性可能报错。Oracle 的ojdbc8对应 JDK 8ojdbc11对应 JDK 11 及以上DataGrip 自带的 JRE 版本决定了你能用哪个。MongoDB JDBC 驱动版本要和 MongoDB 服务端版本大致匹配太旧的驱动连新服务端可能握手失败。一个稳妥做法先看 DataGrip 内置驱动推荐的版本如果内置版本能用就别换。内置版本连不上时再考虑手动换版本每次只换一个变量方便定位问题。4. 在 DataGrip 里逐个配通MySQL、Oracle、MongoDB 的实操步骤4.1 MySQL最顺滑的一个但时区坑要提前填MySQL 驱动是 DataGrip 内置支持最好的。新建数据源选 MySQL填 Host、Port、Database、User、Password如果驱动没下载界面会提示 Download missing driver files点一下等下载完即可。但很多人连上后执行select now()发现时间不对这是时区参数没配。-- 连接成功后先查时区设置 SHOW VARIABLES LIKE %time_zone%; -- 如果显示 SYSTEM 且和本地不一致可以在驱动属性里加参数 -- 在 DataGrip 的 Advanced 标签页找到 serverTimezone 或 connectionTimeZone -- 填入 Asia/ShanghaiMySQL 8.x 驱动默认用connectionTimeZone参数旧版用serverTimezone。在 DataGrip 数据源配置的 Advanced 标签页里找到对应属性填上。如果不想改驱动属性也可以在 URL 里直接带jdbc:mysql://host:3306/db?connectionTimeZoneAsia/Shanghai。改完重新 Test Connection再查时区确认。4.2 Oracle手动指定 jar 包和驱动类Oracle 是手动配置的典型。新建数据源选 OracleDataGrip 会提示你指定驱动文件。点 Driver 旁边的设置图标进入驱动配置界面在 Driver files 里点选你下载的ojdbc8.jar。然后确认 Class 是oracle.jdbc.OracleDriver。URL 模板填jdbc:oracle:thin:host:1521/service_name注意是 service name 不是 SID除非你的库用的是 SID那就换成jdbc:oracle:thin:host:1521:SID。# 验证 ojdbc8.jar 里的驱动类是否存在 unzip -l ~/jdbc-drivers/ojdbc8.jar | grep OracleDriver # 预期输出类似 # oracle/jdbc/OracleDriver.class这个命令用unzip -l列出 jar 内容grep过滤出驱动类。如果没输出说明 jar 不对或者下载不完整。确认类存在后在 DataGrip 里指定这个 jarTest Connection 应该就能过。Oracle 连接慢是常态第一次连可能要等十几秒别急着判定失败。4.3 MongoDB用对 JDBC 桥接驱动MongoDB 在 DataGrip 里走的是 JDBC 桥接方案。新建数据源选 MongoDBDataGrip 会自动下载它需要的 JDBC 驱动。如果你手动配驱动类名是com.dbschema.MongoJdbcDriverjar 包名通常类似MongoJdbcDriver-5.x.jar。URL 格式是jdbc:mongodb://host:27017/db。// 连接成功后在 DataGrip 的查询控制台里可以这样查 // 注意 MongoDB 在 DataGrip 里用的是类 SQL 语法不是原生 mongosh 语法 db.getCollection(users).find({ age: { $gt: 18 } }) // 或者用 SQL 风格 SELECT * FROM users WHERE age 18DataGrip 对 MongoDB 的支持是只读为主的写入操作有限制。如果你需要完整的 MongoDB 操作能力建议用专门的 MongoDB 客户端DataGrip 适合做查询和浏览。这一点要提前有预期别指望在 DataGrip 里跑复杂的聚合管道。4.4 驱动配置的导出与迁移配好一堆驱动后可以把配置导出换机器时导入。DataGrip 支持导出数据源配置File → Export Settings勾选 Database 相关项导出成 zip。新机器上 File → Import Settings 导入。但注意导出的配置里不包含驱动 jar 文件本身jar 还是要手动拷过去然后在驱动配置里重新指向路径。所以最稳的迁移方式是拷jdbc-drivers目录 导出配置 导入后检查路径。5. 避坑与排查驱动连不上时先看这五条5.1 报“No suitable driver found”但 jar 明明在现象驱动文件已经指定Test Connection 还是报找不到驱动。原因通常是驱动类名填错或者 jar 包版本和类名不匹配。比如 MySQL 旧驱动类名是com.mysql.jdbc.Driver新驱动是com.mysql.cj.jdbc.Driver填错就加载不了。解决打开驱动配置界面确认 Class 字段和 jar 包实际包含的类一致用前面unzip -l的方法验证。5.2 Oracle 连接报“ORA-12505”或“ORA-12514”现象网络能通但连接被拒。原因URL 里 service name 和 SID 用混了。ORA-12505 通常是 SID 不对ORA-12514 是 service name 不对。解决找 DBA 确认库用的是 SID 还是 service nameSID 用jdbc:oracle:thin:host:1521:SIDservice name 用jdbc:oracle:thin:host:1521/service。不确定就两个都试报错信息会告诉你哪个不对。5.3 MongoDB 驱动下载卡住或超时现象首次连接 MongoDB 时DataGrip 下载驱动进度条卡住。原因网络到 Maven 仓库不稳定或者代理设置有问题。解决在 DataGrip 的 Settings → HTTP Proxy 里检查代理配置或者手动下载 MongoDB JDBC 驱动 jar在驱动配置里手动指定跳过自动下载。手动指定后记得把驱动类名改成com.dbschema.MongoJdbcDriver。5.4 驱动版本和 JDK 版本不兼容现象Test Connection 报UnsupportedClassVersionError。原因驱动 jar 是用更高版本 JDK 编译的DataGrip 内置 JRE 版本低加载不了。解决换用低版本 JDK 编译的驱动比如 Oracle 从ojdbc11换ojdbc8MySQL 换低版本 connector。或者升级 DataGrip 到自带更高 JRE 的版本。5.5 多个驱动 jar 冲突现象之前能连的库加了新驱动后突然连不上。原因不同驱动 jar 里有同名类类加载器加载了错误的版本。解决在驱动配置里每个驱动只保留自己需要的 jar不要把一堆 jar 全塞进同一个驱动定义。DataGrip 的驱动配置是按驱动隔离的别图省事混在一起。6. 进阶把驱动集合做成可复用的团队资产一个人配驱动是小事一个团队每人配一遍就是浪费。我后来习惯把常用驱动包和配置说明整理成一个内部仓库新同学入职直接拉下来按说明导入十分钟搞定。具体做法是建一个目录放jdbc-drivers文件夹、一份README.md写清楚每个驱动的来源和版本、一份导出的 DataGrip 配置 zip。README 里重点写三件事每个 jar 对应哪个数据库、驱动类名是什么、URL 模板长什么样。# 团队驱动仓库的目录结构示例 jdbc-drivers-repo/ ├── README.md ├── drivers/ │ ├── mysql-connector-j-8.0.33.jar │ ├── ojdbc8.jar │ ├── postgresql-42.6.0.jar │ └── mssql-jdbc-12.4.2.jre11.jar └── datagrip-settings.zip新同学拿到后把drivers目录拷到本地导入datagrip-settings.zip然后在 DataGrip 里逐个检查驱动路径把路径改成自己本地的drivers目录。这一步不能省因为导出的配置里路径是写死的换机器必须改。验证驱动是否全部可用可以写一个简单的检查清单MySQL 执行select 1Oracle 执行select 1 from dualMongoDB 执行db.getCollectionNames()PostgreSQL 执行select 1SQL Server 执行select 1。每个都返回结果说明驱动集合是完整的。还有一个技巧DataGrip 的驱动配置支持“复制驱动定义”。如果你已经配好一个 MySQL 驱动想再建一个连不同环境的 MySQL不用重新配驱动直接复制数据源改连接参数即可驱动定义是共享的。这样团队里只需要维护一份驱动定义多个数据源复用。我自己的习惯是每季度检查一次驱动版本看看有没有安全更新或兼容性修复。驱动这东西能用就别乱动但该更新时也别拖。上次一个 Oracle 驱动版本太旧连新库时字符集处理有问题查出来的中文全是问号换了驱动才好。这种坑不遇到不知道遇到了记下来下次就能提前避开。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进