网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑问,MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议(注释:为解决其他企业用MySQL软件牟利或引用了MySQL的源代码而不想开源),虽然www.mysqlops.com也有写关于MySQL版权的来龙去脉,但是这篇文章写更透彻与详尽,特转载ITPUB上的帖子,希望大家能够更加清晰!

最近刚把MySQL和GPL的玩法搞明白,很是惭愧,居然花了这么久的时间才想通。不过聊以自慰的是,搞明白这个玩法的人真是不多,尽管有些人已经搞了很多年。

看过GPL协议的人应该都会觉得一头雾水,究竟GPL在讲些什么。我看过好几遍,英文的原版、中文的各种译文,都没能真正理解,后来是从软件行业的历史等等方面综合考虑,才算是理解了。先总结一下我对GPL的理解,我认为GPL的精髓就是开源,和是否商用,是否收费完全没有关系。GPL(General Public License),其实从字面上就可以理解为公共许可证,也就是说遵循GPL的软件是公共的,其实不存在什么版权问题,或者说公众都有版权,GPL提出了和版权(copyright)完全相反的概念(copyleft)。而我经常听到的说法是如果你的程序或系统引用了别的GPL软件,并且向用户收费,那么你就需要向引用的GPL软件购买版权。听上去很合理,如果你用我的软件赚钱,那你当然应该向我支付一定的费用。但其实是错误的,正确的概念是如果你用了我的 GPL软件,那么必须你的软件也要开源,如果你不开源,那么就不能使用我的软件,你是否把你的软件商用和我没关系,如果你不能遵循GPL协议来开源,那么你付再多的钱也不能用GPL的软件,事实上很多GPL软件是很多人共同完成的,每个人在前人的基础上做出自己的贡献,如果收费的话你把钱交给谁?提出 GPL协议的GNU希望做到的是通过开源来使软件行业得到一个好的发展,试想如果你要做一个大型的软件,不在前人的源码基础上开发,那必然会是旷日持久的,也会有很多重复劳动,显然不利于软件技术的发展。所以理解了GNU的精神,也就能理解GPL在说些什么,其实就是开源。在现实生活中,我们受益于 GPL的地方,其实很多,几乎所有的操作系统,除了windows,其他的几乎都是基于linux开源代码改写的。

再来谈MySQL,这是个开源的数据库,做技术的应该都知道。MySQL最早是瑞典的一家叫做MySQL AB的公司开发的,它是以双授权的方式来发布MySQL。一种授权就是GPL,另一种授权就是商业授权。也就是如果你不能满足GPL,那么就走商业授权的路线,向这个公司交钱。我觉得这公司有挂羊头卖狗肉之嫌,想借着GPL快速传播它的软件,但又留着商业授权这个收费的口。后来这家公司以10亿美金的价格被Sun收购,接着Sun又被Oracle收购,MySQL成为了Oracle的东西。现在Oracle把MySQL分为三种产品,标准版、企业版和集群版。不谈其中具体的差异,但都是以年度订阅(subscription)的方式来卖的。这个subscription引起了我的疑问,如果用户购买了一年,那么第二年用户还要继续付费才能合法使用?这三种版本都包含了一年的服务,那么如果第二年用户只需要用软件而不需要服务,怎么办?Oracle官方没有一个说得过去的说法。后来我想通了,其实Oracle卖的不是软件的版权,也不是寂寞,而是技术服务。所有的GPL开源软件都不能卖版权,因为是公共版权,当然不能卖了。所以像redhat这类的开源软件都是用subscription的方式来赚钱的。赚钱其实是合法的,GPL协议里面写了“Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish)我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用)”。但现在大众的误区是觉得购买的是软件产品的版权而不是服务。其实你要用GPL软件在绝大部分情况下都是合法的,不存在版权问题,那么在什么情况下才算是非法的呢?

前文一直提到“用”GPL软件的情况,这个“用”可能并不合适,GPL的原文“the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program保证你的共享和修改自由软件的自由”。可以理解为你使用开源软件并不受GPL约束,只有在你基于开源软件,修改开源软件的源码的时候才受 GPL约束。MySQL作为一个开源数据库,几乎所有的用户都只是通过自己的程序去操作这个数据库,不涉及到改动源码的问题,根本不用去考虑是否要遵循 GPL的问题。只有在你修改MySQL源码的情况下,才需要考虑GPL。

如果我根据MySQL的源码开发出了一个新的数据库,我觉得自己开发的源码非常的优秀,想靠这个卖钱,不想公开源码。那么这种情况就无法满足GPL的规定,我没法发布我的数据库。好在MySQL有个非常流氓的双授权,我就可以购买其商业授权来达到我的目的。为什么说这是流氓行为?因为既然MySQL是根据GPL开源发布,多多少少有各路人马贡献自己的源码才成为今天的MySQL,卖别人的劳动成果来让自己受益,这就是流氓的做法。

所以GPL就是一个为了保护软件自由的一个协议,它强调的是开源,与钱无关。MySQL是一个双授权的软件,Oracle现在卖的是年度的服务(编者加注:另外主要收入来源是销售数据库维护工具),如果你只是使用MySQL而不是改写MySQL,那么在这些情况下你应该考虑购买Oracle的商业版本,一是Oracle的商用版本提供的附加组件(监控器、备份工具等)对你有价值,二是Oracle的年度技术支持是你需要的,三是各种潜规则。而不应该是你想合法的使用MySQL才去购买其商业版本。另外,如果你是基于MySQL的源码开发你自己的产品,那么你需要购买的是商业授权,而不是subscription这些商业版本。

前面正儿八经的分析了GPL和MySQL的问题,接下来要玩粗的了。狗日的Oracle原厂的人老是说用了MySQL而不开源就应该向Oracle购买 MySQL商业版本。他妈的搞了这么多年MySQL还没搞明白这个问题?这种说法根本不合逻辑也没法操作,我的系统可以定义一个子系统叫做数据库连接,里面的代码就是连接数据库,我把这子系统公开源码就符合你的逻辑了吧,这么不严谨的说法漏洞太多了,还他妈叫着要告谁谁的,你告告试试,看看出丑的是谁。可能有人觉得他们其实是明白的,只是在欺骗客户来牟利。不过真别高估了这帮人,他们真没搞明白也是完全有可能的。别老觉得redhat做的多成功,卖的多好,MySQL一定也能像redhat一样卖的好。redhat怎么做的我没仔细研究过。不过肯定存在两种可能,一是redhat提供了客户需要的技术服务,二是客户也是被欺骗的。如果是第一种情况,那么说明redhat原厂做的好,不管是自己原厂的技术服务还是代理的技术服务,肯定是有一套很不错的服务体制,MySQL有吗?如果是第二种情况,客户总有一天会变聪明,被redhat骗了一次还会被MySQL再骗一次吗?其实是可能的,比如各种运营商、政府部门等等机构。

Mysql的收费方式相关推荐

  1. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  2. cdn收费方式有几种

    内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络.CDN分担源站压力,避免网络拥塞,确保在不同区 ...

  3. Linux下连接Mysql服务器的方式

    一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...

  4. python读取mysql以html形式输出_python实现处理mysql结果输出方式

    在运维过程中,经常需要读取mysql的结果输出并进行响应的处理,这节介绍如何用Python读取mysql结果表并进行相应的整理. 进行mysql结果文件输出: mysql -h10.20.10.207 ...

  5. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  6. 怎样把MySQL的编码方式改为utf8?

    一.当我们安装好MySQL后,单击电脑开始,然后运行cmd,记得必须要用管理员的身份运行.然后输入net start mysql 前面操作如果忘记采用管理员身份运行的话,会出现系统访问错误. 二.修改 ...

  7. mysql 查看编码方式_Mysql查看编码方式专题

    Mysql查看编码方式专题 一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+ ...

  8. MySQL中表连接方式

    为了能够很好理解MySQL中表连接方式,以如下两个表作为例子演示: Table1:t1 id name 1 张三 2 李四 4 王五 Table2:t2 id age 1 18 2 20 3 19 1 ...

  9. Mysql查看编码方式专题

    Mysql查看编码方式专题 一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+ ...

最新文章

  1. 【记录】我在浙江省机器人大赛的第一天
  2. 2017.3.13 木棍分割 思考记录
  3. html表单基础知识,【学习笔记】html基础知识第四更/与用户交互!(表单标签)...
  4. android 数据持久化——读写SD卡中的内容
  5. WPF自适应可关闭的TabControl 类似浏览器的标签页
  6. 给那些因为Firebug而舍不得FireFox的朋友
  7. dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】
  8. 【正点原子MP157连载】第六章STM32Cube固件包-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  9. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——第1篇 获取伴奏篇 第1章 MIDI音乐伴奏的获取与制作 1.1 电脑MIDI音乐与设备的介绍...
  10. anjuta调试caffe
  11. 给SAP初学者的建议!
  12. Wonderful Coloring - 2
  13. 收集的JS代码,学习js的入门经典
  14. UE4|Sequence Recorder 序列记录使用方法
  15. MP综述:植物-微生物互作的系统生物学
  16. Clipper转换器使用示例
  17. 12月21诛仙服务器维护,诛仙手游正式服12月22日例行更新维护公告
  18. sap委外退料流程图_最新九牧SAP(ERP项目)SAP-TB-MM委外加工采购流程
  19. 小彩灯特效 html+css
  20. java描绘条形码_java生成条形码工具类

热门文章

  1. 软件开发获取客户需求的十大沟通技巧
  2. eharts树形图数据过多展示全部重叠了,子级过多,不全部展示解决方法
  3. linux创建用户,添加及修改shell
  4. php表格怎么自动排序,Excel表格怎么自动排名
  5. 短视频底层实操课,让你迅速从短视频新手变成高手
  6. apk 进行系统签名
  7. 查看linux版本是多少位
  8. win10怎么将计算机放桌面壁纸,win10电脑系统怎么改变桌面壁纸的大小
  9. 使用SOCK_PACKET编写ARP请求程序的例子
  10. QGIS噱头笔记--(1)QGIS概要了解