浅谈MySQL的授权方式

很多人都不理解MySQL的授权方式,主要原因是没有中文资料别无其他!我不想嘲笑谁,但是我认为有 必要搞清楚这一重要的因素。国际官司我们已经吃亏太多了,我不想这变成笑柄。

当前,MySQL采用双重授权(Dual Licensed),他们是GPL和MySQL AB制定的商业许可协议。如果你在一 个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。否则,你需要购买 MySQLAB制定的那个商业许可协议。这里最重要的一点就是要想免费使用MySQL,你所开发的软件必须是遵 循GPL的自由(开源)软件,虽然被批准的自由(开源)许可协议有很多个。

理清授权管辖的范围

MySQL是一套客户端/服务器(C/S)结构的系统。双重许可机制对两大块同时进行约束,但是并不绝对。 MySQL AB(MySQL的出品公司)考虑到便于人们使用,客户端是完全遵循GPL许可。也就是说,在事实上 MySQL的双重许可机制这一双重的特点是对服务器端而言的。我想,我恐怕会把一些人搞糊涂,这里所说 的客户端指的是MySQL AB开发的那个命令行下的客户端工具(mysql.exe)。

不同操作系统下是否有特殊的限制?

在当前可以说没有,如果有只是MySQL具体代码实现上的功能差异,许可协议本身是没有特定区分的。 在早期MySQL确实对微软/非微软操作系统进行过特定的区分,在那时如果要获得Windows平台最新的MySQL ,你必须付费购买,现在已经不同了。

Windows版本是否受到限制?

刚才已经说过了,现在没有这种区分,唯一的差异是不同操作系统下的具体实现造成的。当前,你可 以随意获得最新的Windows版本分发。他们是没有功能、时间限制的。当然,你应该遵循许可协议。

以教育为目的是否需要付费?

其实没有这个区分,主要的取决还是软件是否遵循GPL进行发布。当然,如果只是用来做课堂教学是不 用购买商业许可协议,这种情况下MySQL遵循GPL许可协议。

我该买几个许可证?

MySQL的许可证按照计算机台数计算,一台机器一个。至于一台机器多个操作系统的情况下该购买几个 许可证这种龌鹾问题别问我,我不知道!许可证和技术支持的关系?!技术支持和许可证是不同的东西。 虽然很多的软件会把它们搭配销售,但是实际上应该有单独签署一份技术支持保障协议。具体的时限和价 格我不清楚。

MySQL API的授权

MySQL客户端API遵循GPL协议,其中所包含的GNU getopt 遵循LGPL,并且一些地方用到的regexp库则 遵循BSD许可协议。

更多的信息

强烈建议去看看手册中MySQL许可协议的相关授权章节,里边写的非常详细。

时间: 2024-10-21 17:42:01

浅谈MySQL的授权方式的相关文章

浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解_Mysql

MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' grant delete on testdb.* to c

【转载】运维角度浅谈MySQL数据库优化

 运维角度浅谈MySQL数据库优化 2015-06-02 14:22:02 标签:mysql优化   mysql分库分表分区 mysql读写分离 mysql主从复制 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lizhenliang.blog.51cto.com/7876557/1657465   一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈My

MySQL扫盲 -- 授权方式

mysql MySQL扫盲 -- 授权方式 作者:王猛 (HeartIcy@163.com) 很多人都不理解MySQL的授权方式,主要原因是没有中文资料别无其他!我不想嘲笑谁,但是我认为有必要搞清楚这一重要的因素.国际官司我们已经吃亏太多了,我不想这变成笑柄. 当前,MySQL采用双重授权(Dual Licensed),他们是GPL和MySQL AB制定的商业许可协议.如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL.否则,你需要购买MySQLAB

浅谈JS函数定义方式的区别_javascript技巧

关于JS的函数定义方式有以下两种: (1)典型的函数声明 function slide(arguments){ //...code } (2)以函数表达式的形式定义函数 var slide = function(arguments){ //...code } 虽然上面两种方式逻辑上是等价的,但是还是有点小区别: 区别一:例一中的函数会在代码执行以前被加载到作用域中,而例二则是在代码执行到那一行的时候才会有定 义: 区别二:函数声明会给函数指定一个名字,而函数表达式则是创建一个匿名函数,然后将这个

浅谈MySQL存储过程中declare和set定义变量的区别_Mysql

在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解.  (1)先执行下面脚本,创建

浅谈mysql中多表不关联查询的实现方法_Mysql

大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join).右联结(right join).内联结(inner join).外联结(outer join).这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了.这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是多个表的时候,这些表又是没有互相关联的,比如要查user表和user_history表中的某一些数据

浅谈js文件引用方式及其同步执行与异步执行_java

任何以appendChild(scriptNode) 的方式引入的js文件都是异步执行的 (scriptNode 需要插入document中,只创建节点和设置 src 是不会加载 js 文件的,这跟 img 的与加载不同 ) html文件中的<script>标签中的代码或src引用的js文件中的代码是同步加载和执行的 html文件中的<script>标签中的代码使用document.write()方式引入的js文件是异步执行的 html文件中的<script>标签src

浅谈mysql数据库中的换行符与textarea中的换行符

1. mysql数据库中的换行符 在mysql数据库中, 其换行符为\n 即 char(10), 在python中为chr(10) 2. textarea中的换行符 textarea中的换行符为\r\n 3. web应用中换行符转换 以下是python django web的处理: # data为textarea获取的数据, 其中包括换行符`\r\n`, 以下是过渡处理 data = data.replace('\r\n', '\n') # 或 data = data.replace('\r\n

浅谈mysql中concat函数,mysql在字段前/后增加字符串

MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串. 一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQ