MySQL是开源软件,但开源不意味着免费 ,开源软件的使用应遵循该软件提供的使用授权许可。MySQL的授权许可是英文的,而且一直以来没有权威的中文译本,所以很多人都不清楚其中的细节。

最近我在做一些ASP.NET+MySQL的应用,特地对MySQL的授权许可进行了研究。

(以下说明,如有错误,欢迎指正)

使用MySQL作为数据库的应用是否会“被GPL”

MySQL开源软件(包括MySQL社区版数据库服务器、驱动程序和链接库等)是在GPL许可下提供的。GPL(General Public License) 是一种开源许可,其大概的内容是:只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品也必须采用GPL协议,即必须也开源。

应 用程序是否也必须采用GPL进行开源,是由如何去使用MySQL决定的。如果把MySQL数据库内嵌到应用程序中,成为了应用程序内部的一部分,则整个应 用程序都必须遵守GPL的规定。而对于大多数Web应用,数据库并不是跟应用程序绑在一起的,数据库跟应用程序是产品间相互协作的关系,这种情况就不在 GPL的约束范围之内。

先别高兴地太早,即使应用程序跟MySQL是相互独立的,但要连接到MySQL,必须使用特定的驱动程序 (Driver)或连接器(Connector),一般又将其统称为客户端类库。这些类库基本上是由MySQL在GPL许可下提供的,而且不可避免地会成 为应用程序的一部分。这样一来,我们的应用程序还是会“被GPL”吗?事实上,MySQL还准备了一份专门针对客户端类库的《FOSS许可例外 》,其大概内容是:只要应用程序中没有使用其他在GPL许可下的开源产品,那么此应用程序就可以采用“FOSS许可列表(包含MIT、BSD、LGPL等常用开源许可)”中的协议进行开源。但是,如果应用程序不是开源的,而且需要进行分发,就必须购买商业许可了。

另外,GPL只限制了对外分发的软件 ,也就是说,如果该软件只在内部使用,无论开源不开源都管不了你。

是否可以免费使用MySQL

根据MySQL官方的商业许可 的相关说明,在两种情况下,可以免费使用MySQL:

  1. 应用程序是在GPL许可下发布的;
  2. 应用程序不用于分发。

非营利组织可以申请免费商业许可,但MySQL表示会carefully considered,估计这种申请不是那么容易通过的。

可见,是否可以免费使用MySQL跟用户是否商业组织没有太大关系,主要还是看产品是不是GPL的、是否分发。