mysql-connector-j(8.0 及以上版本,包括你使用的 8.3.0)并非采用 GPL 许可证,因此你在项目中引入该依赖时,不需要遵循 GPL 的开源要求(比如开源你的整个项目)

<dependency>

<groupId>com.mysql</groupId>

<artifactId>mysql-connector-j</artifactId>

<version>8.3.0</version>

<scope>runtime</scope>

</dependency>

核心结论:不是遵循 GPL 规范,而是GPLv2 协议+ Universal FOSS Exception。

mysql-connector-j(开源版本) 明确使用 GPLv2 协议,非 GPL 许可,无 GPL "传染性" 风险MySQL。以下是详细说明与合规建议:


一、 GPL v2依赖:mysql-connector-j

  1. mysql-connector-java:8.3.0 遵循GPLv2 + Universal FOSS Exception,而非 Apache 协议;
  2. Universal FOSS Exception 的关键补充 :这个例外是对 GPLv2 的「松绑」:允许你通过 JDBC 接口动态调用驱动(比如在 Spring Boot 项目中连接 MySQL),而无需将你的商业应用代码开源 ------ 这是官方为了降低开发者合规成本的核心设计。例外仅适用于「调用驱动」,不适用于「修改驱动源码后闭源分发」(这一点和纯 Apache 协议仍有本质区别)。

二、非 GPL 依赖的许可分类

表格

许可协议 代表依赖 核心特点
Apache 2.0 Spring 全家桶、Kafka、Netty、HikariCP 商用友好,无 "传染性",专利授权明确
MIT Lettuce、SLF4J、Lombok 极致宽松,可闭源商用,仅需保留版权声明
BSD protobuf-java、zstd-jni 类似 MIT,部分版本要求保留广告声明
EPL 2.0 / LGPL 2.1 Logback、JSqlParser 弱 "传染性",仅修改部分需开源
CDDL 1.1 stax-ex 文件级 Copyleft,不影响整体项目

三、合规建议(针对 mysql-connector-j)

  1. 闭源商业项目:优先选择商业许可版本,或替换为 MariaDB Connector/J(LGPL 许可,无 GPL 约束)。
  2. 开源项目:直接使用 GPLv2 版本,需在文档中声明依赖的 GPL 许可。
  3. 动态链接场景:保留 EXCEPTIONS-CONNECTOR-J 文件,确保仅通过 JDBC 接口调用,不修改驱动源码。

四、快速自查清单

  • 检查 pom.xml 或 build.gradle 中 mysql-connector-j 的版本与许可类型;
  • 确认是否修改过驱动源码,若有则需遵循 GPLv2 开源衍生代码;
  • 闭源项目建议联系 Oracle 购买商业许可,或更换非 GPL 驱动。
相关推荐
名字还没想好☜3 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl3 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
Dxy12393102164 小时前
Python 如何使用 MySQL 的事务
python·mysql
marvelyu8 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算8 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd2005728 小时前
海洋微生物数据库
数据库·宏基因组
海上小飞龙9 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
xiaoye-duck9 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql
Hammer_Hans9 小时前
DFT笔记98
java·开发语言·数据库
迪康Defender10 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他