第2章:安装MySQL

目录

2.1. 一般安装问题
2.1.1. MySQL支持的操作系统
2.1.2. 选择要安装的MySQL分发版
2.1.3. 怎样获得MySQL
2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性
2.1.5. 安装布局
2.2. 使用二进制分发版的标准MySQL安装
2.3. 在Windows上安装MySQL
2.3.1. Windows系统要求
2.3.2. 选择安装软件包
2.3.3. 用自动安装器安装MySQL
2.3.4. 使用MySQL安装向导
2.3.5. 使用配置向导
2.3.6. 通过非安装Zip文件安装MySQL
2.3.7. 提取安装档案文件
2.3.8. 创建选项文件
2.3.9. 选择MySQL服务器类型
2.3.10. 首次启动服务器
2.3.11. 从Windows命令行启动MySQL
2.3.12. 以Windows服务方式启动MySQL
2.3.13. 测试MySQL安装
2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除
2.3.15. 在Windows下升级MySQL
2.3.16. Windows版MySQL同Unix版MySQL对比
2.4. 在Linux下安装MySQL
2.5.在Mac OS X中安装MySQL
2.6. 在NetWare中安装MySQL
2.7. 在其它类Unix系统中安装MySQL
2.8. 使用源码分发版安装MySQL
2.8.1. 源码安装概述
2.8.2. 典型配置选项
2.8.3. 从开发源码树安装
2.8.4. 处理MySQL编译问题
2.8.5. MIT-pthreads注意事项
2.8.6. 在Windows下从源码安装MySQL
2.8.7. 在Windows下编译MySQL客户端
2.9. 安装后的设置和测试
2.9.1. Windows下安装后的过程
2.9.2. Unix下安装后的过程
2.9.3. 使初始MySQL账户安全
2.10. 升级MySQL
2.10.1. 从5.0版升级
2.10.2. 升级授权表
2.10.3. 将MySQL数据库拷贝到另一台机器
2.11. 降级MySQL
2.12. 具体操作系统相关的注意事项
2.12.1. Linux注意事项
2.12.2. Mac OS X注意事项
2.12.3. Solaris注意事项
2.12.4. BSD注意事项
2.12.5. 其它Unix注意事项
2.12.6. OS/2注意事项
2.13. Perl安装注意事项
2.13.1. 在Unix中安装Perl
2.13.2. 在Windows下安装ActiveState Perl
2.13.3. 使用Perl DBI/DBD接口的问题

本章描述怎样获得并安装MySQL

1.    要了解支持哪些平台。请注意并非所有支持的平台同等适合运行MySQL。在部分平台上会比其它平台更有效、稳定。详情请参见2.1.1节,“MySQL支持的操作系统”

2.    确定你应该使用的分发的版本。可获得MySQL的多个版本,大部分有多种分发版。你可以选择包含二进制(预编译)代码或源码形式的预打包分发。如果不能确定,则使用二进制分发版。对于想看我们的最新开发并帮助我们测试新代码的用户,我们提供了公共访问接口,可以访问我们最新的源码树。为了确定你应该使用的分发的版本和类型,请参见2.1.2节,“选择要安装的MySQL分发版”

3.    下载想安装的分发版对于能从其获得MySQL的站点列表,请参见2.1.3节,“怎样获得MySQL”。用来验证分发版完整性的指令参见2.1.4节,“通过MD5校验和或GnuPG验证软件包的完整性

4.    安装分发版针对二进制代码和源码分发版的安装说明在2.2节,“使用二进制分发版的标准MySQL安装”中讲述。针对二进制代码和源码分发版的安装说明在2.8节,“使用源码分发版安装MySQL”中讲述。

释:如果你想要将当前版本的MySQL升级到最新版本,而不是首次安装MySQL,关于升级过程和升级前应考虑的问题请参见2.10节,“升级MySQL”

如果遇到安装问题,2.12节,“具体操作系统相关的注意事项”中提供了解决平台相关问题的信息。

5.    进行安装后的设置。安装MySQL后,请阅读2.9节,“安装后的设置和测试”。本节介绍了重要的信息,可以确保MySQL服务器正确工作。本节还描述了如何使尚未有密码的初始MySQL用户账户的安全。不管你是用二进制代码还是源码分发版来安装MySQL,这些过程均适用。

如果要运行MySQL基准脚本,必须使用支持MySQLPerl。请参见2.13节,“Perl安装注意事项”

2.1. 一般安装问题

在安装MySQL前,你应该:

1.    确定是否MySQL将运行在你的平台上。

2.    选择安装的分发版。

3.    下载分发版并验证其完整性。

本节包含执行上述步骤必需的信息。之后,你可以按照本章中后面几节的说明来安装选择的分发版。

2.1.1. MySQL支持的操作系统

本节列出了可以运行MySQL的操作系统。

我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系统是可能的。(要求服务器支持线程。如果只是编译客户端代码,则只需要C++编译器)。我们主要在Linux(SuSERed Hat)FreeBSDSun Solaris(版本89)上使用并开发本软件。

已经报告MySQL可以在下列操作系统/线程包的组合上成功地进行编译。注意,对于很多操作系统,原生的线程仅支持最新的版本。

·         有原生线程的AIX 4.x5.x。请参见2.12.5.3节,“IBM-AIX注意事项”

·         Amiga

·         包括MIT-pthreads包的BSDI 2.x。请参见2.12.4.4节,“BSD/OS 2.x版注意事项”

·         有原生线程的BSDI3.0,3.14.x。请参见2.12.4.4节,“BSD/OS 2.x版注意事项”

·         有原生线程的Digital Unix 4.x。请参见2.12.5.5节,“Alpha-DEC-UNIX(Tru64)版注意事项”.。

·         包括MIT-pthreads包的FreeBSD 2.x。请参见2.12.4.1节,“FreeBSD注意事项”

·         有原生线程的FreeBSD 3.x4.x。请参见2.12.4.1节,“FreeBSD注意事项”

·         LinuxThreadsFreeBSD 4.x。请参见2.12.4.1节,“FreeBSD注意事项”

·         DCE线程或MIT-pthreads包的HP-UX 10.20。请参见2.12.5.1节,“HP-UX 10.20版注意事项”

·         有原生线程的HP-UX 11.x。请参见2.12.5.2节,“HP-UX 11.x版注意事项”

·         LinuxThreads 0.7.1+glibc 2.0.7+,适合各种CPULinux 2.0+。请参见2.12.1节,“Linux注意事项”

·         Mac OS X。请参见2.12.2节,“Mac OS X注意事项”

·         NetBSD 1.3/1.4 IntelNetBSD 1.3 Alpha(需要GNU make)。请参见2.12.4.2节,“NetBSD注意事项”

·         Novell NetWare 6.0。请参见2.6节,“在NetWare中安装MySQL”

·         有原生线程的OpenBSD > 2.5。包括MIT-pthreads包的OpenBSD < 2.5。请参见2.12.4.3节,“OpenBSD 2.5版注意事项”

·         OS/2 Warp 3, FixPack 29OS/2 Warp 4, FixPack 4. 参见2.12.6节,“OS/2注意事项”

·         有最新FSU Pthreads移植包的SCO OpenServer 5.0.X。请参见2.12.5.8节,“SCO UNIX和OpenServer 5.0.x版注意事项”

·         SCO UnixWare 7.1.x。请参见2.12.5.9节,“SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事项”

·         SCO Openserver 6.0.x。请参见2.12.5.10节,“SCO OpenServer 6.0.x版注意事项”

·         有原生线程的SGI Irix 6.x。请参见2.12.5.7节,“SGI Irix注意事项”

·         SPARCx86上有原生线程的Solaris 2.5和以上版本。请参见2.12.3节,“Solaris注意事项”

·         包括MIT-pthreads包的SunOS 4.x。请参见2.12.3节,“Solaris注意事项”

·         Tru64 Unix。请参见2.12.5.5节,“Alpha-DEC-UNIX(Tru64)版注意事项”

·         Windows 9xMeNT2000XP2003。请参见2.3节,“在Windows上安装MySQL”

并非所有支持的平台同等适合运行MySQL。根据以下因素确定某个平台适合高负荷关键任务MySQL服务器的程度:

·         线程库的稳定性。可能某个平台的反应不错,但MySQL的稳定性取决于它所调用的线程库,不管其它部分是否完善。

·         内核和线程库利用均衡多处理器(SMP)系统的能力。换句话说,当进程创建一个线程时,应允许线程运行原进程所运行CPU之外的其它处理器。

·         内核和线程库运行在短范围频繁获取和释放互斥体而不需要过多地交换内容的多个线程的能力。如果执行pthread_mutex_lock()时产生的CPU时间太短,则会严重影响MySQL。如果不关注该问题,增加过多的CPU实际会降低MySQL的速度。

·         常规文件系统的稳定性和性能。

·         如果数据库表很大,文件系统处理大文件的能力和处理效率。

·         我们在该平台上使用MySQL AB的经验水平。如果我们熟悉一个平台,我们可以对具体平台进行优化并固定编译时间。我们还可以提供建议如何更好地为MySQL配置系统。

·         我们在类似配置下所完成的内部测试的数量。

·         在同一平台类似配置下成功运行MySQL的用户数。如果该数字很高,则说明遇到具体平台问题的几率要小得多。

根据前面的标准,允许MySQL的最好的平台是x86,安装SuSE Linux,使用2.42.6内核,和ReiserFS(或类似Linux分发版)和安装了 Solaris(2.7-9)SPARCFreeBSD排第三位,但我们真正希望一旦线程库得到改进,它也可以提高排名。从某一观点我们还希望提高其它MySQL目前正在上面编译、允许的平台的排名,但稳定性和性能上可以要求不同等级。这需要我们与MySQL所依赖的操作系统和库组件开发人员共同努力。如果你对改进某个组件感兴趣,可能影响其开发,需要更多的关于MySQL如何能运行得更好的说明,请向我们的MySQL internals发送邮件。请参见1.7.1.1节,“The MySQL邮件列表”

请注意前面的对比并不是说一个操作系统总体上比另一个操作系统要好。我们只是讨论选择一个OS来专门运行MySQL。记住了这一点,如果考虑更多的因素,对比结果可能会不同。在某些情况下,一个OS比另一个OS好的原因只是我们已经为具体平台做出了更多的努力来进行测试和优化。我们只是陈述我们的观点帮助你选择运行MySQL的平台。

2.1.2. 选择要安装的MySQL分发版

准备安装MySQL时,你应确定使用哪个版本。MySQL的开发有几个发布系列,可以选择最适合你要求的一个版本。确定了安装的版本后,便可以选择分发版。有二进制或源码发布格式。

2.1.2.1. 选择要安装的MySQL版本

首先要作出决策,你是否想要使用最新的开发版本或最终的稳定版本。在MySQL开发过程中,同时存在多个发布系列,每个发布处在成熟度的不同阶段:

·         MySQL 5.2是最新开发的发布系列,是将执行新功能的系列。不久的将来可以使用Alpha发行,以便感兴趣的用户进行广泛的测试。

·         MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布;没有增加会影响稳定性的新功能。

·         MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布;没有增加会影响该系列的重要功能。

·         MySQL 4.03.23是旧的稳定(产品质量)发布系列。该版本不再使用,新的发布只用来修复特别严重的漏洞(以前的安全问题)。

我们不认为有完全的冻结版,因为任何版本均需要对漏洞进行修复和其它修复。对于“某种程度的冻结”,我们是指我们可以在产品发布中增加一些不会影响当前工作的小东西。自然,前一系列的相关漏洞修复会移植到后面的系列。

通常, 如果你是第一次开始使用MySQL或想要将它移植到一些还没有二进制分发版的系统上,我们推荐使用最终的稳定版本。目前是MySQL 5.1。我们已经使用MySQL基准对所有MySQL发布进行了检查,包括来自开发系列的发布,在发布前还使用基准套件来测试它。

如果你正在运行一个老的系统并且想要升级,但是又不想冒险进行非无缝升级,应该升级到最新版本中你正使用的相同的发布系列(只有版本号的最后部分比你使用的新)。我们已经试着仅修复致命缺陷,对那个版本进行了很小的相对安全的改动。

如果你想要使用产品发布系列中所没有的新功能,你可以使用开发系列的版本。请注意开发发布不如产品发布稳定。

如果你想要使用包含所有最新补丁和漏洞修复的最新源码,可以使用我们的BitKeeper库。这些库还没有发布,但可以预览代码,将来的发布基于这些代码。

MySQL的命名机制使用由3个数字和一个后缀组成的版本号。例如,像mysql-5.0.9-beta的版本号这样解释:

·         1个数字(5)是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式。

·         2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。

·         3个数字(9)是在此发行系列的版本号,随每个新分发版递增。通常你需要已经选择的发行(release)的最新版本(版本)

每次更新后,版本字符串的最后一个数字递增。如果相对于前一个版本增加了新功能或有微小的不兼容性,字符串的第二个数字递增。如果文件格式改变,第一个数字递增。

后缀显示发行的稳定性级别。通过一系列后缀显示如何改进稳定性。可能的后缀有:

·         alpha表明发行包含大量未被彻底测试的新代码。已知的缺陷应该在新闻小节被记录。请参见附录D:MySQL变更史。在大多数alpha版本中也有新的命令和扩展。alpha版本也可能有主要代码更改等开发。但我们在发布前一定对其进行测试。

·         beta意味着该版本功能是完整的,并且所有的新代码被测试了,没有增加重要的新特征,应该没有已知的缺陷。当alpha版本至少一个月没有出现报导的致命漏洞,并且没有计划增加导致已经实施的功能不稳定的新功能时,版本则从alpha版变为beta版。

在以后的beta版、发布版或产品发布中,所有API、外部可视结构和SQL命令列均不再更改。

·         rc发布代表;是一个发行了一段时间的beta版本,看起来应该运行正常。只增加了很小的修复。(发布代表即以前所称的gamma )

·         如果没有后缀,这意味着该版本已经在很多地方运行一段时间了,而且没有非平台特定的缺陷报告。只增加了关键漏洞修复修复。这就是我们称为一个产品(稳定)或“通用”版本的东西。

MySQL的命名机制于其它产品稍有不同。一般情况,我们可以很放心地使用已经投放市场两周而没有被相同发布系列的新版本所代替的版本。

MySQL所有版本都经过我们的标准测试和基准测试运行,以保证它们可相当安全地使用。因为标准测试不断扩充以检测以前发现的缺陷,测试套件一直在改进之中。

所有版本都至少已经用下列套件进行了测试:

·         一个内部测试套件

mysql-test目录包含一整套测试案例。我们针对每个二进制服务器进行这些测试。关于该测试套件的详细信息参见27.1.2节,“MySQL测试套件”

·         MySQL基准套件

它运行一定范围的普通查询。它也是一个测试,检测最新的优化处理是否真的使代码更快。请参见7.1.4节,“MySQL基准套件”

·         crash-me测试

这尝试决定数据库支持什么功能和它的能力与限制是什么。请参见7.1.4节,“MySQL基准套件”

另一个测试是在内部生产环境中使用最新MySQL版本,至少在一台机器上。我们有超过100GB的数据可供使用。

2.1.2.2. 选择分发格式

选择了MySQL的安装版本后,要做的第二项决策是你是使用源码分发版还是二进制分发版。大多数情况,如果你的平台上已经有了一个二进制分发版,你可能使用二进制分发版。大多数平台可以使用原格式二进制分发版,例如Linux使用RPM文件,Mac OS X使用DMG安装软件包。也可以使用Zip文件或压缩tar文件。

选择二进制分发版的理由:

·         二进制分发版比源码分发版更容易安装。

·         为了满足不同用户的需求,我们提供了两种不同的二进制版本:一个是编译过的带非事务储存引擎(小的快速库),另一个配置了最重要的扩展选项,例如事务安全表。两个版本均从相同的源码分发版编译而来。所有本地MySQL客户端均可以连接任一版本的MySQL服务器。

扩展MySQL库分发版标有-max后缀,配置了与mysqld-max相同的选项。请参见5.1.2节,“mysqld-max扩展MySQL服务器”

如果想要使用MySQL-Max RPM,必须首先安装标准MySQL-server RPM

在某些环境下,最好安装源码分发版MySQL

·         你想要在某个明显的位置安装MySQL。标准二进制分发版可以安装到任何地方,但你想更加灵活地将MySQL组件放到某个地方。

·         你想要将mysqld配置一些标准二进制分发版中未包括的一些特殊特征。下面是一些你想要使用的最常用的选项:

o        --with-innodb(在所有MySQL 5.1库版本中默认使用)

o        --with-berkeley-db(只适合部分平台)

o        --with-libwrap

o        --with-d-z-libs(适合部分二进制)

o        --with-debug[=full]

·         你想要将mysqld配置一些标准二进制分发版中已经包括的一些特殊特征。例如,一般编译过的分发版支持所有字符集。如果你想要一个更小的MySQL服务器,可以重新编译只支持你需要的字符集。

·         你有一个专用编译器(例如pgcc)或想要使用更好地优化适用你的处理器的编译器选项。二进制分发版编译的选项适合同一处理器族的各种处理器。

·         你想要使用BitKeeper库中的最新源码,以访问所有最新漏洞修复。例如,如果你发现了漏洞并将它报告给MySQL开发小组,漏洞修复传递给源码库,你便可以访问它。发布实际发行后才会出现漏洞修复。

·         如果你想要阅读(或修改)构成MySQLCC++代码,你应该拿到源码分发版。源码总是最终的手册。

·         源码分发版也比二进制的分发版包含更多的测试和实例。

2.1.2.3. 如何发布更新以及何时发布更新

MySQL进展的相当快,我们想要与其它MySQL用户分享它。当我们有一个看来其它人似乎需要的非常有用的功能时,我们就试着制作一个发行版本。

我们也尝试帮助那些需要很容易实现的功能的用户,我们也关注我们授权的用户想要什么,我们更特别关注我们支持的客户想要什么,并且尽力帮助他们。

没有人一定要下载一个新版本,新闻小节中将告诉你新版本是否有一些你确实想要的东西。请参见附录D:MySQL变更史

当更新MySQL时,我们使用下列策略:

·         将发布每个系列。每次发布时,版本的最后一个数字为同一系列前一版本的基础上加1

·         稳定的测试过的产品版本每年准备出现1-2次,但是如果发现小缺陷,只有缺陷修复的一个版本将被发行。

·         工作版本/对旧版本的漏洞修复文件每4-8周出现一次。

·         对一些平台的二进制分发版,主要版本由我们制作。其它人可以为其它系统制作二进制分发版,但是可能不多见。

·         我们一旦识别并修正了非紧急但烦人的缺陷,则立即将其发布,可以从公共BitKeeper库中立即得到修复代码,并将包含到下一发布版中。

  • 在任何情况下,如果在一个发行中有一个致命缺陷,我们将尽快制作一个新版本来修复。(我们希望其它公司也这样做!)

2.1.2.4. 发布原则:发行版本中没有已知的缺陷

我们投入了大量的时间和工作来使我们的发布没有缺陷。我们从来没有发布过含有已知致命重复性缺陷的单一MySQL版本。(致命”缺陷指能在正常应用中导致MySQL瘫痪的缺陷,对于正常查询产生错误答案,或有安全问题)

我们已经将所有公开问题、缺陷和由设计决策决定的事宜记入文件。请参见A.8节,“MySQL中的已知事宜”

我们的目标是修复一切可以修复的东西,而不会使稳定的MySQL版本变得不稳定。在某些情况,这意味着我们可以在开发版本中修复问题,而不是在稳定的 (产品) 版本。自然,我们会将这些问题记入文档,以便用户能知道。

下面描述了我们如何操作:

·         我们通过我们的客户支持列表、在http://bugs.mysql.com/ 缺陷数据库和MySQL外部邮件列表来监控缺陷。

·         当前版本中所有被报导的缺陷被输入缺陷数据库。

·         当我们修复缺陷,我们总是为其设计一次测试案例,并将其包括进测试系统中,以确保不会漏检使缺陷再现。(所有修复的缺陷中大约90%的具有测试案例)

·         为添加到MySQL中的所有新功能创建测试案例。

·         我们开始构建新的MySQL发布前,我们确保修复了MySQL版本(3.23.x4.0.x4.1.x5.0.x等等)中所有被报导的重复性缺陷。如果某些内容不能修复(由于MySQL内部的一些设计决策),我们在本手册中记录下来。请参见A.8节,“MySQL中的已知事宜”

·         我们在所有支持二进制的平台(15+平台)上构建并运行我们的测试套件和基准套件。

·         如果在某个平台上测试或基准套件失败,我们不会公布二进制。如果问题是由于源码中的普通缺陷,我们将进行修复并在所有系统上构建并测试。

·         构建和测试过程需要2-3天。如果在该过程中我们收到致命缺陷相关报告(例如,会造成内核转储),我们将修复该问题并重新启动构建过程。

·         http//dev.mysql.com/上公布二进制后,我们则向mysql发出公告消并announce邮件列表。请参见1.7.1.1节,“The MySQL邮件列表”。公告消息包含所有发布的更改列表和已知问题。只有部分发版不需要已知的问题部分。

·         为了让我们的用户快速访问最新MySQL功能,我们每4-8周产生一个新的MySQL发布。每天构建源码快照,可以从http://downloads.mysql.com/snapshots.php获得。

·         如果,尽管经过我们最大的努力,我们在发布后仍收到缺陷报告,即在某个具体平台上出现严重问题,我们将立即进行修复,并为该平台构建一个新的 'a'版本。由于我们的大用户群,可以很快地查出并解决此类问题。

·         我们为保证稳定版本所做的跟踪记录不错。在最近150个发布中,我们只需要对其中不到10个重新构建。其中有3个案例,缺陷为我们的构建机器上的glibc 库,花了很长时间来跟踪。

2.1.2.5. MySQL AB编译的MySQL二进制版本

作为MySQL AB的服务,我们提供了一套二进制MySQL分发版,已经在我们的站点上所列的系统或支持MySQL、友好地为我们提供访问的机器上的系统上编译过。

除了具体平台安装软件包格式提供的二进制分发版,我们还以压缩tar文件(.tar.gz文件)为多种平台提供了二进制分发版。请参见2.2节,“使用二进制分发版的标准MySQL安装”

对于Windows分发版,参见2.3节,“在Windows上安装MySQL”

使用脚本 Build-tools/Do-compile生成这些分发版,可以编译源码并使用scripts/make_binary_distribution创建二进制tar.gz文件。

通过下面的编译器和选项来配置并构建二进制分发版。可以查看各个库二进制tar文件分发版的脚本bin/mysqlbug内的变量COMP_ENV_INFOCONFIGURE_LINE来查看这些信息。

  • MySQL AB开发系统上构建下面的二进制:

    ·         Linux 2.4.xx x86中的gcc 2.95.3

    CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

    ·         Linux 2.4.x x86中的icc(Intel C++ Compiler 8.1或更高版本)

    CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-embedded-server --with-innodb

    请注意Intel 编译器8.1版和更高版有不同的“纯”C(icc)驱动程序和C++(icpc)驱动程序;如果你使用icc 8.0版本或较早的版本来构建MySQL,需要设置CXX=icc

    ·         Linux 2.4.xx Intel Itanium 2中的ecc (Intel C++ Itanium Compiler 7.0)

    CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

    ·         Linux 2.4.xx Intel Itanium中的ecc(Intel C++ Itanium Compiler 7.0)

    CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

    ·         Linux 2.4.xx alpha中的ccc(Compaq C V6.2-505 / Compaq C++ V6.3-006)

    CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --disable-shared

    ·         Linux 2.x.xx ppc中的gcc 2.95.4

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

    ·         Linux 2.4.xx s390中的gcc 2.95.3

    CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

    ·         Linux 2.4.xx x86_64(AMD64)中的gcc 3.2.1

    CXX=gcc ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

    ·         Sun Solaris 8 x86中的gcc 3.2.3

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-inno

    ·         Sun Solaris 8 SPARC中的gcc 3.2

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

    ·         Sun Solaris 8 SPARC 64-bit中的gcc 3.2

    CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

    ·         Sun Solaris 9 SPARC中的gcc 2.95.3

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses --disable-shared

    ·         Sun Solaris 9 SPARC中的cc-5.0(Sun Forte 5.0)

    CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared

    ·         IBM AIX 4.3.2 ppc中的gcc 3.2.3

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

    ·         IBM AIX 4.3.3 ppc中的xlC_r(IBM Visual Age C/C++ 6.0)

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-innodb

    ·         IBM AIX 5.1.0 ppc中的gcc 3.3

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

    ·         IBM AIX 5.2.0 ppc中的xlC_r(IBM Visual Age C/C++ 6.0)

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-embedded-server --with-innodb

    ·         HP-UX 10.20 pa-risc1.1中的gcc 3.1

    CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared

    ·         HP-UX 11.00 pa-risc中的aCC(HP ANSI C++ B3910B A.03.50)

    CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

    ·         HP-UX 11.11 pa-risc2.0 64bit中的aCC(HP ANSI C++ B3910B A.03.33)

    CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

    ·         HP-UX 11.11 pa-risc2.0 32bit中的aCC(HP ANSI C++ B3910B A.03.33)

    CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

    ·         HP-UX 11.22 ia64 64bit中的aCC(HP aC++/ANSI C B3910B A.05.50)

    CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

    ·         Apple Mac OS X 10.2 powerpc中的gcc 3.1

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

    ·         FreeBSD 4.7 i386中的gcc 2.95.4

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared

    ·         使用LinuxThreadsFreeBSD 4.7 i386中的gcc 2.95.4

    CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R -D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads -L/usr/local/lib -llthread -llgcc_r" --disable-shared --with-embedded-server --with-innodb

    ·         QNX Neutrino 6.2.1 i386中的gcc 2.95.3qnx-nto 20010315

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

    下面的二进制是在由其它用户提供给MySQL AB的第三方系统上构建而成。这是免费赠送;MySQL AB没有完全控制这些系统,因此我们只能对在这些系统上构建的二进制提供有限的支持。

    ·           SCO Unix 3.2v5.0.7 i386中的gcc 2.95.3:

    CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared

    ·         SCO UnixWare 7.1.4 i386中的CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

    ·         CO OpenServer 6.0.0 i386中的CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

    ·         Compaq Tru64 OSF/1 V5.1 732 alpha中的cc/cxx(Compaq C V6.3-029i / DIGITAL C++ V6.1-027):

    CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared --with-mysqld-ldflags=-all-static

    ·            SGI Irix 6.5 IP32中的gcc 3.0.1:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

    ·         FreeBSD/sparc64 5.0中的gcc 3.2.1:

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

    MySQL AB过去提供的二进制软件包中应用了下面的编译选项。这些二进制不再进行更新,但是在这里列出了这些编译选项供参考。

    ·          Linux 2.2.xx SPARC中的egcs 1.1.2:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared

    ·         Linux 2.2.x x686中的gcc 2.95.2:

    CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex

    ·         SunOS 4.1.4 2 sun4c中的gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler

    ·         SunOS 5.5.1(及以上版本)sun4u中的egcs 1.0.3a2.90.27gcc 2.95.2和更新版:

    ·         CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex --enable-assembler

    ·         SunOS 5.6 i86pc中的gcc 2.8.1:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex

    ·         BSDI BSD/OS 3.1 i386中的gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

    ·         BSDI BSD/OS 2.1 i386中的gcc 2.7.2:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

    ·         AIX 4.2中的gcc 2.7.2.2

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

    如果你有更好的上述配置选项,可以向MySQL internals邮件列表发送邮件。请参见1.7.1.1节,“The MySQL邮件列表”

    在我们的站点中列出的MySQL 5.1发布的RPM分发版是由MySQL AB产生的。

    如果你想要编译MySQL调试版本,应当在前面的configure命令中加上--with-debug--with-debug=full,并去掉-fomit-frame-pointer选项。

2.1.3. 怎样获得MySQL

检查MySQL下载页(http://dev.mysql.com/downloads/ )获取当前版本和下载指令信息。关于MySQL下载镜像站点的完整的最新列表,参见 http://dev.mysql.com/downloads/mirrors.html。你可以在此发现MySQL镜像站点和如何报告有问题的或过时的镜像站点的信息。

我们的主镜像站点位于http://mirrors.sunsite.dk/mysql/

2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性

下载了适合你的需求的MySQL安装软件包并在安装前,你应当确保它的完整性,没有被篡改。MySQL AB提供了3种完整性检查方法:

·         MD5校验和

·         使用GnuPGGNU Privacy Guard对签名进行加密

·         对于RPM软件包,使用内嵌式RPM完整性验证机制

下面的章节描述了如何使用这些方法。

如果你注意到MD5校验和与GPG签名不匹配,首先应尝试多次下载相关安装软件包,可以从其它镜像站点。如果你反复尝试仍不能成功验证安装软件包的完整性,请将此类问题通知给我们,包括完整的安装软件包名和你使用的下载站点,在<webmaster@mysql.com><build@mysql.com>。不要使用缺陷-报告机制来报告下载问题。

2.1.4.1. 验证MD5校验和

下载MySQL安装软件包后,你应当确保它的MD5校验和与提供的MySQL下载页上的相匹配。每个安装软件包有唯一的校验和,可以用下面的命令来验证,其中package_name是你下载的安装软件包的名称:

shell> md5sum package_name

示例:

  shell> md5sum mysql-stard-5.1.2-alpha-linux-i686.tar.gz
  aaab65abbec64d5e907dcd41b8699945  mysql-stard-5.1.2-alpha-linux-i686.tar.gz

你应当验证结果校验和(十六进制数字字符串)与下载页上相关安装软件包下面显示的校验和相匹配。

注释:一定要验证归档文件(例如,.zip.tar.gz文件)的校验和,而不是其中包括的文件。

请注意并非所有操作系统支持md5sum命令。在一些操作系统上,只是称为md5另一些根本不装载它。在Linux中,它是GNU Text Utilities安装软件包的一部分,适合各种平台。可以从http//www.gnu.org/software/textutils/下载源码。如果你已经安装了OpenSSL,还可以使用命令openssl md5 package_namehttp//www.fourmilab.ch/md5/提供了DOS/Windows使用的md5命令行实用工具。winMd5Sum是一个图形MD5检查工具,可以从http//www.nullriver.com/index/products/winmd5sum获得。

2.1.4.2. 通过GnuPG进行签名检查

验证安装软件包完整性和真实性的另一个方法是使用加密签名。这比使用MD5校验和更可靠,但是需要更多的工作。

MySQL ABGnuPG(GNU Privacy Guard)对下载MySQ软件包进行签名。GnuPG是开放源码,不同于Phil Zimmermann的闻名的Pretty Good Privacy (PGP)。关于GnuPG和如何获得并安装到你的系统的详细信息,请参见http//www.gnupg.org/。大多数Linux分发版装有默认安装的GnuPG。关于GnuPG的详细信息,参见 http//www.openpgp.org/

要想验证具体安装软件包的签名,你首先需要获得MySQL AB公共GPG构建密钥的拷贝。可以从http//www.keyserver.net/下载密钥。你想要获得的密钥名为build@mysql.com。另外,可以从下面的文本直接剪切并粘贴密钥:

Key ID:
pub  1024D/5072E1F5 2003-02-03
     MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5
 
Public Key (ASCII-armored):
 
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
 
mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----

你可以使用gpg --import将构建密钥导入你的个人公共GPG钥匙圈keyring。例如,如果你把密钥保存到mysql_pubkey.asc文件中,导入命令应为:

shell> gpg --import mysql_pubkey.asc

关于公共密钥如何工作的详细信息,请参阅GPG文档。

下载并导入公共构建密钥后,下载期望的MySQL安装软件包和相应的签名,也可以从下载页上获得。签名文件名与分发版文件相同,有 an .asc扩展名。例如:

分发文件

mysql-stard-5.1.2-alpha-linux-i686.tar.gz

签名文件

mysql-stard-5.1.2-alpha-linux-i686.tar.gz.asc

确保两个文件保存在同一目录下,运行下面的命令来验证分发文件的签名:

shell> gpg --verify package_name.asc

示例:

  shell> gpg --verify mysql-standard-5.1.2-alpha-linux-i686.tar.gz.asc
  gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 5072E1F5
  gpg: Good signature from "MySQL Package signing key (www.mysql.com) <build@mysql.com>"

Good signature消息表示所有内容都很正确。你可以忽略任何insecure memory警告。

2.1.4.3. 使用RPM进行签名检查

RPM软件包没有单独的签名。RPM软件包内置GPG签名和MD5校验和。可以运行下面的命令来验证安装软件包:

shell> rpm --checksig package_name.rpm

示例:

shell> rpm --checksig MySQL-server-5.1.2-alpha-0.i386.rpm
MySQL-server-5.1.2-alpha-0.i386.rpm md5 gpg OK

注释:如果你正使用RPM 4.1,并且出现关于(GPG) NOT OK (MISSING KEYS: GPG#5072e1f5)的抱怨,尽管你已经将MySQL公共构建密钥导入到你自己的GPG钥匙圈,你必须首先将密钥导入到RPM钥匙圈中。RPM 4.1不再使用你的个人GPG钥匙圈(GPG本身)RPM 4.1维护自己的钥匙圈,因为它是系统范围的应用程序,而用户GPG公共钥匙圈是具体的用户文件。要想将MySQL公共密钥导入RPM钥匙圈,要首先获得前面章节描述的密钥。然后使用rpm --import导入密钥。例如,如果你的公共密钥保存在mysql_pubkey.asc文件中,应使用下述命令导入公共密钥:

shell> rpm --import mysql_pubkey.asc

如果你需要获得MySQL公共密钥,参见2.1.4.2节,“通过GnuPG进行签名检查

2.1.5. 安装布局

这节描述安装MySQL AB提供的二进制代码和源码分发时创建的默认目录布局。如果你安装其它供应商提供的分发,应使用其它布局。

Windows中,MySQL 5.1的默认安装目录是C:\Program Files\MySQL\MySQL Server 5.1(一些Windows用户宁愿安装到原来的默认安装目录 C\mysql。然而,子目录布局仍然相同)安装目录包括以下子目录:

目录

目录内容

bin

客户端程序和mysqld服务器

data

日志文件,数据库

Docs

文档

examples

示例程序和脚本

include

包含()文件

lib

scripts

实用工具脚本

share

错误消息文件

使用MySQL AB's Linux RPM分发进行安装后,将在以下系统目录产生文件:

目录

目录内容

/usr/bin

客户端程序和脚本

/usr/sbin

mysqld服务器

/var/lib/mysql

日志文件,数据库

/usr/share/doc/packages

文档

/usr/include/mysql

包含()文件

/usr/lib/mysql

/usr/share/mysql

错误消息和字符集文件

/usr/share/sql-bench

基准程序

Unix中,可以在你选择的安装位置解压并安装tar文件二进制分发(typically /usr/local/mysql)并在该位置创建以下目录:

目录

目录内容

bin

客户端程序和mysqld服务器

data

日志文件,数据库

docs

文档,ChangeLog

include

包含()文件

lib

scripts

mysql_install_db

share/mysql

错误消息文件

sql-bench

基准程序

配置并编译完源码分发后,便开始安装。默认情况下,可以将文件安装到/usr/local,即在下面的子目录中:

目录

目录内容

bin

客户端程序和脚本

include/mysql

包含()文件

info

Info格式的文档

lib/mysql

libexec

mysqld服务器

share/mysql

错误消息文件

sql-bench

基准程序和crash-me测试

var

数据库和日志文件

在一个安装目录内,源码安装的布局在下列方面不同于二进制安装:

·         mysqld服务器被安装在libexec目录而不是bin目录内。

·         数据目录是var而非data

·         mysql_install_db被安装在bin目录而非scripts内。

·         头文件和库目录是include/mysqllib/mysql而非includelib

执行源码分发根目录下的scripts/make_binary_distribution脚本,你可以用编译过的源码分发版创建你自己的二进制安装。

2.2. 使用二进制分发版的标准MySQL安装

后面几章包括如何在安装软件包格式适合的平台上平台安装MySQL(即执行“二进制安装”)也可以在多种平台上安装MySQL二进制分发版。关于适合所有平台的软件包的通用安装指令参见2.7节,“在其它类Unix系统中安装MySQL”

关于二进制分发版的使用和如何获得的详细信息请参见2.1节,“一般安装问题”

2.3. 在Windows上安装MySQL

MySQL AB已经提供了Windows中安装的MySQL 3.21以上版本,并提供了每天下载MySQL的比率。本节描述在Windows中安装MySQL的过程。

使用Windows版本MySQL安装器,结合GUI配置向导,可以自动安装MySQL,创建选项文件,启动服务器并使默认用户账户安全。

如果你要升级已有的4.1.5版以前的MySQL,你必须执行以下步骤:

1.    获得并安装分发版。

2.    根据需要设置选项文件。

3.    选择想要使用的服务器。

4.    启动服务器。

5.    为初始MySQL账户指定密码。

该过程还适合安装软件包内不包括安装器的MySQL安装。

WindowsMySQL 5.13种分发格式:

·          二进制分发版包含一个设置程序,可以安装你需要的任何内容,因此可以立即启动服务器。

·          源码分发版包含所有使用Visual Studio 2003编译器来构建可执行程序的代码和支持文件。

一般来讲,你应当使用二进制分发版。它比其它的分发版使用起来要简单,不再需要其它工具来启动并运行MySQL

本节描述了如何使用二进制分发版在Windows中安装MySQL。要想使用源码分发版安装,参见2.8.6节,“在Windows下从源码安装MySQL”

2.3.1. Windows系统要求

要想在Windows中运行MySQL,你需要:

·         32Windows操作系统,例如9xMeNT2000XPWindows Server 2003

基于Windows NT的操作系统(NT2000,XP2003),将MySQL服务器做为服务来运行。强烈建议使用基于Windows NT的操作系统。请参见2.3.12节,“以Windows服务方式启动MySQL”

·         TCP/IP协议支持。

·         Windows版本MySQL二进制分发版,可以从http//dev.mysql.com/下载/下载。请参见2.1.3节,“怎样获得MySQL”

注释:如果你从FTP下载分发版,我们建议使用充分的FTP客户端以保证续传,避免下载过程中文件被破坏。

·         可以读取 .zip文件的工具,以解压分发文件。

·         硬盘上有足够的空间保证根据你的需求来解包、安装和创建数据库(一般建议至少有200兆字节)

你还可以有以下可选需求:

·         如果你计划通过ODBC连接MySQL服务器,你还需要一个连接器/ODBC驱动程序。请参见26.1节,“MySQL Connector/ODBC”

·         如果表需要占用的空间大于4GB,则在NTFS或更新的文件系统上安装MySQL。当创建表时不要忘记使用MAX_ROWSAVG_ROW_LENGTH。请参见13.1.5节,“CREATE TABLE语法”

2.3.2. 选择安装软件包

Windows中安装MySQL时,有3MySQL 5.1安装软件包可供选择:

·         基本安装:该安装软件包的文件名类似于mysql-essential-5.1.2-alpha-win32.msi,包含在Windows中安装MySQL所需要的最少的文件,包括配置向导。该安装软件包不包括可选组件,例如嵌入式服务器和基准套件。

·         完全安装:该安装软件包的文件名类似于mysql-5.1.2-alpha-win32.zip,包含在Windows中安装MySQL所需要的全部文件,包括配置向导。该安装软件包包括可选组件,例如嵌入式服务器和基准套件。

·         非自动安装文件:该安装软件包的文件名类似于mysql-noinstall-5.1.2-alpha-win32.zip,包含完整安装包中的全部文件,只是不包括配置向导。该安装软件包不包括自动安装器,必须手动安装和配置。

对于大多数用户,建议选择基本安装。

你的选择会影响你后面必须遵从的安装过程。如果你选择基本安装或完全安装,参见2.3.3节,“用自动安装器安装MySQL”。如果你选择非自动安装MySQL,参见2.3.6节,“通过非安装Zip文件安装MySQL”

2.3.3. 用自动安装器安装MySQL

Windows中安装MySQL时,新用户可以使用MySQL安装帮助和MySQL Configuration Wizard(配置向导)。MySQL安装和配置的方式是使新用户可以立即开始使用MySQL

基本安装和完全安装中均包括MySQL安装帮助和配置向导,建议在大多数标准MySQL安装中选择。例外情况包括想在单个服务器上安装多个实例的用户和想完全控制服务器配置的高级用户。

2.3.4. 使用MySQL安装向导

2.3.4.1. 前言

MySQL安装帮助是MySQL服务器的安装器,使用最新的Microsoft Window安装器技术。结合使用MySQL安装帮助和配置向导,用户安装并 配置完MySQL服务器后便可以直接使用。

MySQL安装帮助是MySQL 5.1服务器分发的标准安装器。使用MySQL安装帮助安装MySQL之前,用户需要手动关闭并卸载已经安装的以前版本的MySQL。关于对以前版本进行升级的详细信息请参见 2.3.4.7节,“升级MySQL”

最近版本的Windows包含了改进版本的Microsoft Windows安装器(MSI)MSI已经成为Windows 2000Windows XPWindows Server 2003应用程序安装的事实标准。MySQL安装帮助中使用了该技术,使安装过程更加灵活、顺利。

Microsoft Windows安装器引擎随着Windows XP的更新而更新;使用以前Windows版本的用户可以参考Microsoft 知识库文章查阅关于升级到最新版Windows安装器引擎的资料。

此外,Microsoft最近已经引入了WiX(Windows 安装器 XML)工具包。这是Microsoft公认的开放源码项目。我们转换到WiX是因为它是一个开放源码项目,可以使用脚本更加灵活地处理整个Windows安装过程。

MySQL装帮助的改进依赖于各用户的支持和反馈。如果你发现MySQL安装帮助缺少对你很重要的某些功能,或如果你发现某个缺陷,请使用我们的MySQL缺陷系统来索取功能或报告问题。

2.3.4.2. 下载并启动MySQL安装向导

可以从http://dev.mysql.com/downloads/下载MySQL服务器安装软件包。如果你下载的安装软件包在Zip文件中,你需要先提取文件。

启动帮助的过程取决于下载的安装软件包的内容。如果有setup.exe文件,双击启动安装过程。如果有.msi文件,双击启动安装过程。

2.3.4.3. 选择安装类型

3种安装类型:Typical(典型安装)Complete(完全安装)Custom(定制安装)

Typical(典型安装)安装只安装MySQL服务器、mysql命令行客户端和命令行实用程序。命令行客户端和实用程序包括mysqldumpmyisamchk和其它几个工具来帮助你管理MySQL服务器。

Complete(完全安装)安装将安装软件包内包含的所有组件。完全安装软件包包括的组件包括嵌入式服务器库、基准套件、支持脚本和文档。

Custom(定制安装)安装允许你完全控制你想要安装的软件包和安装路径。关于定制安装的详细信息请参见2.3.4.4节,“定制安装对话框”

如果你选择Typical(典型安装)Complete(完全安装)安装并点击Next按钮,你将进入确认窗口确认选择并开始安装。如果你选择定制安装并点击Next按钮,你将进入定制安装对话框,参见2.3.4.4节,“定制安装对话框”

2.3.4.4. 定制安装对话框

如果你想要更改MySQL安装帮助安装的安装路径或具体组件,应当选择Custom(定制安装)安装。

所有可用组件列入定制安装对话框左侧的树状视图内。未安装的组件用红色 X 图标表示;已经安装的组件有灰色图标。要想更改组件,点击该组件的图标并从下拉列表中选择新的选项。

可以点击安装路径右侧的Change...按钮来更改默认安装路径。

选择了安装组件和安装路径后,点击Next按钮进入确认对话框。

2.3.4.5. 配置对话框

选择了安装类型和可选安装组件后,则进入确认对话框。该对话框中将显示安装类型和安装路径供检查。

如果你满意设定值要想安装MySQL,点击Install(安装)按钮。要想更改设定值,点击Back按钮。要想退出MySQL安装帮助不再安装 MySQL,点击Cancel按钮。

完成安装后,将出现注册选项和MySQL网址。注册后便可以访问forums.mysql.com处的MySQL论坛,可以在bugs.mysql.com报告缺陷,并可以注册为时事新闻订户。在安装器的最后一个窗口内,提供了安装摘要,并提供选项以启动MySQL Configuration Wizard(配置向导),可以用来创建配置文件,安装MySQL服务并进行安全配置。

2.3.4.6. MySQL安装向导所作的更改

点击Install(安装)按钮后,MySQL安装帮助开始安装过程,并对系统进行下面章节描述的更改。

更改注册表

在典型安装中,MySQL安装帮助在HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB创建Windows注册键值。

MySQL安装帮助根据正安装的服务器的主要版本创建一个键值,例如 MySQL服务器5.1它包含两个字符串值,LocationVersionLocation字符串包含安装目录。在默认安装中,它包含C:\Program Files\MySQL\MySQL Server 5.1\Version字符串包含发布号。例如,安装MySQL Server 5.1.2-alpha,键值包含一个5.1.2-alpha值。

这些注册键值用来帮助外部工具识别MySQL服务器的安装位置,不需要扫描整个硬盘来确定MySQL服务器的安装路径。运行服务器时不需要注册键值,使用noinstall Zip文件时不创建注册键值。

更改启动菜单

MySQL安装帮助在Windows 启动菜单中创建一条新的条目,使用MySQL菜单,根据安装的MySQL的主版本来命名。例如,如果安装了MySQL 5.1, MySQL安装帮助在启动菜单中创建MySQL Server 5.1部分。

将在新启动菜单部分创建下面的条目:

·         MySQL命令行客户端:这是mysql命令行客户端的快捷方式,对其进行配置以连接为root用户。当连接时快捷方式提示输入root用户密码。

·         MySQL服务器实例配置向导:这是MySQL Configuration Wizard(配置向导)的快捷方式。使用该快捷方式来配置新安装的服务器,或重新配置已有的服务器。

·         MySQL文档:可以连接到保存在MySQL服务器安装目录下的文档。采用基本安装方式安装MySQL服务器时,该选项不可用。

更改文件系统

默认情况下,MySQL安装帮助将MySQL 5.1服务器安装到C:\Program Files\MySQL\MySQL Server 5.1,其中Program Files是系统应用程序的默认位置,5.1MySQL服务器的主要版本。这是建议的MySQL服务器的新安装位置,替换了前面的默认位置c\mysql

默认情况下,所有MySQL应用程序保存到目录C:\Program Files\MySQL下,其中Program Files是应用程序在Windows中的默认安装位置。开发机器上的典型MySQL安装应为:

C:\Program Files\MySQL\MySQL Server 5.1
C:\Program Files\MySQL\MySQL Administrator 1.0
C:\Program Files\MySQL\MySQL Query Browser 1.0

该方法使管理和维护具体系统上安装的MySQL应用程序更加容易。

2.3.4.7. 升级MySQL

使用MSI的升级功能,MySQL安装帮助可以自动执行服务器升级。这意味着安装新版本前,不需要手动卸载前面安装的程序。安装新版本前,安装器自动关闭并卸载前面安装的MySQL服务。

只有在主版本号和次要版本号相同的安装之间进行升级时,才能自动进行升级。例如,可以自动从MySQL 4.1.5升级到MySQL 4.1.6,但是不能从MySQL 5.0升级到MySQL 5.1

参见2.3.15节,“在Windows下升级MySQL”

2.3.5. 使用配置向导

2.3.5.1. 前言

MySQL Configuration Wizard(配置向导)可以帮助自动配置Windows中的服务器。MySQL Configuration Wizard(配置向导)问你一系列问题,然后将回答放到模板中生成一个my.ini文件,该文件与你的安装一致。

MySQL Configuration Wizard(配置向导)包含在MySQL 5.1服务器中,目前只适用于Windows用户。

MySQL Configuration Wizard(配置向导)在很大程度上是MySQL AB经过多年从许多用户收到的反馈的结果。然而,如果你发现它缺少某些对你很重要的功能,或如果你发现一个缺陷,请使用我们的MySQL 缺陷系统来索取功能或报告问题。

2.3.5.2. 启动MySQL配置向导

一般情况当MySQL安装帮助退出时,从MySQL安装帮助启动MySQL Configuration Wizard(配置向导)。还可以点击Windows启动菜单中MySQL服务器实例配置向导条目中的MySQL部分来启动MySQL Configuration Wizard(配置向导)。

并且,还可以进入MySQL安装bin目录直接启动MySQLInstanceConfig.exe文件。

2.3.5.3. 选择维护选项

如果MySQL Configuration Wizard(配置向导)检查到my.ini文件,你可以选择重新配置已有的服务器,或通过删除my.ini文件并停止、卸载MySQL服务来卸载服务器实例。

要想重新配置已有的服务器,选择Re-configure Instance选项并点击Next按钮。已有的my.ini文件重新命名为mytimestamp.ini.bak,其中timestampmy.ini文件创建是的日期和时间。要想卸载已有的服务器实例,选择Remove Instance选项并点击Next按钮。

如果选择了Remove Instance选项,则进入确认窗口。点击Execute按钮:MySQL Configuration Wizard(配置向导)停止并卸载MySQL服务,然后删除my.ini文件。服务器安装和自己的data文件夹不删除。

如果选择了Re-configure Instance选项,则进入配置类型对话框,可以选择你想要配置的安装类型。

2.3.5.4. 选择配置类型

当启动MySQL Configuration Wizard(配置向导)重新安装MySQL,或为已有安装选择Re-configure Instance选项,则进入配置类型对话框。

可以选择两种配置类型:Detailed Configuration(详细配置)Standard Configuration(标准配置)Standard Configuration(标准配置)选项适合想要快速启动MySQL而不必考虑服务器配置的新用户。详细配置选项适合想要更加细粒度控制服务器配置的高级用户。

如果你是MySQL的新手,需要配置为单用户开发机的服务器,Standard Configuration(标准配置)应当适合你的需求。选择Standard Configuration(标准配置)选项,则 MySQL Configuration Wizard(配置向导)自动设置所有配置选项,但不包括服务选项和安全选项

Standard Configuration(标准配置)设置选项可能与安装MySQL的系统不兼容。如果系统上已经安装了MySQL和你想要配置的安装,建议选择详细配置

要想Standard Configuration(标准配置),请分别参阅2.3.5.11节,“服务选项对话框”2.3.5.12节,“安全选项对话框”的服务选项和安全选项

2.3.5.5. 服务器类型对话框

可以选择3种服务器类型,选择哪种服务器将影响到MySQL Configuration Wizard(配置向导)对内存、硬盘和过程或使用的决策。

·         Developer Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行着多个桌面应用程序。将MySQL服务器配置成使用最少的系统资源。

·         Server Machine(服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起运行,例如FTPemailweb服务器。MySQL服务器配置成使用适当比例的系统资源。

·         Dedicated MySQL Server Machine(专用MySQL服务器):该选项代表只运行MySQL服务的服务器。假定运行没有运行其它应用程序。MySQL服务器配置成使用所有可用系统资源。

2.3.5.6. 数据库使用情况对话框

通过Database Usage(数据库使用)对话框,你可以指出创建MySQL表时使用的表处理器。通过该选项,你可以选择是否使用InnoDB储存引擎,以及InnoDB占用多大比例的服务器资源。

·         Multifunctional Dat