MariaDB FAQ(Part 3)

许可证问题(MariaDB、插件等)

在这里您可以找到对许可MariaDB / MySQL /插件等问题的答案。

许可证FAQ

在本文中,我们将解释MariaDB和MySQL服务器和客户端库许可证如何影响其他应用程序,您可以采取哪些措施来遵守GPL或避免改变您的应用程序许可为GPL。

下面我们谈论MariaDB, 该指南也普遍适用于MySQL,最起码是适用于当前最新稳定的5.1.55版本。

MariaDB使用的许可证

MariaDB在GPL v2版本下发布的。

MariaDB的客户端库也遵循GPL v2版本。但有FLOSS附加条款,允许您把它与其他大多数开源软件结合,与它们的许可证不会发生冲突,即使该许可证和GPL不兼容。

MySQL5.1.55之前版本的C的客户端库也有相同FLOSS附加条款,但在MySQL 5.1.55的

异常文件和所有对它的引用都被oracle移掉。

最初Mysql客户端库是在LGPL下批准的。这允许您与任何应用程序自由发行MySQL客户端库

内部使用是自由的

GPL许可证只会影响您分发给其他人的代码。

在一个组织内部使用则是完全自由,不受任何条件约束的。不存在所谓的“内部发布”会强制您必须对您的代码也使用GPL许可证。

连接到一个在后台运行MariaDB远程服务(或任何其它GPL软件)是自由的。

对于内部项目,您自己的拥有所有版权, 使用GPL软件基本上是没有风险的。可用于您的防御措施理由是:如果软件成为GPL发行的一部分,作为版权持有者的您可以立即恢复自己的部分到它原来的版权。没有人有权利要求您公开或重新发布您的代码到您的组织之外, 即使您内部发布它链到GPL软件!

与MariaDB连接器/客户端一起发布应用程序

此部分主要介绍那些想与他们的应用程序一起发布MariaDB客户端库的代码,而不是服务器代码的情况。

自由软件/开源应用程序

如果您的应用程序是自由/开源软件和使用FLOSS附加条款,列出中的一种许可,客户端库的GPL不影响您的应用程序。

请注意:这样做您需要使用有一个FLOSS附加条款客户端。既可以是MariaDB客户端也可以是MySQL5.1.55之前版本的客户端

使用一个不遵从GPL的连接器

如果使用的是一个不遵从GPL的连接器,则您仅仅受连接器的许可证约束。一些例子:

上面有许可证,允许您自由使用它们,不必受GPL约束

使用独立框架数据源

如果您使用的是一个框架,该框架允许您动态连接到不同的RDBMS,框架加载任何GPL模块将不会影响应用程序。这样的框架:

  • ODBC (Open Database Connectivity)
  • JDBC (Java Database connectivity)
  • Perl

在这种情况下,遵循GPL的MySQL客户端库不会影响您应用程序的原因是:GPL的客户端支持的标准接口只不过是在众多可选组件中选择了其中一种。您的应用程序也可以轻易地使用框架来连接到一个RDBMS,除了MariaDB或MySQL还可以是其它RDBMS。

任何软件都可以连接到GPL v2许可的MySQL ODBC连接器,而不需要软件遵循GPL。因为有ODBC管理器这个综合管理软件,ODBC管理器是在遵循GPL的 MySQL ODBC连接器和您的软件之间。如果任何逻辑要求软件与MySQL ODBC连接器的接口是GPL,那么也适用于ODBC管理器本身。无论是在Windows还是在Linux上,然而ODBC管理器不是遵循GPL。所以,没有人被允许使用MySQL ODBC驱动器做任何事情。

使用MariaDB的C客户端

如果您使用的是MariaDB C客户端且没有被FLOSS附加条款覆盖,那么您有以下选择:

  • 改变您的应用程序成GPL或GPL兼容许可证。
  • 改变您的应用程序,使用一种上面提到免费连接器或框架。
  • 改用最初LGPL的MySQL 客户端库
  • 改用 libdrizzle客户端库
  • 努力完善在建的LGPL/BSD客户端库。
  • 从Oracle购买一个使用MySQL客户端库的许可证。
  • 联系SkySQL 销售,获取没有遵从GPL的Mysql其它版本客户端库。

上述也适用于MySQL到MySQL 5.1.54版本。如果您使用的是MySQL 5.1.55或以上版本,您一定要读这个

与MariaDB/MySQL 服务器一起发布专有的应用程序

当把应用程序和MariaDB或MySQL一起发布,您将受到GPL的约束(可以被看作是受一些律师约束),如果有下列的声明适用:

  • 您正在使用GPL代码从MySQL直接链接到您的应用程序(如MySQL GPL客户端库)。
  • 您的应用程序需要MariaDB服务器来一起工作,如果没有MariaDB服务器,应用程序不能启动或功能非常有限

使用前面提到的解决方案之一可以避免客户端库的问题

如果应用程序和许多数据库一起工作,可以在本机或通过使用一个独立框架数据库源,然后就可以自由地发布MariaDB服务器与应用程序,而不受GPL影响。这原因是, MariaDB仅仅是一个可选的,独立的组件在您发布的软件中,并且在 GPL的第二章节明确允许这样做:

“In addition, mere aggregation of another work not based on

the Program with the Program (or with a work based on the Program) on

a volume of a storage or distribution medium does not bring the other

work under the scope of this License.”

为了在其他版权条款下获得Mysql,您也可以选择从Oracle购买MySQL许可证。如果您想以后使用MariaDB代替MySQL,请确保您的许可协议允许您更改MySQL代码!( 在所有情况下应该确保,否则可能会遇到bugs,而Oracle不会修复这些bugs,不允许您修复,也就是说MySQ软件无法为您所用!)

可以向Monty Program Ab要求,申请在您的应用程序更改MariaDB代码的权利。

MySQL 5.1.55 客户端许可证的变化

在MySQL5.1.55的源代码树及其分发本, Oracle删除了含有FLOSS附加条款的EXCEPTIONS-CLIENT文件,所有客户端库代码源文件引用到EXCEPTIONS-CLIENT的文件他们也删除了。

FLOSS附加条款在MySQL网站仍然(至少在2011年2月)可以被找到。

在上面的网站明确指出:FLOSS例外只适用于代码,在代码中用到FLOSS例外和如果删除FLOSS例外的引用,该代码恢复到GPL。

MySQL5.1.55或以后版本对于用户来说进一步增加不确定性:

  • 该网站并没有提及MySQL哪个版本应用FOSS例外。
  • 还不清楚从网站复制许可文本包含到您的应用程序中(按当前法律通告来说,您不能)。这是大多数软件发行版所要求的。
  • 如果FLOSS 附加条款在web站点上改变了,那么它何时生效?
  • 目前尚不清楚FOSS例外适用哪些文件(如果您需要编译和/或修改客户端库,这是很重要的)。
  • 从上面的您可以推断出,当前在下列新情况下是适用的(直到有更多有用的信息):
  • 从MySQL5.1.55开始,默认的MySQL客户端库代码遵从GPL,并且不再有任何FLOSS例外。
  • MySQL客户端库代码仍然有FLOSS附加条款,除了通过网站获得它,oracle可以在任何时间改变它和这些更改将立刻影响任何新发行版本的代码(MySQL的旧版本在发行版本中不包含显式的FLOSS附加条款)。

如果您想安全, 在未来确保您可以继续使用含有FLOSS附加条款的MySQL客户端库而没有“意外”, 您有下列之一选项:

  • 使用MySQL5.1.54客户端库并且从不升级您的客户端到MySQL 5.1.55或以上。
  • 使用MariaDB客户端库,这是MySQL5.1.54的一个分支,它将不会随新的MySQL代码而更新,以确保我们在FLOSS 例外条款下可以继续它。
  • 使用一些其它的MySQL客户端库或使用上面提到的方法来连接到MySQL / MariaDB 。

法律通告

以上文字是由Michael “Monty” Widenius写的,他不是律师,您不该把上面的任何陈述用在所有场景中为“终极真理”。另一方面,这是David和Monty一起决定让MySQL GPL的,也决定和公开宣明许可证的变化背后的意图,这是在本文中有一些有价值的信息

如果这种情况下您想听听其它关于GPL怎么工作的意见,您可以联系Software Freedom Law Center or Free Software Foundation。虽然在这篇文章已经部分说明,但您想要知道更多关于GPL的信息,它们默认转向官方。

MariaDB许可证

MariaDB服务器许可证

MariaDB server在GNU通用公共许可证v2版本下适用的

 GPL 许可证(参照原文)

MariaDB客户许可证

MariaDB客户端附带的FLOSS例外,它允许和大多数Free/Libre及开源项目一起使用,而这些开源项目不是必须遵从GPL发布的应用程序。

FLOSS附加条款(参照原文)

LGPL许可证(参照原文)

与专有软件的链接?

我是团队的管理者,想通过C/MySQL/maria客户端库使用MySQL/MariaDB数据库。

由于Oracle OPA,我宁愿用MariaDB,但是只有一个LGPL客户端可用?我还能做些什么呢?

如果应用程序和遵从GPL的MySQL客户端库连接到一起,并且它们一起随您应用程序发布,您的应用程序也必须遵从GPL发布。

如果您想给您的应用程序为MariaDB或者MySQL添加可选项,和不受GPL的约束,您必须使用一个非gpl客户端库或通用的框架,来访问MariaDB/MySQL,比如ODBC或perlDBD。

目前有两个非gpl客户端库可以使用:

MySQL 3.23 LGPL客户端,这可以和所有MySQL和MariaDB版本工作,只要您运行MariaDB/MySQL启用–old-password选项。

为了让事情简单,我们获取MySQL 3.23.58源码和提取其中libmysql代码,让它容易构建客户端库。您可以在我们的下载页面找到libmysql 3.23.50 LGPL客户端库。这还不是一个完美的解决方案,但是是一个好的起点。请阅读附带的README文件来了解这个库的局限性!

另一种选择是使用Drizzle的BSD客户端库,它可以和Drizzle,MariaDB和MySQL一起工作。

上述两种主要的缺点是您需要重新编译您的应用程序要使用的版本,这些和预处理语句不会与他们一起工作。

我们Monty Program Ab正试图获得资金来(或找到感兴趣的人帮助我们)创建一个新的客户端库,可能采用BSD或LGPL许可成为一个真正的二进制代替现有的MySQL客户端库。

对于这个,我们仍然没有决定将从头重新创建还是以上面其中一个解决方案为基础创建这个。

如果您感兴趣,您可以联系我们,既可以通过maria-developerslists.launchpad.net或askmonty.org 的销售。

什么许可证可以用于插件?

如果我为MariaDB开发和发布一个插件/函数/存储过程, 我可以用什么许可证?我可以用,例如:

  • public domain?
  • GNU AGPL?
  • GPL v3?
  • BSD?

评论

Re: What licences can be used for plugins?

首先,显而易见的是:

  1. public domain is ok.
  2. BSD is ok, as long as it’s not the old (original) BSD with the advertising clause. See http://en.wikipedia.org/wiki/BSD_licences. Old BSD license is rarely used nowadays. A BSD license without advertising clause is fine.

Re: What licences can be used for plugins?

此外,如果您有一个插件,并且和 MySQL / MariaDB一起使用,插件代码至少遵从GPL

LGPL MySQL客户端库3. 23. 58

下载|版本注释

这是LGPL MySQL3.23.58版本的客户端库。这个库可以用来连接到MySQL或MariaDB。

正常情况下,您应该使用标准libmysql客户端库连接到MariaDB / MySQL。您想要利用非GPL客户端库的主要原因是:如果您想和MySQL(提供一些可选特性)一起发布您的非GPL应用程序,但不修改应用程序许可证到GPL。

这代码来自基于MySQL 3.23的LGPLlibmysql客户端库。

以下是主要已知的局限性:

  • 您需要使用该库编译您的应用程序(由于C API使用的结构都略有不同)
  • 您启动MySQ必须使用–old-password选项(因为旧客户端库只支持旧的身份验证)
  • 不能使用预编译语句(作为旧客户端库并不支持这些)
  • 并不是所有客户端的字符集都被支持
  • 它在windows下不能编译 (不应该难以修复,主要是编译器环境的文件丢失)
  • 作为标准libmysql这不是很安全,因为它使用了旧的密码协议。

这个库可以作为一个全面的、最新的LGPL MariaDB客户端库的基础,它(LGPL MariaDB客户端库)是一个二进制用于代替当前的MySQL / MariaDB GPL库。

除了使用这个库为基础,其他选项还有:

  • 从头开始编写一个新的客户端库。
  • 使用Drizzle客户端库为新客户端库基础的库。

Monty Program Ab打算创建一个新的免费的客户端库项目, 二进制兼容旧客户端库。更多的信息参照Monty’s blog

如果想参与开发,您可以在maria-developers邮件列表上讨论。

如果您有兴趣赞助,您可以联系Monty Program.

参考:

Worklog for a new free MariaDB client library

可以和商业包一起分发MariaDB服务器+ LGPL客户端吗?

我阅读很多关于LGPL客户和商业软件包的信息。我明白, 如果使用LGPL客户端版本,我可以使用或连接到MariaDB和MySQL,但我可以一起分发服务器和商业包,却没有受GPL限制和强制我的应用程序是GPL的?

是的,如果您的客户端可以连接到任何其他数据库,是通过一个架构,该架构能连接到另一个数据库或即使没有MySQL/MariaDB,它也能工作。

详细参见: the licensing FAQ

即使上述并非您设置的情况,在大多数情况下,对于和您的应用程序一起分发MySQL/MariaDB,它仍然是合法的。您可以使用Monty Program Ab的表单来获得关于这个更多信息。

有关许可问题

嗨!我是一个新手,请别介意在这里第一次问个问题,但是……

我正在开发和支持一个VB6应用程序,使用ODBC连接到MySQL数据库。数据库对于应用程序是必需的,没有db连接,这个应用程序甚至不能启动。db可以驻留在本地主机或在一个单独的服务器在局域网络或互联网。

我们正在考虑放弃MySQL用其他代替MySQL。我们的应用程序是商业发行和升级,我们都不愿意放弃源代码。目前我们已经为MySQL从Oracle购买了昂贵的商业许可。

我的问题:用MariaDB取代MySQL,我们需要考虑哪些选项?

-请哪种许可证政策?

-ariaDB有商业许可选择吗?

-用ODBC-connection是如何影响许可政策?

http://kb.askmonty.org/en/licensing-faq 已经回答问题了

简单地说:

  • MySQL ODBC的GPL从不影响应用程序。这是因为您的ODBC连接器是一种标准化系统插件,用程序不会直接使用,因为在ODBC管理器的要求下加载的,可以很容易被替换成其他连接器。
  • 如果不和MySQL / MariaDB服务器绑定一起发布您的应用程序,您的应用程序不受GPL约束。
  • 如果您的应用程序与多个数据库工作(如果您使用的是ODBC,这应该是没有影响的),那么您可以和MySQL服务一起自由发布您的应用程序,因为服务器是一个可选的,但不是必需的组件。

所以,您使用的ODBC连接到MySQL。您从Oracle购买的ODBC连接器许可证,而不是MySQL的,确认吗?

有一个连接器的FLOSS(原文错误为FOSS)许可附加条款,但您的产品是商业性的,因此它变得有趣。

您需要一个连接器的许可证,您可以使用MySQL或MariaDB的。如果由于某种原因,您不想为了ODBC连接器给Oracle费用,也许您可以得到另一个别人为您写的连接器?

如果您发送您的详细联系方式到sales@montyprogram.com,或许我们都帮助您。

非嵌入式解决方案的许可证

我们开发软件兼容不同的平台:Microsoft SQL Server,oracle,MySQL。如Oracle收购MySQL,我们喜欢使用MariaDB。由于我们和公共管理客户一起工作,我们需要一个清晰的、简单的许可声明,所以Piblic管理(Piblic Administration)可以证明MariaDB属于RDBMS。我们有两个疑问:

  1. 客户机-服务器解决方案:我们不把MariaDB在我们的非GPL的客户机-服务器软件。我们的客户可以在安装MariaDB在他们自己的服务器上在和ODBC在自己的电脑上。我们的软件可以通过在客户端PC上的ODBC,连接到MariaDB服务器。应用什么许可证?是否需要买入支持合同或者类似的,什么样的价位?
  2. web解决方案:我们不把MariaDB嵌入在我们的非GPL web软件。我们发布.Net 连接器dll,客户可以安装MariaDB在他们自己的服务器上。我们的软件的使用.net连接器连接到MariaDB服务器。应用什么许可证?需要买入支持合同或者类似的,什么样的价位?

评论

在第一种情况下,您不受GPL是因为:

  • 您不是链接遵从 GPL的软件
  • 您的应用程序不需要MariaDB去工作。

事实上,用户可以用GPL的程序像MariaDB与您的应用程序一起使用不存在任何方式限制或执照要求。

在第二种,您不需要发布任何遵从GP的L代码,因位不受GPL任何影响。

注意,多数情况下像您这样将很好,即使与您的应用程序一起发布MySQL/MariaDB连接器和MariaDB。如果您想知道更多。详情见许可FAQ与我联系

从MariaDB可以得到哪些帮助? 有些东西被破坏

在许多情况下, MySQL文档可以使用。MariaDB的新特性在MariaDB versus MySQL页面提到过, 更详细的信息在AskMonty.org的MariaDB类别。

如果手册中的特性说明是不确切的,或者不是您预期的,您可以去相应的knowledge base page(知识库页面)和发表您的疑问。

您可以报告和检查bugs,那些对于MariaDB的bugs在发布平台都是唯一的。MySQL bugs也影响MariaDB应报告给MySQL(reported to MySQL)。

您也可以订阅邮件列表和或加入IRC(IRC)频道与其他MariaDB用户交流。

Monty Program Ab通过全球网络提供商,为MariaDB和所有主要的MySQL版本((从MySQL 3.23开始)提供商业支持。

评论

Re: Can I get help with MariaDB? Something’s broken!

点击链接:http://montyprogram.com/commercial/support

应该是:http://montyprogram.com/support/

从MySQL高版本降级到MariaDB 低版本

痴迷于动态列,我考虑把我们整个安装MySQL5.5/MyISAM(只是几个月前从5.1升级,这本来是显而易见的)降级到MariaDB/MyISAM 5.3。

我想知道是否有任何官方消息关于引擎/表的兼容性和我将必须撤销这一举动。

答:

嗨!

您使用InnoDB吗?文件格式在理论上应该是相同的(MySQL 5.5的InnoDB格式和XtraDB在MariaDB 5.3里的)。但您们历程可能有所不同——我们没有测试过这种降级。

如果只是MyISAM,我认为您不该有太多的问题。

为什么不做这样的一个测试服务器,好让我们知道结果呢?

评论

谢谢您的回答。如我所说,我们正在使用MyISAM。当然,将在实验室的机器上测试,但是仅仅边缘不兼容有如此多的覆盖率,我们有10000 +表横跨许多客户和大量的访问模式。我正在寻找已知的降级或类似的脚本。我想我们不得不独自开始!

MyISAM在MySQL 5.5中和MariaDB 5.3中没有什么改变…MariaDB 5.3有更多增强MyISAM(例如,段索引缓存, 已经在5.2中引入了)。

祝您测试好运,并将任何bugs报告到https://bugs.launchpad.net/maria/+bugs

Hibernate 与MariaDB

您好,

我在Hibernate(/ Spring)的配置文件(XML) 中需要为MariaDB做什么设设置?和MySQL中一样吗?有URL链接吗、JDBC驱动程序和Hibernate同源语是可以使用的?

提前谢谢!

您应该使用为MySQ相同的设置,即MariaDB是100%兼容。

您可以找到一篇关于MySQL和Hibernate的文章,在这里: http://www.javabeat.net/tips/112-configure-mysql-database-with-hibernate-mappi.html

怎样为MariaDB作贡献?

如果您想要对MariaDB的发展做出贡献,或者参与,有很多途径。您不必是一个开发人员(但我们永远欢迎更多这些人的),您就必须愿意帮助让MariaDB更好。例如,我们正在寻找作者或翻译者来翻译知识库文章和帮助建立MariaDB讨论组的人。

准备好了吗?

Contributing to the MariaDB Project是汇集您所需要的开始页面。

community category包含很多有趣的链接关于如何参与其中。

欢迎来到MariaDB community!

如何从MySQL升级到MariaDB?

出于实用的目的,您可以把MariaDB看作MySQL的升级:

  • 在相同的主版本(比如5.1)您就可以卸载MySQL和安装MariaDB,这样做就很好了,没有必要备份和恢复数据库。与任何升级一样,我们建议对之前数据做一个备份。
  • 如果MariaDB有更高的主版本号,您应该运行mysql_upgrade(就像MySQL一样)完成更新。
  • 您所有的老客户和连接器(PHP Python Perl Java等)将工作不变(不需要重新编译)。因为这样MariaDB和MySQL使用相同的客户端协议和客户端库是二进制兼容的。

您可以找到更多的信息在 MariaDB installation page.

评论

Re: How can I upgrade from MySQL to MariaDB?

在Windows上,您不要卸载MySQL安装MariaDB,如果这样这将不工作了,现有的数据库将不会被发现。

因此在Windows上,只需安装MariaDB和使用MSI安装程序升级向导。或者,如果您喜欢命令行,使用mysql_upgrade_service < service_name >在命令行上。

是否有不是来自MySQL(mysql-java-5.1.6.jar)连接MariaDB 的java连接器?

许可证的目的就是:我们试图删除任何连接到MySQL的连接器,我们发现Delphi和.Net,但我们还没有发现任何支持java的。不知有谁知道有这些第三方组件可以被用作连接MariaDB的java连接器?

答:

如果您真的想要改变连接器,据我所知,仅有的选择有drizzle JDBC或SkySQL提供的JDBC连接器(基于drizzle connector)。

然而它将很高兴知道您为什么不能使用来自Oracle 的MySQLJDBC连接器;在大多数情况下,对使用为GPL 的JDBC连接器作为连接器将不会影响您的应用程序,因为您在中间有JDBC管理器的。详情请参阅Licensing FAQ

评论

Re: Is there any java connector for MariaDB than the one from Mysql(mysql-java-5.1.6.jar) ?

Ubuntu回购libmysql-java列表作为Java对mysql数据库的驱动。我不知道这是不是来自MySQL或第三方。

Re: Is there any java connector for MariaDB than the one from Mysql(mysql-java-5.1.6.jar) ?

Drizzle JDBC理解MySQL协议,以使用简单的场景(这不是J连接器替代品,但已经实现JDBC核心功能)。这里是一些文档http://wiki.drizzle.org/JDBC

MariaDB高可用性解决方案?

我们如何部署MariaDB的高可用性解决方案? [如MMM,Mysql集群管理的解决方案]

答案很简单:如果您有一个解决方案,目前适用MySQL,那么它也适用MariaDB。我们有特定推荐的解决方案吗?没有。有一个广泛存在,我就会鼓励您把您的选择作为正确的解决方案。

您在寻找一个更特别的答案吗?它甚至可能在知识库中成为一个好系列。

MariaDB会移除来自MySQL的进程名,默认目录,TCP端口 等…吗?

是否有一个时间表使得MariaDB放弃MySQL使用的其默认端口,目录名,默认用户名、锁目录的名字,支持程序,等等?

我知道大多数事情可以在./configure或在.cnf文件设定,难道这不是应该让它移除的时间吗?

答:

和MySQL保持相同的默认是非常重要的,因为它允许一个MySQL用户完用MariaDB替代MySQL,并且所有的工作和过去一样。

One thought on “MariaDB FAQ(Part 3)

  1. Pingback: MariaDB FAQ CN | MySQLOPS 数据库与运维自动化技术分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>