取决于你的客户端driver,比如以java为例,虽然java 的jdbc driver也是GPL的,但是可以不受影响,因为JDBC是一个规范,mysql client driver只是其中一个实现,也就是说理论上你可以将mysql替换为其他任何一个数据库产品,mysql就不是你产品的必须部分,这在GPL的文档里有相关章节。
MarioDB的作者,也就是mysql的创始人专门写了一篇文章解释了这个问题。
你如果使用C,那么就需要开源了,因为不可替换。前面有人对PHP的解释我不确定,理论上,如果PHP执行代码需要直接在同一个进程内调用mysql的客户端代码,而mysql客户端代码是GPL, 就应该是被传染。中间层保护是常用手段,但是前提是非相同进程内调用。
其实GPL的解释在这块本身就是个灰色区域, Stallman认为任何二进制的引用,包括动态链接都应该受传染,而LINUS则认为只受限于源代码级别,即如果只是在程序中调用一个二进制库的方法,而不是扩展和继承,则不应该受影响。但为了保险,大公司会认可stallman这种做法。
另外在产品包里可以随意包含mysql 的原始release package,这和是否GPL没啥关系。 我们公司的鬼子法务专家是这么给我们解释的。