首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 與 PHP 授權衝突破冰:FOSS License Exception 解決 GPL/LGPL 兼容性危機

     編輯:MySQL 資料庫相關知識

背景:LAMP 棟樑面臨拆分風險

  • LAMP:Linux + Apache + MySQL + PHP,開源 Web 開發事實標準
  • 衝突點:MySQL 4.0+ 將客戶端庫從 LGPL 改為 GPL,導致 PHP (PHP License、非 GPL 兼容) 無法合法鏈接 libmysqlclient
  • 後果:PHP 5.0+ 強制移除 MySQL 原生擴展,改用 SQLite/PDO 抽象層,Red Hat 等發行版被迫重新打包

授權知識速查

授權核心要求典型項目
GPL (v2/v3)衍生作品必須同樣 GPL,傳播性強Linux Kernel、MySQL Server、Git
LGPL允許專有軟件**動態鏈接**庫,不感染主程序glibc、舊版 libmysqlclient
PHP LicenseBSD 風格,允許專有衍生,但要求保留版權聲明PHP

**GPL + PHP License = 不兼容**:PHP 非 GPL,鏈接 GPL 庫構成衍生作品,違反 GPL 第 2 條。

MySQL 破局:FOSS License Exception (2004.06)

「允許以 GPL 之外的**其他開源授權** (如 PHP License、Apache License、BSD、MIT) 分發的項目,合法鏈接 MySQL 客戶端庫。」

  • 適用對象:自由/開源軟件 (FOSS) 專案
  • 不適用:專有/商業閉源軟件 (仍需購買商業授權)
  • 法律依據:MySQL AB 擁有**全部代碼版權** (CLAs),有權添加額外授權例外

雙重授權商業模式深度解析

**關鍵前提**:單一實體擁有全部版權 (MySQL AB → Sun → Oracle),才能靈活切換雙軌。Linux 因版權分散無法雙授權。

衍生影響與後續演進

  • MariaDB 分叉 (2009):Monty Widenius 擔心 Oracle 收購後關閉社區,創建 MariaDB Foundation 守護 GPL 純淨性
  • MySQL 8.0 客戶端庫授權調整:libmysqlclient 改為 **GPL with Exception** (類似 LGPL 但更明確),mysqlclient (MariaDB) 為 LGPL
  • PHP 現狀:mysqli、pdo_mysql 使用 mysqlnd (MySQL Native Driver,**PHP 專案自研、PHP License**),徹底擺脫授權糾葛

給開源專案的授權選型建議

  1. 庫/框架**:優先 **MIT/Apache-2.0/BSD-3** (最大兼容)、次 **LGPL** (保護庫代碼)、慎用 **GPL** (限制採用)
  2. 應用/服務**:**GPL/AGPL** (保護社區貢獻)、或 **BSL/SSPL** (防雲廠商免費托管)
  3. 雙授權**:需 **CLA (貢獻者授權協議)** 確保版權集中,法律成本高,適合商業公司主導項目
  4. 依賴審計**:CI 集成 license-checker/FOSSology,禁止引入不兼容授權依賴

結語

MySQL + PHP 的授權糾葛是開源史上**版權集中雙授權模式**與**社區生態兼容性**博弈的經典案例。FOSS Exception 以「例外條款」化解僵局,但也暴露了 GPL 傳播性在現代微服務/雲原生架構下的適配困境。**授權選型不是法律遊戲,而是生態戰略**——決定了誰能用、誰願貢獻、誰會分叉、誰能商業化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
軌道授權目標用戶收入來源
社區GPL + FOSS Exception開源項目、學習者、非商業用途零直接收入,建立生態、品牌、人才庫
企業商業授權 (Proprietary)ISV 嵌入、SaaS、不想開源的商業產品訂閱費、支持合同、插件授權 (TDE、審計、防火牆)