第2章 MySQL安装和升级

目录

2.1 一般安装指导
2.1.1 选择要安装的MySQL发行版版本
2.1.2 如何获得 MySQL
2.1.3 通过MD5校验或GnuPG验证软件包的完整性
2.1.4 安装布局
2.1.5 编辑器建立特性
2.2 使用二进制文件在Unix或Linux上安装MySQL
2.3 在Microsoft Windows上安装MySQL
2.3.1 基于Microsoft Windows安装MySQL
2.3.2 选择一个安装包
2.3.3 MySQL安装助手
2.3.4 MySQL 通知器
2.3.5 使用免安装Zip文件安装MySQL
2.3.6 安装的故障诊断与排除
2.3.7 安装后的程序
2.3.8 升级 MySQL
2.4 在OS X上安装MySQL
2.4.1 一般注意事项
2.4.2 使用本地包安装MySQL
2.4.3 安装MySQL启动守护进程
2.4.4 安装和使用MySQL偏好面板
2.5 在Linux上安装MySQL
2.5.1 使用YUM库安装MySQL
2.5.2 使用MySQL APT 库安装MySQL
2.5.3 使用MySQL SLES 库安装MySQL
2.5.4 使用Oracle提供的RPM包安装MySQL
2.5.5 使用Oracle提供的Debian包安装MySQL
2.5.6 使用本地软件库安装MySQL
2.5.7 使用docker安装MySQL
2.5.8 使用juju安装MySQL
2.5.9 使用systemd管理MySQL 服务器
2.6 在Solaris上安装MySQL
2.6.1 使用Solaris PKG安装MySQL
2.7 在FreeBSD上安装MySQL
2.8 使用源码安装MySQL
2.8.1 基于源码安装MySQL
2.8.2 使用标准发行版源码安装MySQL
2.8.3 使用开发源码树安装MySQL
2.8.4 MySQL源码配置选项
2.8.5 编译MySQL的问题处理
2.8.6 MySQL配置和第三方工具
2.8.7 生成MySQL Doxygen文档
2.9 安装后的设置和测试
2.9.1 初始化数据目录
2.9.2 启动服务器
2.9.3 测试服务器
2.9.4 安全化MySQL初始账户
2.9.5 自动启动关闭MySQL
2.10 升级和降级MySQL
2.10.1 升级 MySQL
2.10.2 降级 MySQL
2.10.3 重建和修复表或索引
2.10.4 拷贝数据库到另外一台机器
2.11 Perl 安装注意事项
2.11.1 在Unix上安装Perl
2.11.2 在Windows上安装ActiveState Perl
2.11.3 Perl DBI/DBD 接口使用问题

这一章描述了如何获取并安装MySQL。后续摘要和章节会提供了详细信息。如果你计划将现有的MySQL版本升级到新版本,而不是直接安装MySQL,可以阅读 2.10.1 节, “升级MySQL”,而且,在升级前你应该考虑跟升级程序和问题的相关信息。

如果你对从另一个数据库系统迁移到MySQL比较感兴趣,请参阅 附录 A.8节, “MySQL 8.0 常见问题: 迁移”,其中包含一些关于迁移的常见问题和答案。

安装MySQL通常遵循以下步骤:

  1. 确定您的平台是否支持MySQL的运行。

    请注意,并不是所有的平台都是同样适用于运行MySQL,并且不是在所有平台运行的MySQL 得到了oracle公司的官方支持。 有关官方支持的平台的信息,请访问MySQL web网站 http://www.mysql.com/support/supportedplatforms/database.html

  2. 选择要安装的版本。

    可获得的MySQL版本有多个,大部分有多种发行版。你可以选择包含二进制(预编译)代码或源码形式的发行版。如果不能确定,则使用二进制发行版。Oracle还对那些希望看到最近的研发和测试新代码的人,提供了MySQL源代码。想确定你应该使用哪个版本和类型,请参阅 2.1.1 节, “选择要安装的MySQL分发版本”

  3. 下载你想安装版本。

    相关说明,请参阅 2.1.2 节, “如何获得MySQL”。验证发行版完整性的指令,请参阅 , 使用 2.1.3 节, “通过MD5校验或GnuPG验证软件包的完整性”中的说明。

  4. 发行版安装

    针对二进制代码和源码分发版的安装说明在2.2 节, “在 Unix/Linux 上使用二进制安装MySQL”

    使用源码包安装或者最新的开发版源码包安装,请参阅 2.8 节, “源码安装MySQL”

  5. 安装后的必要设置。

    安装MySQL后,请参阅 2.9 节, “安装后的设置和测试” 获得更多有关保护MySQL正常运行的信息,也可以参阅 2.9.4 节, “安全化MySQL初始账户”。这一节描述的是,如果将MySQL初始root 用户更安全, root用户初始的时候是没有密码的,直到手动指定后才有。

  6. 如果您想运行MySQL 基准测试脚本,那么平台上的Perl必须可以被MySQL使用,参阅 2.11 节, “Perl 安装注意事项”

在不同平台和环境中安装MySQL的说明,请参考相关平台:

2.1 一般安装指导

接下来的章节包含了选择、下载和验证您的发行版所必须的信息,在后面部分的说明,描述了如果安装您选择的发行版。对于二进制的发行版安装,请参阅 2.2 节, “在Unix/Linux上使用通用二进制文件安装MySQL” 或者使用相应平台的说,用源码构建MySQL,可以使用 2.8 节, “源码安装MySQL”中的说明。

2.1.1 选择要安装的MySQL发行版版本

MySQL可以在很多操作系统平台上运行,对于支持发行版 GA 版 的MySQL平台,请参阅 http://www.mysql.com/support/supportedplatforms/database.html。 对于开发版的MySQL,可在许多平台上构建 http://dev.mysql.com/downloads/mysql/8.0.html。 想要了解更多MySQL支持,请参阅 http://www.mysql.com/support/

当准备安装MySQL时,需要选择使用的版本和版本格式(二进制或源码)。

首先,决定是安装稳定版还是开发版。开发版拥有最新的特性,但是不推荐在生产环境使用,而被称为生产或稳定版本,是为了在生产环境使用,因此我们推荐使用最新的稳定版

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

  • 第1个数字(8)是主版本号。

  • 第2个数字 (0)是小版本号,合起来,构成发布系列的编号,这个系列编号描述了稳定的特性集。

  • 第3个数字 (1) 是此发布系列的版本号,它会随着每个修复版递增,通常最好的选择就是本系列的最新版。

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

  • dmr 表示一个发展里程碑版本(DMR),MySQL发展历程使用了,每个里程碑都引入了一小部分经过彻底测试的特性。根据社区成员的反馈,从一个里程碑到下一个之间,有些特性可能会改变。甚至可能被移除。里程碑版本中的特性也可以认为是阶段性的成果。

  • rc 表示一个发布候选版本(RC)。通过MySQL的内部测试,发布候选版本被认为是稳定的版本。可能仍然会在RC版本中引入新的特性,但是重点修复之前引入新特性的bug。

  • 没有后缀的表示通用版本(GA)或者生产版本,(GA)表示稳当版本,它已经顺利通过了早期的发布阶段,并且被认为是可靠的,没有严重bug,适合在生产系统中使用。

一个系列的开发流程是,先从DMR版本,接着是RC版本,最后是GA版本。

选择完要安装的MySQL版本后,就要决定选择什么格式的安装包。从众多案例中得到,最好是使用二进制格式。因为Oracle以原生态格式给许多平台提供二进制格式安装包。例如,Linux的RPM包或OS X的DMS包。 也有其他常用格式的发行版文件,如,Zip压缩包或压缩的tar 文件。在Windows上,您可以使用 MySQL安装助手 来安装二进制发行版。

某些情况下,最好是使用源码安装MySQL:

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

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

    额外信息,请参阅 2.8.4 节, “MySQL源码安装配置选项”

  • 您想要将mysqld 配置一些标准二进制分发版中没有的特性。

  • 您想要阅读或修改MySQL中的C和C++代码以获得一个源码分支版。

  • 源码包比二进制包有更多的测试和示例。

2.1.2 如何获得MySQL

检查MySQL下载页(http://dev.mysql.com/downloads/ )获取当前版本和下载指令信息。 关于MySQL下载镜像站点的完整的最新列表,参见 http://dev.mysql.com/downloads/mirrors.html。你可以在那里找到MySQL所有的镜像信息,以及如果报告一个坏的或过期的镜像。

对于使用yum来管理RPM的Linux平台,可以使用MySQL的Yum库来安装MySQL。详细描述,参阅 2.5.1 节, “使用MySQL YUM库在Linux平台安装MySQL”。 对于使用Debian的Linux平台,可以使用 MySQL的APT库来安装MySQL。详细描述,参阅 2.5.2 节, “使用MySQL APT库在Linux平台安装MySQL”

对于SUSE Linux (SLES)企业级平台,可以使用 MySQL的SLES库来安装MySQL。详细描述,参阅 2.5.3节, “使用MySQL SLES库在Linux平台安装MySQL”

获取最新开发源码,请查看 2.8.3 节, “使用开发版源码安装MySQL”.

2.1.3 使用MD5校验或GnuPG验证包的完整性

下载您需要的安装包之后,尝试在安装前对包的完整性进行检查,以确保包没有被篡改过,下面有三种检查方法:

  • MD5 校验和

  • 使用GnuPG的加密签名,GnuPG隐私保护

  • 对于RPM包,有内置的RPM完整性验证机制

下面描述如果使用这些方法。

如果您注意到MD5校验和或GPG签名不匹配,首先尝试重新下载相应的安装包,有可能您的安装包是来自其他站点的镜像。

2.1.3.1 验证MD5校验和

下载MySQL安装软件包后,你应当确保它的MD5校验和与提供的MySQL下载页上的相匹配。每个安装软件包都有唯一的校验和,正确的校验和显示在下载页面,以便您与之对比。

每个操作系统和设置有提供了对用版本的工具来检查MD5校验和。经典的命令就是 md5sum,也可能叫做 md5,而有些操作系统就没有提供。在Linux平台上,它是GNU Text Utilities 包的一部分, 同时适用于大部分的平台。当然你也可以从 http://www.gnu.org/software/textutils/下载源码。如果您安装了OpenSSL ,您还可以使用 openssl md5 包名命令来替代。Windows 平台命令行上的 md5 程序可以从 http://www.fourmilab.ch/md5/获得。 winMd5Sum 是一个图形界面的检查工具,可以从 http://www.nullriver.com/index/products/winmd5sum获得。 Microsoft Windows上示例名是 md5.exe

Linux 和 Microsoft Windows 示例:

shell> md5sum mysql-standard-8.0.3-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945  mysql-standard-8.0.3-linux-i686.tar.gz
shell> md5.exe mysql-installer-community-8.0.3.msi
aaab65abbec64d5e907dcd41b8699945  mysql-installer-community-8.0.3.msi

您应该将得到的校验和去和相应包所在的下载页面上显示的内容做比对。

提示

确保验证的是存档文件 (例如,.zip, .tar.gz, 或 .msi 文件),且是整个文件,而不是其他的某个文件。换句话说,就是在没有萃取文件之前做校验。

2.1.3.2 使用GnuPG检查签名

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

我们使用GnuPG(GNU Privacy Guard)对下载MySQ软件包进行签名。 GnuPG 是开放源的,用来替代Phil Zimmermann著名的Pretty Good Privacy (PGP)。 大部分Linux平台都会默认安装GnuPG GnuPG。关于GnuPG的详细信息,以及如何获得和安装,请参阅 http://www.gnupg.org/

要想验证具体安装软件包的签名,你首先需要获得我们的公共GPG构建密钥的拷贝。密钥的名字是mysql-build@oss.oracle.com,这个可以从 http://pgp.mit.edu/页面下载。 另外,可以从下面的文本直接剪切并粘贴密钥:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)

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
roUTAKClYAhZuX2nUNwH4vlEJQHDqYa5yQ==
=HfUN
-----END PGP PUBLIC KEY BLOCK-----

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

shell> gpg --import mysql_pubkey.asc
gpg: key 5072E1F5: public key "MySQL Release Engineering
<mysql-build@oss.oracle.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found

你还可以使用公钥ID,5072E1F5从公共密钥服务器下载钥匙:

shell> gpg --recv-keys 5072E1F5
gpg: requesting key 5072E1F5 from hkp server keys.gnupg.net
gpg: key 5072E1F5: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
1 new user ID
gpg: key 5072E1F5: "MySQL Release Engineering <mysql-build@oss.oracle.com>"
53 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:           new user IDs: 1
gpg:         new signatures: 53

如果您想将钥匙导入RPM配置中来验证RPM安装包,您可以直接这样导入:

shell> rpm --import mysql_pubkey.asc

如果您遇见问题或者需要RPM的特殊信息,请参阅 2.1.3.4 节, “使用RPM检查签名”

在不并导入公钥后,下载所需的MySQL安装包和相应的签名,这些签名也可以从下载页面获得,签名文件的名称与发行文件名相同,后缀扩展名是 .asc ,如下表所示。

表 2.1 源码文件中的MySQL 安装包和签名文件

文件类型文件名
发行文件mysql-standard-8.0.3-linux-i686.tar.gz
签名文件mysql-standard-8.0.3-linux-i686.tar.gz.asc

确保两个文件在相同的文件夹下,然后运行下面的命令,为发行文件验证签名:

shell> gpg --verify package_name.asc

如果安装包是有效的,您会看到一个 "Good signature" ,类似于:

shell> gpg --verify mysql-standard-8.0.3-linux-i686.tar.gz.asc
gpg: Signature made Tue 01 Feb 2011 02:38:30 AM CST using DSA key ID 5072E1F5
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"

Good signature意味着文件的签名是有效的,与我们网站上的签名相比较。但你可能也会看到这样的警告:

shell> gpg --verify mysql-standard-8.0.3-linux-i686.tar.gz.asc
gpg: Signature made Wed 23 Jan 2013 02:25:45 AM PST using DSA key ID 5072E1F5
gpg: checking the trustdb
gpg: no ultimately trusted keys found
gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5

这是正常的,因为它们是根据您的设置和配置。这是对它们的解释是这样的: Here are explanations for these warnings:

  • gpg: no ultimately trusted keys found: 这意味着您或你的网站的特殊密钥不是"完全信任",这对于文件签名的验证来说是可以的。意思就是签名正确。

  • 警告: 此密钥没经过签名认证!没有找到签名所属者。 : 这指的是您拥有真实公钥的级别。这取决于个人情况,理想情况下,我们的开发人员会亲自将密钥给您,但是更多情况下,需要您自行下载。 是下载时被篡改了吗?可能不会,但还是取决于您自己,建立可信任的网络是一种信任它们的方式。

有关如何使用公共密钥请参阅GPG 文档以了解更多信息。

2.1.3.3 使用Gpg4win为Windows进行签名检查

2.1.3.2 节, “Signature Checking Using GnuPG” 中描述了使用GPG如果验证下载的MySQL包 那个指南也适用于Microsoft Windows环境,另外一个选择就是使用图形界面工具,如:Gpg4win。 我们这里的示例使用的是基于Gpg4win同时附带Kleopatra图形界面,当然你也可以使用其他的工具。

下载并安装Gpg4win, 然后载入Kleopatra。对白类似如下:

 2.1 加载Kleopatra后初始化屏幕

Initial screen after loading Kleopatra

接下来, 添加MySQL 发行版工程证书,做完这一步,点击 File, Lookup Certificates on Server. 在搜索框输入 "Mysql Release Engineering" 然后点击Search

 2.2 找到MySQL发行版工程证书

Finding the MySQL Release Engineering certificate

选择 "MySQL Release Engineering" 证书. 指纹和键-ID 必须是 "5072E1F5", 或选择 Details... 来确认该证书是有效的。现在, 单击 Import进行导入。 将会显示一个对话框,选择 Okay, 然后证书会显示在 Imported Certificates 表单中。

接下来, 为证书的配置选择信任级别。选择证书,然后在主菜单中选择 Certificates, Change Owner Trust...。建议选择给我们的证书I believe checks are very accurate ,否则您可以不能验证我们的签名。选择 I believe checks are very accurate 然后单击 OK

2.3 改变信任级别

Changing the Trust level

下一步,验证下载的MySQL安装包文件,这里同时需要包文件和签名。签名文件的文件名必须跟包文件的相同,只是文件后缀不一样。如示例所示,每个MySQL产品的下载页面都有签名文件。 ,如果乜有,您就必须创建一个这样后缀的签名文件。

表 2.2 Microsoft Windows平台上的MySQL安装助手的MySQL文件包和签名文件

文件类型文件名
发行文件mysql-installer-community-8.0.3.msi
签名文件mysql-installer-community-8.0.3.msi.asc

要保证两个文件放在同样的文件目录下,然后运行下面的命令来验证。要么把签名(.asc) 文件拖到Kleopatra的文件中,要么从 File, Decrypt/Verify Files...加载文件。然后选择 .msi 文件或 .asc 文件。

2.4 解密/验证文件对话框

The Decrypt/Verify Files dialog

点击 Decrypt/Verify 来检查文件, 最常见的两个结果如下,尽管黄色的应该看起来有问题,但是里面显示的说明文件验证通过,您可以运行安装助手了。

 2.5 解密/验证 结果: 成功

The Decrypt/Verify Results: Good

看红色文字: "The signature is bad" 这个错误,意味着文件无效,如果看到这个错误,就不要执行MSI文件。

 2.6 解密/验证 结果: 失败

The Decrypt/Verify Results: Bad

2.1.3.2 节, “使用GnuPG检查签名”中,会解释为什么您的结果不是绿色的Good signature

2.1.3.4 使用RPM检查签名

对于RPM 包是没有独立签名文件,GPG 签名和 MD5 校验和内置在RPM包中。您可以使用下面命令来验证包:

shell> rpm --checksig package_name.rpm

示例:

shell> rpm --checksig MySQL-server-8.0.3-0.linux_glibc2.5.i386.rpm
MySQL-server-8.0.3-0.linux_glibc2.5.i386.rpm: md5 gpg OK
提示

如果您使用的是RPM 4.1,并且经常显示(GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) 即使您已经将MySQL公钥导入到您自己的 GPG密钥中,您还是需要将公钥导入到RPM keyring中。在RPM 4.1中不在使用您个人的 GPG keyring(或 GPG 自己),相反的RPM 维护了一个单独的 keyring,因为它是一个系统级的应用程序。用户的GPG公钥是一个特定于用户的文件。要将MySQL公钥导入到RPM keyring中, 首先要获得密钥,然后使用 rpm --import 导入key。例如:

shell> gpg --export -a 5072e1f5 > 5072e1f5.asc
shell> rpm --import 5072e1f5.asc

Alternatively, rpm 同样支持直接从URL加载key,您可以使用下面手册页:

shell> rpm --import http://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html

如果您需要获得MySQL公钥,请参见 2.1.3.2 节, “使用GnuPG检查签名”

2.1.4 安装布局

不同的安装类型,有着不同的安装布局(如:本地包,二进制tar包,或源码tar包)。各种布局已经相应的安装类型或安装平台的章节中给出,如下所述,七里沟主要,来自Oracle以外的供应商的安装布局可能与这些布局不同。

2.1.5 Compiler Specific Build Characteristics

在某些情况下,用于构建MySQL的编译会影响特性的可用性。本节中的注释适用于Oracle公司提供的二进制发行版。或者您可以自己使用源码编译。

icc (Intel C++ Compiler) Builds

使用icc构建的服务器有以下特征:

  • 不包括SSL 支持。

2.2 在Unix/Linux使用二进制文件安装MySQL

Oracle 提供了一组二进制发行版的MySQL安装包,其中包括很多平台使用的tar压缩文件格式(.tar.gz 扩展名)的通用二进制发行版,以及特定平台的特定二进制包。

本节涵盖的是使用发行版二进制压缩的tar文件包来安装MySQL。至于其它格式安装包的特殊平台安装,请看其他章节,例如,对于发行版Windows平台,参见 2.3 节, “在Microsoft Windows安装MySQL”.

获取MySQL,请参见 2.1.2 节, “如果获得 MySQL”

发行版的二进制tar压缩文件,是按照 mysql-VERSION-OS.tar.gz格式命名的,其中 VERSION 版本号(例如, 8.0.3), 而OS 表示发行的操作系统的类型(例如,pc-linux-i686winx64)。

警告

如果你之前在您的操作系统上本地包管理系统安装过MySQL,如yumapt-get,那么现在使用本地二进制文件安装可能会遇到问题。 所以要保证您之前安装的MySQL已经完全移除,包括任何额外的文件,如,老版本的数据文件。您还应该检查配置文件 /etc/my.cnf 或者 /etc/mysql 目录也已经删除。

关于使用官方MySQL包替换第三方安装包的内容,请参见相关的 Apt 指南Yum指南

警告

MySQL依赖于libaio 库。如果本地没有安装这个库,数据目录的初始化以及后面服务器的启动都会失败。所以有必要安装它,您可以使用相应的包管理器来安装它。例如,在基于YUM的系统上:

shell> yum search libaio  # 查找信息
shell> yum install libaio # 安装库

或,在基于APT的系统:

shell> apt-cache search libaio # 查找信息
shell> apt-get install libaio1 # 安装库

如果你遇到问题,并且想要以bug的形式反馈,请参考1.7 节, “如果反馈bug和问题”

在Unix上,,使用发行版的二进制tar压缩文件, 解压到你选择要安装的位置 (通常是 /usr/local/mysql),这将创建下面表格中的目录。

表2.3 通用Unix/Linux 二进制包的MySQL安装布局

目录目录的内容
binmysqld 服务器, 客户端以及相关实用程序
data日志文件, 数据文件
docs信息格式的MySQL手册
manUnix手册页面
include包括 (header)文件
lib各种库文件
share其他支持文件, 包括错误信息,配置文件样例,数据安装的SQL

调试版的mysqld 二进制文件可用作 mysqld-debug。 使用发行版的源码,配合适当的配置选项来开启支持调试,这样就可以编译属于自己调试版MySQL。参见  2.8节, “Installing MySQL from Source”.

使用发行版的二进制文件安装MySQL,命令顺序如下:

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 750 mysql-files
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data mysql-files
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
注意

这个过程的前提是,您有系统的root (管理员) 权限,或者,您在每个命令前加上sudo (Linux) 或 pfexec (Solaris) 命令。

mysql-files 目录是 secure_file_priv系统变量的一个值,用来提供合适的位置,从而限制对特定目录的导入/导出操作。请参见 5.1.5 节, “服务器系统变量”

下面详细的介绍安装二进制发行版的步骤。

创建一个MySQL用户和组

如果您的系统上目前还没有用于运行mysqld的用户和组,你需要创建一个,下面的命令是添加mysql 组和 mysql 用户。 您也可以用其他名字,来代替mysql。 如果这样的话,后面的说明要就要替换成相应的名称了。在不同版本的Unix上useraddgroupadd的语法可能略有不同,或者可能名字都不一样,如: adduseraddgroup

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
注意

只是需要所属权限,而非登录,所以在您的服务器上,在 useradd 命令上加上 -r and -s /bin/false 选项来创建一个没有登录权限的用户。如果操作系统的 useradd 命令不支持这些选项可以忽略。

获取和解压发行包

选择一个你想要安装的目录,同时将发行包解压到这个目录下。例如这里将发行包解压到/usr/local。 确保你在 /usr/local目录下有创建文件和目录的权限,如果这个目录受保护,那么你必须使用 root用户来执行。

shell> cd /usr/local

使用 2.1.2 节, “如何获得MySQL”中说明的来获得发行包。对于发行的二进制版本,都是使用相同的MySQL发行版源码编译而来的。

在安装目录下打开发行包,如果tar支持z选项就可以解压发行包。

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

tar 命令会创建一个名为 mysql-VERSION-OS的目录。

为了使用压缩的tar文件二进制发行版安装MySQL,您的系统必须有GNUgunzip 来解压缩包,并且合理的用tar来打开它。如果您的tar程序支持z选项,那么它既可以解压缩也可以打开文件。

GNU tar是众所周知的。某些操作系统上提供的标准 tar不能打开拥有长文件名的MySQL发行版包。所以你需要下载并安装tar,或如果可以的话, 可以使用一个预安装版的 GNU tar,通常可以使用GNU或开源软件目录中的gnutar, gtar, 或 例如: /usr/sfw/bin/usr/local/bin。可以从http://www.gnu.org/software/tar/获得 GNU tar

如果您的tar 不支持 z 选项,可以使用 gunzip 来解压包,同时使用tar 打开包。组合命令如下:

shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -

下一步, 给安装目录创建一个符号链接 tar:

shell> ln -s full-path-to-mysql-VERSION-OS mysql

ln命令是给安装目录创建了一个软连接,这样就能更方便的进入到/usr/local/mysql。还可以将/usr/local/mysql/bin 目录添加到 PATH 变量中,这样就可以省去每次在客户端使用的时候都要键入完整的路径名:

shell> export PATH=$PATH:/usr/local/mysql/bin

执行安装后的设置

安装后的剩余问题,包括所有权和访问权的设置和分配、数据目录的初始化,启动MySQL服务器以及设置配置文件的说明,请参见 2.9 节, “安装后的设置和测试”

2.3 在Windows系统上安装MySQL

重点

MySQL社区版8.0 需要运行在有安装Visual C++ 2015扩展包的Windows平台上。 用户在安装MySQL服务器之前需要确保Visual C++ 2015扩展包已经安装,此包可以从这里下载 Microsoft 下载中心

用于Microsoft Windows平台的MySQL,有32位和64位两个版本 更多有关Windows平台支持的信息,请参见 http://www.mysql.com/support/supportedplatforms/database.html

在Microsoft Windows平台上有不同的方式安装MySQL。

MySQL 安装方法

最简单醉被推荐的方式就是下载MySQL安装助手(对于Windows系统),它会在您的操作系统上,给您安装配置好所有的MySQL产品。如下面:

  1. http://dev.mysql.com/downloads/installer/ 下载MySQL安装助手,然后执行它。

    注意

    不像标准的MySQL安装助手,轻量级的 "web-community" 版没有绑定任何MySQL应用程序,她仅仅是下载您选择安装的MySQL产品。

  2. 在您的系统上选择合适的Setup Type 通常情况下,您会选择 Developer Default 来安装MySQL和一些开发相关的工具,其中比较实用的工具如:MySQL 工作台,或选择 Custom 来手动的选择您想要安装的MySQL产品。

    注意

    因为一个系统中可以存在多个版本的MySQL,所以你可以选择一个或者多个版本。

  3. 按照MySQL安装助手的说明完成安装整个过程。会安装几个MySQL产品并启动MySQL服务器。

现在MySQL已经安装好了,现在如果把MySQL配置为一个服务项,那么以后MySQL会随着Windows开机自动启动。

注意

您可能也会安装其他有用的MySQL产品,像MySQL工作台和MySQL通知器。加载 第 30 章, MySQL 工作台 来检查MySQL服务器的连接,而 2.3.4 节, “MySQL 通知器” 可以查看连接状态 默认情况下,安装完MySQL后,这两个程序会自动启动。

这个过程中还会在系统上安装MySQL安装助手程序,之后您可以通过MySQL安装助手来升级或配置您系统上的MySQL产品。

额外的安装信息

很有可能MySQL是作为一个标准的应用程序运行或作为一个Windows服务,当作为服务时,您可以通过标准的Windows服务管理工具监控和控制MySQL服务器的操作。更多信息,请参阅 2.3.5.8 节, “以一个Windows服务启动MySQL”

通常情况,您应该使用具有管理员权限的账户来安装MySQL,不然,你可能会遇到某些操作问题,如,编辑PATH环境变量或访问 服务控制管理器。一旦完成安装,MySQL就不在需要具有管理员权限的用户来执行。

对于在Windows上使用MySQL的限制列表,请参见 C.10.5 节, “Windows 平台限制”

除了MySQL服务器包,您可能需要或想要其他的组件来帮助您使用,这些包括,但不仅限于:

  • 要使用ODBC连接到MySQL服务器,必须有一个Connector/ODBC驱动程序。更多信息,包括安装和配置说明, 请参阅MySQL Connector/ODBC 开发指南

    注意

    MySQL安装助手会为您安装和配置MySQL Connector/ODBC。

  • 让.NET 应用程序使用MySQL,您必须有Connector/Net 驱动程序,更多信息,包括安装和配置说明,请参阅 MySQL Connector/Net 开发指南.

    注意

    MySQL安装助手会为您安装和配置MySQL Connector/Net 。

对于Windows系统的发行版MySQL的下载在 http://dev.mysql.com/downloads/。找到 2.1.2 节, “如何获得 MySQL”

对于Windows系统,发行版的MySQL有多个格式,这里会详细介绍。通常来说,您应该使用MySQL安装助手,它比老的MSI包含更多功能和MySQL产品。使用它比zip文件更简便,同时您不必附加其它工具来启动和运行MySQL。 MySQL安装助手会自动的安装MySQL服务器及附加的MySQL产品、创建选项文件、启动服务器,添加默认账户等。关于如何选择安装包的信息,请参见  2.3.2节, “Choosing An Installation Package”.

  • 一个发行版的MySQL安装助手,包括MySQL服务器及附加MySQL产品,包括MySQL工作台、MySQL通知器和MySQL for Excel。未来MySQL安装助手还能用于升级这些产品。

    关于使用MySQL安装助手安装MySQL的说明,请参阅 2.3.3 节, “Windows系统上的MySQL安装助手”

  • 标准的发行版二进制包(打包为zip文件格式)包含所有必须的文件。您可以将这些文件解压到您所选择的位置。这个包含有完整的Windows MSI安装包中的所有文件,但是不包括安装程序。

    关于使用Zip文件安装MySQL的说明,请参阅 2.3.5 节, “Microsoft Windows上使用解压版zip安装MySQL Using a noinstall Zip Archive”.

  • 使用 Visual Studio编译器能将发行的版源码(包括所有的代码和支持文件)构建成可执行文件。

    关于使用源码安装MySQL的说明,请参阅 2.8 节, “源码安装MySQL”

Windows系统上MySQL的注意事项:

  • 大表支持

    如果您需要大于4GB的表,您需要将MySQL安装在NTFS 或新的文件系统上。并且建表的时候别忘记使用 MAX_ROWSAVG_ROW_LENGTH ,请参阅 13.1.15 节, “CREATE TABLE 语法”

  • MySQL和杀毒软件

    病毒扫描软件,如:诺顿/赛门铁克 ,对包含MySQL数据和临时表的目录的扫描会引起问题,杀毒软件不仅会影响MySQL性能,还会错误的将某些MySQL的内容做为垃圾处理。 这是因为杀毒软件使用的扫描机制,以及MySQL的快速更新不同的文件,导致这些文件很可能被认为是潜在的安全风险。

    安装MySQL后,建议取消杀毒软件对MySQL主目录 (datadir用于存储表数据)的扫描。通常杀毒软件可以设置忽略对设置目录的扫描。

    此外,默认情况下,MySQL在标准的Windows临时目录中创建临时文件。为了阻止这些临时文件被扫描,需要为MySQL配置一个独立的临时文件,同时将此文件添加到杀毒软件的忽略目录中。 为此,在配置文件my.ini tmpdir 参数中添加一个配置选项。更多信息,请参见2.3.5.2节, “创建选项文件”

2.3.1 Microsoft Windows上MySQL的安装布局

对于MySQL 8.0在Windows系统上的默认安装目录位置是C:\Program Files\MySQL\MySQL Server 8.0。一些Windows用户更倾向于将其安装在C:\mysql, 这个目录之前是作为默认目录,当然他们的子目录还是相同。

使用下表的结构,所有的文件都位于父目录下。

表 2.4 Windows下MySQL的默认布局

目录目录内容备注
binmysqld 服务, 客户端和实用程序 
%PROGRAMDATA%\MySQL\MySQL Server 8.0\日志文件, 资料库Windows系统变量%PROGRAMDATA% 默认是 C:\ProgramData
examples示例程序和脚本 
include包括(header) 文件 
libLibraries 
share其他支持文件,包括错误信息,字符设置文件,配置样例文件,数据库SQL 

如果您实用MySQL安装助手安装MySQL,它会创建并设置服务器需要用到的数据目录,并在安装目录在创建一个名为data 的数据目录,这个目录是原始的template。安装完成后,可以复制template目录来设置额外的MySQL实例。 请参见5.7 节, “一台机器上运行多个MySQL实例”

2.3.2 选择一个安装包

对于MySQL 8.0, 在Windows上,我们提供多种格式的MySQL安装包。

注意

程序数据库(PDB)文件(以 pdb为扩展名) 在出现问题时,调试MySQL安装时提供信息。这些文件包含在发行版的压缩文件中(不包含在MSI发行版中)。

  • MySQL 安装助手: 该安装软件包的文件名类似于 mysql-installer-community-8.0.3.0.msimysql-installer-commercial-8.0.3.0.msi,并且你用MSIs来自动安装MySQL服务器和其它产品。 它本身就能下载并应用更新,还能对其他MySQL产品更新,同样还能配置一些非服务器产品。

    这些被安装的产品是可选的,其中包括,样例和示例文档,连接器(如 C, C++, J, NET, 和 ODBC), MySQL 工作台, MySQL 通知器, MySQL for Excel, 以及MySQL服务器的其他组件。

    注意

    MySQL 不包含调试二进制/信息组件(包括 PDB 文件)。它们在独立的ZIP文件中,文件名是 mysql-VERSION-winx64-debug-test.zip for 64-bit 和 mysql-VERSION-win32-debug-test.zip for 32-bit。

    MySQL安装助手对所有的Windows支持的MySQL版本起作用。( http://www.mysql.com/support/supportedplatforms/database.html)。

    注意

    因为MySQL安装助手不是Microsoft Windows的本地组件,同时依赖于.NET,因此不能工作在简版的系统上,像Windows Server 2008"服务器核心"版本。

    使用MySQL安装助手安装MySQL的说明,参参见 2.3.3 节, “Windows上的MySQL安装助手”

  • 非安装压缩包: 包含处配置向导(GUI)以外,完全安装包中的所有文件。这种格式的包,不包含自动安装助手,必须手动的安装和配置。

    注意

    免安装文件被分成两个独立的压缩文件,核心文件包叫做 mysql-VERSION-winx64.zip for 64-bit 和 mysql-VERSION-win32.zip for 32-bit。而MySQL需要的组件、可选的MySQL测试套件、MySQL基准测试套件以及调试二进制/信息组件(包括 PDB 文件)放在另外一个独立压缩文件中,命名为 mysql-VERSION-winx64-debug-test.zip for 64-bit 和 mysql-VERSION-win32-debug-test.zip for 32-bit.

大多数用户推荐MySQL安装助手。

一旦选择了安装包的类型,就要安装该类型的安装方式进行,如果您选择MySQL安装助手,请参阅 2.3.3节, “Windows上的MySQL安装助手”。如果您选择的是免安装压缩文件,请参阅2.3.5 节, “Microsoft Windows上使用免安装压缩文件安装MySQL”

2.3.3 Windows上的MySQL安装助手

MySQL安装程序是一个独立的应用程序,旨在减轻安装和管理在Microsoft Windows上运行的MySQL产品的复杂性。它支持以下MySQL产品:

  • MySQL 服务器

    一个MySQL安装助手可以安装管理多个版本的MySQL服务器,例如,一个MySQL安装助手可以在同一个主机上安装5.6、5.7和8.0版本的MySQL。但是一个一个主机不能同事安装社区版和商业版的MySQL。

  • MySQL 应用程序

    MySQL Workbench, MySQL Shell, MySQL Router, MySQL for Visual Studio, MySQL for Excel, MySQL Notifier, 以及 MySQL Utilities。

  • MySQL Connectors

    MySQL Connector/Net, MySQL Connector/Python, Connector/ODBC, MySQL Connector/J, Connector/C, 以及 Connector/C++。

  • 文档和样例

    MySQL参考手册(同版)以PDF格式和MySQL数据库样例(同版)。

MySQL安装助手社区版

http://dev.mysql.com/downloads/installer/ 下载所有社区版的MySQL产品。选择一些安装包选项之一:

  • 网页版: 仅包含MySQL安装助手和配置文件,同时只会下载你选择要安装的包,而且需要联网才可以下载。文件大小约2MB。文件名的格式是 mysql-installer-community-web-VERSION.N.msi 其中 VERSION 是指MySQL服务器版本号,例如,5.7。而 N 是以0开始的安装包编号。

  • 完整版:集合Windows平台上所有的MySQL产品(包括MySQL服务器),文件大小超过300MB,文件名格式是 mysql-installer-community-VERSION.N.msi 其中 VERSION 是指MySQL服务器版本号,例如,5.7。而N 是以0开始的安装包编号。

MySQL 安装助手商业版

https://edelivery.oracle.com/下载基于Windows平台的MySQL商业版安装包。商业版,包括所有的社区版产品,同样还包括以下产品:

  • Workbench SE/EE

  • MySQL 企业备份

  • MySQL 企业防火墙

这些套件包含了Oracle 支持(MOS)账户。知识库和补丁,请参见 My Oracle Support

2.3.3.1 MySQL 安装助手初始化设置

当您第一次下载MySQL安装助手时,安装助手将引导您完成MySQL产品的初始安装。如下图所示,初始设置是整个流程中只进行一次, MySQL安装助手会在其初始设置中检测到主机上已安装的MySQL产品,并将其添加到管理的产品列表中。

2.7 MySQL 安装助手过程概述

MySQL Installer process overview

在初始设置过程中,MySQL安装助手会将配置文件(稍后介绍)解压到主机的磁盘上。虽然MySQL安装助手是一个32位的应用程序,但是它可以同时安装32位和64位二进制文件。

初始设置添加了MySQL组下的开始菜单的链接。 点击 Start, All Programs, MySQL, MySQL Installer

设置许可证

MySQL安装助手在开始安装新的MySQL产品包前,需要您同意许可协议。您同意协议之后,就可以添加、更新、重置以及移除所有的MySQL提供的产品和功能。

对于商业版,在安装绑定的MySQL产品时,可以选择输入您的My Oracle Support (MOS) 证书。而当安装非绑定的MySQL产品时,就必须输入,这样一个非绑定的产品在初始化设置之后,就可以通过MySQL安装助手下载了。您证书必须与在Oracle注册的用户名和密码相匹配,以便访问支持的站点。

选择一个安装类型

在初始设置期间,会提示您选择需要在主机上安装的MySQL产品,一种替代方案就是使用预先设定的。选择下面的设置类型仅会决定初始化安装,并不会影响以后对MySQL产品的安装和更新:

  • 开发者模式:

  • 仅服务器: 仅安装MySQL服务器,类型有稳定版和开发版,依据您下载的MySQL安装助手,使用默认的安装和路径。

  • 仅客户端: 仅安装最新的MySQL应用程序和MySQL连接器,这一步类似于开发者模式 类型, 除了没有MySQL服务器或与服务器绑定的客户端程序。如:mysqlmysqladmin.

  • 全部: 安装所有可用的MySQL产品。

  • 自定义 您能使用自定义安装类型,从 MySQL 产品目录选择要安装的MySQL产品。

    使用 自定义 安装类型来安装MySQL:

    • 从通用下载位置无法获得所有的产品。而产品目录能包含所有的产品,其中还包括预发布版(或开发版)和稳定版直接的其他版本。

    • 实例可以使用其他的安装路径,数据路径。关于调整路径的描述,请参阅 2.3.3.2.3 节, “设置调整服务器路径”

    • 一台服务器上同时运行两个版本的MySQL服务器(如:5.6 ,5.7以及8.0 )。

    • 安装某些特定产品,或某组产品等等。举个例子,您只安装一个单一的产品,如,在Windows上只安装MySQL工作台,而不是安装所有的产品。

路径设置

当在一个已经使用了默认路径安装了MySQL的主机上再次使用默认路径安装。安装向导就会显示 当默认的安装路径和数据文件夹在主机上已经存在,那么安装向导会显示路径冲突,来让你一步步 识别每个冲突,并使能够进行调整,以避免在新安装所覆盖的现有文件夹中包含文件。只有当MySQL安装程序检测到冲突时,才会在初始设置中看到这一步。

使用下面的方法解决路径问题:

  • 从列表中选择一个产品来显示冲突选项。感叹号表示哪个路径处于冲突中。使用browse按钮选择一条新路径, 然后单击Next

  • 如果可以的话,点击 Back选择不同的安装类型或产品版本。自定义设置类型使得您能选择单独的产品版本。

  • 点击 Next忽略冲突,并且覆盖现有的文件夹。

  • 删除已存在的产品。点击 Cancel 停止安装然后关闭MySQL安装助手。从菜单栏再次打开MySQL安装助手。使用面板上的delete来删除已安装的产品。

先决条件检查

MySQL安装助手使用package-rules.xml文件中的记录,来确定每个产品的先决条件是否已在主机上安装。 当先决条件检查失败,MySQL安装助手会显示先决条件检查步骤来帮助您更新主机,下图指出了步骤的关键区域。

2.8 先决条件检查

MySQL Installer check-requirements screen before any requirements are downloaded and installed.

先决条件检查项的描述

  1. 显示初始设置中的当前步骤。根据已经安装在主机上的产品和必备软件的可用性,这个列表中的步骤可能会略有变化。

  2. 列举所有的先决条件,并显示如下状态:

    • Status 列是空白的,意味着MySQL安装助手能帮你下载和安装。

    • Status 显示Manual字样的,表示您得自己下载。可以选列表中的产品,查看详细的需求信息。

  3. 需求的详细信息,可以帮助您手动解决。而且在可能的情况下,提供一个下载URL。在下载并安装所需的软件之后,单击Check 确认已经满足了需求。

  4. 提供以下操作设置:

    • Back – 返回上一步,其作用是让您可以选择一个不同的安装类型。

    • Execute –MySQL安装程序试图下载并安装所需的软件,而无需手动状态。手动解决的,可以通过Check进行验证。

    • Next – 继续安装。

    • Cancel – 停止MySQL产品的安装。由于已经安装了MySQL安装助手, 所以当您从开始菜单中打开MySQL安装程序并从仪表板中单击Add 时,初始设置将再次启动。 关于可用管理操作的描述,请参阅 产品目录

MySQL安装助手配置文件

所有的MySQL安装文件都位于 C:\Program Files (x86)C:\ProgramData文件夹中。下表描述了将MySQL安装程序定义为独立应用程序的文件和文件夹。

注意

当你更新或卸载MySQL安装助手时,安装的MySQL产品既不会被修改也不会被移除。

表2.5 MySQL 安装助手配置文件

文件或目录描述文件层次
MySQL Installer for WindowsThis folder contains all of the files needed to run MySQL Installer and MySQLInstallerConsole.exe, a command-line program with similar functionality.C:\Program Files (x86)
TemplatesThe Templates folder has one file for each version of MySQL server. Template files contain keys and formulas to calculate some values dynamically.C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest
package-rules.xml

此文件记录所有产品需要安装的先决条件。

C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest
produts.xml

products 文件包含所有可以下载的MySQL产品。

C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest
Product Cache

The Product Cache 文件目录包含所有与完整包绑定的独立MSI文件或后面会下载的。

C:\ProgramData\MySQL\MySQL Installer for Windows

2.3.3.2 安装流程

MySQL 安装助手提供了一个类似于向导的工具来安装和配置 Windows 平台上新的 MySQL 产品。与初始设置,不同的是,它只运行一次,每次你下载或安装新的产品时,MySQL 安装助手调用向导工具。第一次的初始安装时,初始设置的步骤就直接进入安装步骤。

注意

所有生成的文件都被授予了执行MySQL安装助手用户的完整权限,例如my.ini文件。但是这并不不适用于一些特殊的文件或目录,比如, %ProgramData%里面的服务器的数据目录,它的拥有者是 SYSTEM用户。

一般情况下在主机上安装和配置MySQL产品,会需要您进行一些输入操作。MySQL安装助手使用下面的工作流程,将所选的产品加载到一起:

  • 产品下载。如果您已经安装了完整版的MySQL安装助手包(不是网页版),初始化设置期间所有的MSI文件已经加载到Product Cache 文件目录中,并且不会再次下载,不然产品的状态就会从 Downloading 变为 Downloaded

  • 产品安装。 列表中的每个产品的状态从Ready to InstallInstalling再到Complete不断的变化,在此过程中,可以点击Show Details来查看安装操作。

    如果您此时取消了安装,MySQL产品已经安装了,只是服务(如果已经安装过)没有配置。从开始菜单栏,点击Reconfigure连接,来打开MySQL安装助手面板,可以来重新进行服务配置。

  • 产品配置。大多数情况下,这一步适用于MySQL服务器和示例,列表中的每个项目的状态都应是 Ready to Configure,点击 Next继续一步步的安装所有的项。

    在此步骤中会根据您选择要安装的数据库版本来提供配置选项。安装完成后,您可以用MySQL的控制面板重新配置MySQL服务器。

  • 安装结束。此步骤将完成安装,并使您可以在安装完成时启动一些应用程序。

2.3.3.2.1 InnoDB 集群沙盒子测试设置

使用MySQL安装助手安装MySQL 5.7.17或更高的版本,有两种选择来实现高可用性解决方案:

  • 独立的MySQL服务器/经典的MySQL复制(默认)

    选择这个选项开始一个独立的MySQL服务器的初始配置。当然您可以手动的使用经典的MySQL复制配置多个服务器,或者使用MySQL Shell 1.0.9或更高版本来配置一个生产InnoDB集群。

    有关在Windows平台上独立服务器配置选项的描述,请参阅 2.3.3.2.2 节, “服务器配置”

  • InnoDB 集群沙盒子测试设置(仅测试)

    选择此选项来创建并配置InnoDB集群沙箱实例以进行测试。您可以配置一个InnoDB集群沙盒,以便拥有3、5、7或9个MySQL服务器实例。 配置完成后,在MySQL安装工具栏中,使用Reconfigure 来调整InnoDB集群中的实例数。

     2.9 InnoDB 集群沙盒子测试设置

    MySQL Installer options for an InnoDB cluster sandbox test setup.

默认情况下,叫做sandboxCluster的InnoDB集群沙盒可以在选定的端口上使用。在配置执行之后,单击Summary 选项卡来查看应用于集群的特定端口。

你可以使用 MySQL安装助手来安装 MySQL Shell 1.0.9,它使您能够管理的沙盒实例。使用MySQL Shell从3310 端口连接,请执行以下命令:

shell> mysqlsh root@localhost:3310

MySQL安装助手同样还提供了一个向导来配置MySQL路由,以便连接测试此步骤中安装的InnoDB集群。 详细配置信息,请参阅 MySQL 路由配置。 想获得更多MySQL 路由器操作信息,请参阅 MySQL InnoDB 集群的路由方式

2.3.3.2.2 服务器配置

MySQL安装助手处理MySQL服务器的初始配置.例如:

  • 它会创建配置文件 (my.ini),用配配置MySQL服务器。这个文件中的值是受到您在配置过程中的选择的影响。

    注意

    某些定义是依赖于主机的。例如,如果主机少于3个核心,那么query_cache是启用状态。

  • 默认情况下,会在Windows上添加一个MySQL服务。

  • 为MySQL服务器提供默认安装和数据路径。关于如何修改默认路径,请参阅 2.3.3.2.3 节, “设置服务器路径”

  • 它可以根据一般常用的角色,比如DB管理员、DB设计师和备份管理,来创建具有可配置权限的MySQL服务器用户帐户。 它还可以创建一个名为MysqlSys的Windows用户,但该用户的权限是有限的,然后运行MySQL服务器。

    在MySQL工作台中还以可以添加用户账号。

  • 检查显示高级选项以允许设置额外的 日志记录选项,其中包括定义错误日志、一般日志、慢查询日志和二进制日志的的文件路径。

配置过程中,点击 Next 来进行下一步,或者 Back返回上一步。在配置的一部点击 Execute 来应用服务器配置。

接下来的部分描述了在Windows上应用于MySQL服务器的服务器配置选项。您安装的服务器版本将决定您可以配置哪些步骤和选项。

类型和网络
  • 配置服务器类型

    根据描述,选择你要设置的服务类型,这里的设置定义了将分配给MySQL服务器实例的系统资源(内存)的大小。

    • Development:机器上运行许多其他的应用程序,通常是您的个人工作站,选择这个选项配置MySQL,可以占用较少的内存。

    • Server: 机器上运行很少的其他应用程序,如,做一个web服务器。使用这个选项来配置MySQL,会占用中等数据的内存。

    • Dedicated: 机器上只跑MySQL服务器,而没有其它的应用程序,如,做一个web服务器,那么可以占用大部分的内存。

  • 连通性

    连接选项控制连接到MySQL的方式。选项包括

    • TCP/IP: 您可以在这里启用ip网络,否则只允许本地主机连接。同样,要定义 端口号 ,以及是否为此端口的网络访问开启防火墙。如果端口号被占用了,你会在值的旁边看到这样图标信息 () 而且直到您提供一个新的端口号,不然此端口一直是禁用的。

    • Named Pipe: 启用并定义pipe名称,类似于使用--enable-named-pipe 选项。

    • Shared Memory: 启用并定义内存名称,类似于使用--shared-memory 选项。

  • 高级配置

    点击显示高级选项 可以设置更多的日志选项, 其中包括定义错误日志、普通日志和慢查询日志, 以及二进制日志的路径。

  • MySQL 企业版防火墙 (仅商业版中有)

    Enable Enterprise Firewall 复选框默认是选中的,对于安装后的说明,请参阅 MySQL 企业版防火墙

账号和角色
  • Root 账号密码

    分配根密码是必需的,由于在执行其他MySQL安装操作时,需要您提供root密码,所以必须给root用户设置密码。 而且当您在密码框中输入密码时,还会对密码的强度进行评估。关于对密码的要求和复杂度,移动鼠标到图标( )就可以看到。

  • MySQL 用户账号

    还有就是,您可以使用预定义用户角色来创建新的MySQL用户账号。预先创建一个MySQL用户角色。如DB管理员,配置自身的权限集。例如DB管理员角色比DB设计员拥有更多的权限。 点击Role 下拉列表框,可以看到每个角色的描述信息。

    注意

    如果已经安装了MySQL服务器,那么还是需要输入root的当前密码。

Windows 服务

在Windows平台上,MySQL服务器可以以操作系统管理的命名服务运行,并配置为在Windows开机自动启动。或者,您可以将MySQL服务器配置为一个需要手动配置的可执行程序。

  • 配置MySQL 服务器为一个Windows服务 (默认选中)

    当选中默认配置选项时,您还可以选择以下内容:

    • 开机启动MySQL服务器

      当选中时(默认),该服务会开机自动启动,否则,就需要手动启动。

    • 运行Windows服务

      当选中标准系统账户(默认),该服务将以网络服务登录。

      The 自定义用户 option must have privileges to log on to Microsoft Windows as a service. The Next button will be disabled until this user is configured with the required privileges.

      A custom user is configured in Windows by searching for "local security policy" in the Start menu. In the Local Security Policy window, select Local Policies, User Rights Assignment, and then Log On As A Service to open the property dialog. Click Add User or Group to add the custom user and then click OK in each dialog to save the changes.

  • 取消Windows服务选项

插件和扩展

在安装MySQL服务器5.7.12(或更高版本)时,可以看到插件和扩展。如果您正在从以前的MySQL版本升级,那么您需要再次打开MySQL安装程序,并选择重新配置 MySQL服务器选项。

  • 启用 X 协议 / MySQL 作为文件存储 (默认选中)

    当选择 X 协议时,MySQL安装助手会加载启动X插件。如果X插件没有运行,使用X协议的客户端就不能访问服务器。

    • 端口号: 33060

      需要一个未使用的端口号。默认是33060。

    • 防火墙为端口开启网络访问。

      当选择X协议时,默认是开启的。

    更多有关将MySQL作为文件存储和X插件的信息,请参阅 20.2 节, “Key参考”20.7 节, “X 插件”

高级选项

如果在Type and Networking步骤中选中了显示高级配置复选框就可以看到这一步骤。 如果没有看到,可以点击Back返回到 Type and Networking ,然后选中复选框。

高级配置选项与以下MySQL日志文件相关:

应用服务器配置

当您点击执行,所有的配置将会应用到MySQL服务器。使用 配置步骤 选项卡跟踪每个动作的进度,在成功的情况下,所有的图标都会由白色变为绿色。否则,如果某个超时,进度将停止,并显示出错误信息。点击 Log 选项卡可查看日志。

安装完成后,点击 完成,MySQL安装助手和已经安装的MySQL产品会被添加到Windows菜单栏中的 the MySQL 组中。打开MySQL安装助手,加载 面板 这里会列出已经安装的MySQL产品和其他可用的程序。

2.3.3.2.3 改变服务器路径

在安装MySQL时,您可以改变默认的安装路径或数据存放路径。但是安装后,如果不是删除或重装MySQL实例,路径是不能修改。

改变MySQL服务器路径

  1. 确定要改变MySQL服务器,然后显示 高级选项 连接。

    1. 跟着选择产品和功能 的步骤做以下其中之一:

      1. 如果是一个 初始化设置, 选择自定义设置类型,然后点击Next

      2. 如果已经安装了MySQL安装助手,从服务器开采菜单栏启动它,然后点击添加

    2. 点击 Edit 过滤产品列表,从可获得产品列表中选择需要安装的。

    3. 选择好服务器实例,使用箭头将所选择的添加到安装产品/功能 列表中。

    4. 点击,选中服务器,当您选择服务器时,会出现高级选项链接。详细信息,参见下图所示。

  2. 点击 高级选项打开带有路径设置选项的对话窗口,随后设置路径,点击 Next 继续配置步骤。

    2.10 改变MySQL服务器路径

    MySQL Installer provides the Custom setup type, which enables you to change the default installation and data paths.

2.3.3.2.4 MySQL 应用程序、连接器和文档

MySQL安装程序为您提供了一套工具,用于开发和管理Windows上的业务关键应用程序。该套件包括应用程序、连接器、文档和示例。

初始化设置设置期间,除了 仅服务器,可以选择其他任何一种安装类型,来安装最新版本的工具。 of the tools.选择 自定义 安装类型,可以安装一个独立的工具,或特定的版本。如果已经安装了MySQL安装助手,那么可以使用 安装助手面板中的 Add来选择和安装工具。

MySQL 路由配置

MySQL安装助手提供了配置向导,可以引导安装2.1.3或更高版本的MySQL路由,用于MySQL应用程序和InnoDB集群之间的流量管控, 在配置时,MySQL路由是以一个本地Windows服务运行,有关在InnoDB集群中使用MySQL路由器的详细信息,请参阅 MySQL InnoDB 集群路由

执行一下操作,配置MySQL路由:

  1. 设置InnoDB集群。对于如何使用MySQL安装助手在本机配置InnoDB集群沙盒的说明,请参阅 2.3.3.2.1 节, “ InnoDB 集群沙盒子测试设置”。 InnoDB 集群需要 MySQL 5.7.17 或更高版本。

    对于InnoDB集群的一般信息,请参阅 InnoDB 集群

  2. 使用MySQL安装助手,下载和安装MySQL路由器应用程序,安装完成后,配置向导会提示相关信息。选中 配置InnoDB集群的路由复选框以启动配置,同时提供以下配置值:

    • 主机名: 默认localhost 。

    • 端口: InnoDB集群中主服务器的端口号,默认是3310。

    • 管理员: 具有root权限的管理用户

    • 密码: 管理员的密码

    • 默认连接协议

      读/写: 设置一个未使用的起始端口号(80到65532之间)。然后安装向导会自动选择其余的端口。

      下图是MySQL路由器配置界面的示例。

    2.11 MySQL 路由器配置

    MySQL Router configuration

  3. 点击 下一步 然后点击 执行 应用所有的配置。点击 完成关闭MySQL安装助手或返回MySQL安装助手仪表板。

2.3.3.3 MySQL 安装助手产品目录和仪表板

本节描述的是MySQL安装助手产品目录和仪表板。

产品目录

产品目录含有能从MySQL下载的Windows平台上MySQL完整的产品列表。默认情况下,每当连接网络时,MySQL安装助手都会每天更新这个目录,您也可以手动的在仪表板上更新(后面描述)。

在最新的目录下,执行以下操作:

  • 填写完 选择产品和功能这一步中的可获得产品。这一步当您选择下面的步骤时会出现:

  • 识别仪表板中列出已安装产品的可更新。

产品目录包含所有的开发版(预发布版),稳定版(GA版),小版本(其他版本)。根据您下载的MySQL安装助手,目录中的产品会有所不同。

MySQL安装助手仪表板

2.12 MySQL安装助手仪表板组成

MySQL Installer dashboard showing the basic operations for managing MySQL products for Windows.

MySQL安装助手仪表板组成的描述

  1. ( ) 显示当前的MySQL安装助手的版本和MySQL的基本资料。版本号位于Back按钮的上方。

    在报告MySQL安装程序的问题时,总是要包含这个版本号。

  2. MySQL安装助手设置( ) 可以让您设置安排每天自动更新目录。默认情况下,第一次安装MySQL安装助手时,会在一小时内更新目录,当有新产品或新版本时,MySQL安装助手会将其加入目录,并在版本号旁边提示一个图标( )。

    使用这些选项来启用或禁用目录的自动更新,并在MySQL安装助手自动更新时重置时间,对于特定的设置,可以在Windows任务管理器中看到名为 ManifestUpdate 的任务。

  3. MySQL安装助手的仪表盘提供了多种操作,适用于目录中已安装或显示的产品。要启用一下操作,首先要点击操作链接,然后选择产品或管理产品。

    • 添加: 这个操作开启 选择产品和功能 界面,您可以在产品目录中筛选产品,然后选择下载一个或多个产品(根据需要),然后开始安装。关于使用过滤器的提示,请参阅 定位要安装的产品

    • 修改: 使用这个操作可以添加删除已安装的产品和相关联的特性功能,而这些特性功能的复杂性都是依赖于对应的产品。当选中程序快捷方式 复选框,该产品会出现在 MySQL 组下的开始菜单中。

    • 升级: 这个操作是加载选中需要升级的产品将其填充到所有的升级候选项中。一个已安装的产品可以有多个升级版本,并且需要选中当前的产品目录。

      选择一个产品的新版本:

      1. 确认 升级产品 面板中的复选框标记,取消您当前不打算升级的产品。

      2. 点击列表中的一个产品,此操作将填充到可升级的版本窗格中,里面会显示所选产品的每个可升级版本 的详细信息,版本号,发布日期和打开该版本的发布说明的变化链接。

      MySQL 安装助手可以一次性升级多有选中的产品,同时点击细节展示 来查看安装助手具体做了那些操作。

    • 移除 这个操作会打开移除产品界面,选择您想要移除(卸载)的产品,然后点击 执行 来开始移除过程。

      要选择要删除的产品,执行以下步骤:

      • 选中一个或多个产品的复选框。

      • 选中产品 复选框来选择所有的产品。

  4. 在每个已安装服务器上,有个快速操作列表,而重新配置连接是让服务器加载当前的配置值,它会遍历所有的配置,使您可以更改选项和值。在配置完成时,MySQL安装助手会停止服务器,然后应用所有更改的配置,然后重启服务器。对于每个配置项的描述,请参阅 2.3.3.2.2 节, “服务器配置”

    如果有必要的话,可以重新配置与特殊服务器先关的样例和示例 ,以应用更改的功能配置,当然,这样做的提前是你需要有root权限来重新配置这些项。

  5. 目录连接可以让您手动的下载目录中最新的MySQL产品,然后将这些产品的变化集合在MySQL安装助手中。目录的这种下载行为不会对主机上安装的产品有影响。 二十,它反映到仪表盘上,并在版本列表中已经安装过的产品上显示一个箭头的图标,以此表明有新的的版本了。 使用 更新 操作来安装新的版本。

    您还可以使用目录 链接来显示当前每个产品更新历史,而不用下载新的目录。选择 此时不更新 复选框,可以只查看更新历史。

定位需要安装的产品

目录中的MySQL产品是按类别列出的: MySQL服务器、应用程序、MySQL连接器、文档。而且默认情况下只有最新的稳定版显示在可获得产品 。如果你想寻找预发布版,或者老版本的产品,可能默认的列表中就没有。

点选择产品和功能的界面,点击编辑可改变过滤器的显示。

 2.13 可用产品过滤器

Edit the filter to display MySQL products.

重置下面的值,可以过滤可用产品的列表:

  • 主题: 输入文本。

  • 分类: 所有软件(默认), MySQL 服务器、应用程序、MySQL连接器、或文档(样例和示例)。

  • 版本: 预发布、当前稳定版(默认)、或其他版本。

  • 已下载的(默认复选框不能选中)。

  • 架构: 默认都是32-位,或 64-位。

2.3.3.4 MySQL 安装助手控制台参考

MySQLInstallerConsole.exe 提供了类似MySQL安装助手的命令行功能,它是和MySQL安装助手一起安装在 同样的目录下。通常情况是C:\Program Files (x86)\MySQL\MySQL Installer\, 而且是需要有管理员权限才可以执行它。

使用管理员权限,通过选择开始附件来调用命令行提示符。然后其上面右键, 命令行提示符 ,并选择以管理员身份运行。然后在命令行上,改变到 MySQLInstallerConsole.exe 所在目录:

C:\> cd Program Files (x86)\MySQL\MySQL Installer for Windows
C:\Program Files (x86)\MySQL\MySQL Installer for Windows> MySQLInstallerConsole.exe help
=================== Start Initialization ===================
MySQL Installer is running in Community mode

Attempting to update manifest.
Initializing product requirements
Loading product catalog
Checking for product catalog snippets
Checking for product packages in the bundle
Categorizing product catalog
Finding all installed packages.
Your product catalog was last updated at 11/1/2016 4:10:38 PM
=================== End Initialization ===================

The following commands are available:

Configure - Configures one or more of your installed programs.
Help      - Provides list of available commands.
Install   - Install and configure one or more available MySQL programs.
List      - Provides an interactive way to list all products available.
Modify    - Modifies the features of installed products.
Remove    - Removes one or more products from your system.
Status    - Shows the status of all installed products.
Update    - Update the current product catalog.
Upgrade   - Upgrades one or more of your installed programs.

MySQLInstallerConsole.exe 可以在命令行支持指定以下选项:

注意

配置的值都需要用双引号,包括冒号(":"),例如, installdir="C:\MySQL\MySQL Server 8.0".

  • configure [product1]:[setting]=[value]; [product2]:[setting]=[value]; [...]

    当在系统上配置一个或多个产品时,可以为每个产品配置多个设置=值对。 在系统上配置一个或多个MySQL产品。可以为每个产品配置多个。

    包括:

    • -showsettings : 通过在-showsettings后面传入产品名称,显示所选产品的可用选项。

    • -silent : 禁用确认提示符。

    C:\> MySQLInstallerConsole configure -showsettings server
    C:\> MySQLInstallerConsole configure server:port=3307
    
  • help [command]

    显示一个使用示例的帮助消息,然后退出。通过一个附加命令来接收特定于该命令的帮助信息。

    C:\> MySQLInstallerConsole help
    C:\> MySQLInstallerConsole help install
    
  • install [product]:[features]:[config block]:[config block]:[config block]; [...]

    在您的系统上安装一个或多个MySQL产品。

    切换和语法选项包括:

    • -type=[SetupType] : 安装一组预定义的软件。 "设置类型"有下面几种:

      注意

      只有在没有安装过MySQL产品的系统上,才能选择非自定义安装类型。

      • 开发者: 安装一个完整的开发环境。

      • 服务器: 安装独立的MySQL服务器。

      • 客户端: 安装客户端程序和库。

      • 全部: 安装所有的。

      • 自定义: 安装用户选择的产品,这是默认的选项。

    • -showsettings : 在产品名字后面-showsettings传入的值,来显示所选产品的何用选项。

    • -silent : 禁用确认提示符。

    • [config block]: 需要指定一个或多个配置类型,每个配置类型之间都是以键值对的方式用分隔符分开,类型可以包含一个“配置”或“用户”类型的关键字, 如果一个都没有定义,那么“配置”就是默认的类型。

      配置类型的值必须用冒号。同时包含在双引号内(":"),例如, installdir="C:\MySQL\MySQL Server 8.0".

      每个产品只能定义一个 "配置"类型。在产品安装过程中的每个用户,都只能定义一个"用户" 类型。

      提示

      一个产品开始重置时不能添加用户。

    • [feature]: 是用分号分开的特性列表,也可以使用'*' 选中所有的特性。

    C:\> MySQLInstallerConsole install server;5.6.25:*:port=3307;serverid=2:type=user;username=foo;password=bar;role=DBManager
    C:\> MySQLInstallerConsole install server;5.6.25;x64 -silent
    

    举一个使用附近配置选项的例子, 使用^ 来适应屏幕显示:

    C:\> MySQLInstallerConsole install server;5.6.25;x64:*:type=config;openfirewall=true; ^
              generallog=true;binlog=true;serverid=3306;enable_tcpip=true;port=3306;rootpasswd=pass; ^
              installdir="C:\MySQL\MySQL Server 5.6":type=user;datadir="C:\MySQL\data";username=foo;password=bar;role=DBManager
    
  • list

    交互式的列出所可以搜索到的可用的MySQL产品,执行 MySQLInstallerConsole list启动控制台,然后输入字符串搜索。

    C:\> MySQLInstallerConsole list
    
  • modify [product1:-removelist|+addlist] [product2:-removelist|+addlist] [...]

    修改或显示已安装产品的特性。

    • -silent : 禁用确认提示符。

    C:\> MySQLInstallerConsole modify server
    C:\> MySQLInstallerConsole modify server:+documentation
    C:\> MySQLInstallerConsole modify server:-debug
    
  • remove [product1] [product2] [...]

    从系统上移除一个或多个产品。

    • * : 输入 * 来移除多有的MySQL产品。

    • -continue :即使出现错误,还是继续操作。

    • -silent :禁用确认提示符。

    C:\> MySQLInstallerConsole remove *
    C:\> MySQLInstallerConsole remove server
    
  • status

    提供系统上已安装的MySQL产品的简要概述。信息包括产品名称和版本、体系结构、安装日期和安装位置。

    C:\> MySQLInstallerConsole status
    
  • update

    为您的系统下载最新的MySQL产品目录,下载成功后,下载的目录会在下一次MySQL安装助手或MySQL安装助手控制台被调用的时候应用。

    C:\> MySQLInstallerConsole update
    
    注意

    自动目录更新图形界面选项从Windows任务调度程序执行此命令。

  • upgrade [product1:version] [product2:version] [...]

    升级系统上的一个或多个产品,语法选项包括:

    • * : 输入 * 升级所有的产品到最新版本。或输入指定的产品。

    • ! : 输入 ! 作为一个版本好,将MySQL产品升级到最新版本。

    • -silent : 禁用确认提示符。

    C:\> MySQLInstallerConsole upgrade *
    C:\> MySQLInstallerConsole upgrade workbench:6.3.5
    C:\> MySQLInstallerConsole upgrade workbench:!
    C:\> MySQLInstallerConsole upgrade workbench:6.3.5 excel:1.3.2
    

2.3.4 MySQL 通知器

MySQL 通知器是一个可以允许您通过驻留在系统托盘中的指示器来监视和调整本地和远程MySQL服务器实例的状态的工具,还可以通过它的上下文菜单快速访问MySQL工作台。

MySQL通知器是使用MySQL安装助手安装的,并且(默契情况下)会岁Windows系统启动而启动。

使用MySQL 安装助手下载、安装它,前提是要确定已经选中了MySQL通知器这个产品,然后执行安装过程。额外信息,请参阅 MySQL 安装助手参考手册

对于MySQL通知器每个版本的之间变化的详细说明,请参阅 MySQL 通知发行说明

访问MySQL 通知器论坛 可获得额外的帮助和支持。

主要特性:

  • 启动、停止和重新MySQL服务器实例。

  • 自动识别(添加)新的MySQL服务器服务,并将其陈列在管理监控项目中,还可以配置它们。

  • 托盘图标会随着状态的变化而变化。如果所有监控的MySQL服务器实例正在运行,那么它是绿色的,但是只要有一个服务是停止的,那么就是红色的。 同时根据服务状态更新MySQL通知器托盘的图标 这个选项,默认为每个服务启用的。

  • 连接其它应用程序,如MySQL 工作台、MySQL 安装助手或MySQL实用程序。举个例子, 选择 管理实例 将为该特定实例加载MySQL工作台服务器管理窗口。

  • 如果安装了MySQL工作台,那么可以对本地MySQL实例使用管理实例SQL 编辑器选项。

  • 监控本地和远程的MySQL实例。

2.3.4.1 MySQL 通知器的使用

MySQL通知器在系统右下角的系统托盘中,为MySQL服务器实例听歌可视的状态信息。如果当前的MySQL服务器正在运行,则在托盘图标的左上角显示一个绿色图标,如果停止服务,则显示红色图标。

MySQL通知器会自动的发现本机上的MySQL服务。并且保存每个服务并且可以配置这些服务。 默认情况下,自动添加新服务和服务名选项是开启的。相关的 通知选项 包括新服务的添加和发现,及其状态的变化,都会被提醒,这个也是默认开启的。卸载了一个服务,也会相应的从MySQL通知器中移除相应的服务。

点击系统托盘图标,会显示出几个选项。正如下图所示:

服务器实例菜单是MySQL通知器的主要的窗口,可以让您关闭、启动和重新MySQL服务器。

图 2.14 MySQL通知器服务实例菜单

MySQL Notifier Service Instance menu

Actions 菜单中包含了几个几个内置应用(如果它们已被安装)的连接,和一个可以对监控的所有服务(包括本地和远程)和MySQL实例进行手动刷新的 Refresh Status选项。

提示

如果没有任何服务被MySQL通知器监控,那么主菜单中不会显示Actions 菜单。

图 2.15 MySQL 通知器操作菜单

MySQL Notifier Actions menu

Actions, Options可以配置MySQL通知器,其中包括:

  • 使用彩色状态图标:为MySQL通知器提供色彩丰富的图标。

  • 随系统启动: 允许程序随Microsoft Windows系统启动而加载。

  • 自动检查更新 # 每周: 每周为MySQL通知器检查新的版本。

  • 自动填写新服务和服务名:用于过滤服务,并将其自动添加到运行MySQL通知器的本地计算机的监控列表中,以及在已被监控的远程机器上。

  • 对监控的MySQL服务器进行每 # 秒sping: (每秒)内部对监控的MySQL服务器实例进行ping,来获得实例的状态。如果监视的远程实例的列表很大,则可能需要较长的间隔。

  • 当添加服务时自动提醒我:当一个的服务被添加到服务列表时,会在托盘出现一个气球的图标。

  • 当服务状态改变时自动提醒我:当一个被监控的服务的状态改变时,会在托盘出现一个气球的图标。

  • 自动延迟连接: 当有连接转移时,推迟1小时,1天,1周,1月,无限期转移。

图 2.16 MySQL 通知器操作选项

MySQL Notifier Options menu

Actions, Manage Monitored Items菜单用于配置监控的服务和MySQL实例。先点开 Services :

图 2.17 MySQL通知器服务管理栏

MySQL Notifier Manage Services menu

Instances是类似的:

图 2.18 MySQL通知器实例管理栏

MySQL Notifier Manage Instances menu

添加一个服务或实例(在点击Manage Monitored Items中的Add后) 使得您可以选择一个正在运行的Microsoft Windows服务或连接到实例,然后配置MySQL通知器监控它。从列表中点击服务名即可添加一个新的服务和实例,然后点击 OK退出,可以选择多个服务和实例。

图 2.19 MySQL Notifier Adding new services

MySQL Notifier Adding new services

添加实例:

图 2.20 MySQL通知器添加新实例

MySQL Notifier Adding new instances

2.3.4.2 MySQL通知器建立远程监控

2.3.5 在Windows上使用免安装Zip包安装MySQL

使用免安装包安装MySQL的,可以使用本节中介绍的来手动的安装MySQL。使用Zip包的安装过程如下:

  1. 将核心文件提取到想要安装的目录

    可选项: 还可以提取将debug-test文件,如果您打算执行MySQL基准测试和测试套件

  2. 创建一个选项文件

  3. 选择MySQL服务器类型

  4. 初始化MySQL

  5. 启动MySQL服务器

  6. 安全化默认用户账号

下面进行详细的介绍。

2.3.5.1 提取安装包

要手动安装MySQL,执行一下步骤:

  1. 如果您是从老版本升级,那么在执行升级之前,请参考 2.3.8 节, “在Windows上升级MySQL”

  2. 确保您登录的用户有管理员权限。

  3. 选择一个安装位置,通常情况下,MySQL服务器会安装在C:\mysql。而MySQL安装向导会将MySQL安装在 C:\Program Files\MySQL,如果您不想安装在C:\mysql,那么您必须在启动期间或在一个选项文件中为其指定一个位置。参阅  2.3.5.2节, “创建选项文件”

    提示

    MySQL安装助手安装的MySQL在目录C:\Program Files\MySQL下。

  4. 使用zip解决工具将安装包的文件提取到您选择的安装位置,有些工具会将文件提取到一个非指定的位置,如果出现这样的情况,您可以将整个目录移动到您选择的安装位置。

2.3.5.2 创建选项文件

如果您在启动 当您运行服务器需要指定启动选项时,您可以在命令行上指明,或将它们放在一个选项文件中。对于那些每次启动服务器都会用到的选项,您会觉得最方便的就是使用选项文件来指定MySQL启动选项。尤其是在下面的情况下:

  • 安装或数据目录位置不是默认位置(C:\Program Files\MySQL\MySQL Server 8.0C:\Program Files\MySQL\MySQL Server 8.0\data).

  • 您需要调节服务器的设置,如:内存、缓存或InnoDB配置信息。

当MySQL服务器在Windows中启动时,它从几个地方寻找选项文件,诸如,Windows目录 C:\,和MySQL的安装目录(对于安装的全路径,参阅  4.2.6节, “使用选项文件”)。在Windows 上,具有代表性的就是 C:\WINDOWS。您可以使用下面的命令从WINDIR环境变量值确定自己的确切位置:

C:\> echo %WINDIR%

MySQL首先从my.ini文件中寻找选项,然后从my.cnf文件中寻找。 为了避免混淆,最好只使用一个选项文件。如果你的PC使用了一个引导加载器,而C:不是引导盘,那么唯一的选则是使用my.ini文件。 但是不管你使用哪个选项文件,选项文件必须为纯文本文件。

提示

当使用MySQL安装助手来安装MySQL服务器,它会在默认位置创建 my.ini,并且,对于my.ini文件,执行MySQL安装助手的用户会被授予所有的权限。

换句话说,就是要确保MySQL服务器用户有权限读取my.ini文件。

您还可以使用发行包中的示例选项文件。参阅  5.1.2节, “服务器配置默认值”

可以用任何文本编辑器来创建并修改选项文件,例如记事本。例如,如果MySQL安装在E:\mysql,数据目录安装在E:\mydata\data, 你可以 创建含有[mysqld]部分的选项文件,指定basedirdatadir参数的值:

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=E:/mydata/data

请注意在选项文件中使用正斜线儿不是反斜线指定Windows路径名。如果使用反斜线,必须用双反斜线:

[mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data

 4.2.6节, “使用选项文件”中有介绍关于在选项文件中反斜杠的使用。

zip格式的包,不包含data目录。 不管使用--initialize--initialize-insecure初始化MySQL,都是通过创建数据目录和填充系统库中的表来初始化MySQL。更多信息,请参阅  2.9.1.1节, “手动使用mysqld初始化数据目录”

如果您想使用其他位置的数据目录,您应该将整个data目录复制到新的位置下。举个例子, 如果您想要使用E:\mydata 作为数据目录,您必须两件事情:

  1. 将整个data目录和其全部内容从(例如 C:\Program Files\MySQL\MySQL Server 8.0\data)移动到 E:\mydata

  2. 每次启动服务器时,使用--datadir选项来指定新的数据目录。

2.3.5.3 选择MySQL服务器类型

下面的表显示了Windows下可用的MySQL 8.0服务器:

二进制描述
mysqld优化后的二进制,支持命名管道
mysqld-debug类似mysqld,但是已经编译过,可以进行完全调试和自动内存分配检查

所有的二进制文件都针对现代的Intel处理器进行了优化,但是应该工作在Intel i386-类或更高的处理器上。

发行的每个版本的服务器都支持一些相同的存储引擎。使用SHOW ENGINES语句,来显示服务器当前支持的存储引擎。

所有Windows MySQL 8.0 服务器支持数据库目录符号链接。

MySQL支持所有Windows平台的TCP/IP。同样还支持命名管道,如果您启动服务器时,使用了--enable-named-pipe选项。 那么需要明确使用该选项,因为使用了命名管道的用户在关闭MySQL服务器时会出现错误。默认是使用TCP/IP,而不管是什么平台,因为在许多Windows配置中,命名管道会比TCP/IP 慢。

2.3.5.4 初始化数据目录

如果您是使用免安装包,里面是没哟怇目录,那么可以使用  2.9.1.1节, “手动使用mysqld初始化数据目录” 中介绍的,来初始化数据目录。.

2.3.5.5 首次启动服务器

本节给出了一般启动MySQL服务器的描述。下面的小节

本节中的信息主要适用选择免安装版本,或者,如果您想要手动配置和测试MySQL而不用GUI工具。

提示

使用MySQL安装助手安装MySQL后,MySQL服务器会自动启动,并且,任何时候都可以使用 MySQL通知器启动/关闭/重启服务器。

在本节内容中的示例是假设MySQL安装在默认的位置C:\Program Files\MySQL\MySQL Server 8.0,如果您将MySQL安装在不同的位置,可以调整示例中的路径名。

客户端有两种选项,可以是使用TCP/IP,如果服务器支持命名管道链接,也可以是使用命名管道。

Windows上的MySQL同样还支持共享内存连接,如果服务启动时使用了 --shared-memory 选项。客户端可以使用 --protocol=MEMORY选项,这样就通过共享内存的方式连接。

Testing is best done from a command prompt in a console window 最好是通过控制台窗口的命令行的提示进行测试。 (或 DOS window),这样可以让服务器在window中容易看见的地方显示状态消息。如果配置出现错误,通过这些消息,可以更容易地识别并修复问题。

提示

启动MySQL服务器之前,必须要初始化MySQL,对于初始化的相关信息,请参阅  2.9.1.1节, “手动使用mysqld初始化数据目录”

启动服务器,键入这个命令:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --console

对于支持InnoDB的服务器启动时,你应当能看见下面的消息(路径和大小可能不一样):

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started

服务器完成启动序列后,你应当能看见下述内容,就表示服务器准备好,可以进行客户端连接:

mysqld: ready for connections
Version: '8.0.3'  socket: ''  port: 3306

服务器继续向控制台写入诊断输出。你可以打开新的控制台窗口运行客户端程序。

如果您省略了--console选项,服务器会向数据目录 (默认是C:\Program Files\MySQL\MySQL Server 8.0\data )中的错误日志写入诊断输出。错误日志的扩展名是.err,可以通过--log-error选项来设置。 option.

提示

初始的root账户是没有密码的,启动服务器后,您应该为其设置一个密码,参考  2.9.4节, “安全化初始MySQL账户”中的介绍。

2.3.5.6 从Windows命令行启动MySQL

可以在任何版本的Windows上,从命令行来手动的启动MySQL服务器。

要想从命令行启动mysqld,您应该开启一个控制台窗口(或 DOS window),并键入这个命令:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"

mysqld的路径要根据您系统上MySQL的安装位置来调整。

执行这个命令,可以关闭MySQL服务器:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" -u root shutdown
注意

如果MySQL的root用户账户有密码,那么您需要调用mysqladmin加上-p选项,然后在出现提示符时提供密码。

这个命令会调用MySQL管理实用工具 mysqladmin来连接服务器,并告诉它去关闭,这个命令是以MySQL的root 用户连接,它是MySQL授权系统中的默认管理帐户。

提示

MySQL授权系统中的用户完全独立于Microsoft Windows下的任何登录用户。

如果mysqld没有启动,检查错误日志,查看服务器在遇见问题时写出的任何信息。默认情况下,错误日志是位于 C:\Program Files\MySQL\MySQL Server 8.0\data 目录,有一个.err的后缀扩展名。或使用--log-error选项指定的, 除此之外,您可以尝试使用 --console 选项启动服务器,这种情况下,服务器可能将一些有用的信息输出在屏幕上,这将帮助我们解决问题。

使用--standalone--debug 选项启动mysqld,这种情况下, mysqld会写一个日志文件 C:\mysqld.trace,其中包含了mysqld没有启动的原因.

使用mysqld --verbose --help可以显示mysqld支持的所有选项。

2.3.5.7 自定义MySQL工具的路径

警告

手动编辑您系统的PATH时,必须非常小心;因为对现有 PATH值的任何一部分的以外删除或修改都会导致故障,甚至是无法使用系统。

为了方便调用MySQL程序,您可以将MySQL的bin目录路径添加到您的Windows系统的 PATH环境变量中:

  • 在Windows桌面,对计算机图标右键,然后选择并点击 属性

  • 然后点击菜单中的高级系统设置标签,接着 点击环境变量按钮

  • 系统变量下,选中 Path,然后点击 编辑 按钮,就会出现编辑系统变量对话框。

  • 将您的光标放在 space marked 变量值对应的文本值的最末尾,(可以使用 End键,以确保您的光标处于文本的最末尾。) 然后键入完整的MySQL的 bin目录路径(例如, C:\Program Files\MySQL\MySQL Server 8.0\bin)

    注意

    键入的路径与现有值之间必须有一个分号。

    以此点击确定,以至于关闭所有打开的对话框。并且新的 PATH值只能在新打开的命令行窗口生效。这样就可以在系统的任何位置,通过在DOS提示下输入程序名字,就可以调用MySQL可执行程序,而不用输入完整的路径。

如果您在一台Windows机器上运行多个MySQL服务器,那么您就不应该将MySQL的bin目录添加到您Windows的PATH中。

2.3.5.8 以一个Windows服务启动MySQL

在Windows上,建议将MySQL安装为Windows服务的方式运行MySQL,这样当Windows启动、关闭时,MySQL也自动启动、关闭。还可以从命令行使用NET命令, 或使用图形服务工具来控制MySQL服务器。通常情况下,要想将MySQL以一个Windows服务器的形式安装,那么您登录Windows系统的用户必须有管理员权限。

提示

MySQL 监视器 同样可以用于监视MySQL服务的状态。

在Windows的控制面板中看见服务工具(Windows的Service Control Manager)。为了避免冲突,建议在命令行上安装或卸载服务器时,关闭 服务工具。

Installing the service

将MySQL安装为一个Windows服务前,您应该先关闭当前正在运行的mysql服务器,使用下面命令:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin"
          -u root shutdown
提示

如果MySQL的root用户账户有密码,那么您在调用 mysqladmin时,需要加上-p选项,并根据提示键入密码。

这个命令会调用MySQL的管理工具mysqladmin去连接服务器,并告诉服务器关闭,这个命令是用MySQL的 root 用户执行的,它是MySQL权限系统中默认的管理员账户。

使用下面命令,将服务器安装为一个服务:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install

这个服务安装命令,不会启动服务器,后续会给出命令。

安装服务时可以使用下面的附加参数 :

  • 可以直接在--install选项后面指定服务名,默认服务名是MySQL

  • 如果给出了服务名,后面可以跟一个选项。一般情况,应当为--defaults-file=file_name,指定选项文件的名称,服务器启动时应当从中读取选项。

    可以使用单个选项代替--defaults-file,但是不提倡这样做。--defaults-file更加灵活一些,因为您可以将多个服务器启动选项放入命名的选项文件中。

  • 可以在服务名后面指定一个--local-service选项。这样服务器运行时使用本地服务 Windows账户,只具有有限的系统权限。 如果服务名后面同时跟有--defaults-file--local-service,二者可以按任何顺序排放。

对于以Windows服务的形式安装的MySQL服务器,根据下面规则来确定服务器使用的服务名和选项文件:

  • 如果在服务安装命令中,没有在--install选项后面指定了服务名,或使用默认服务名(MySQL), 则服务器使用MySQL作为服务名,并从标准的选项文件中的[mysqld]组读取选项。

  • 如果在服务安装命令中,在--install选项后面指定了服务名,而不是默认的服务名(MySQL),那么服务器将其作为服务名, 并从与服务有相同名称的标准选项文件中的[mysqld]组读取选项。这样您可以使用[mysqld]组中的选项用于所有的MySQL服务,并且还可以使用具有相同服务名的组,用于该服务名所对应的服务器。

  • 如果在服务安装命令中,在服务名后面指定了--defaults-file选项,则服务器只从命名文件的[mysqld]组中读取选项,而忽略标准选项文件。

对于更复杂的例子,可以考虑使用命令:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf

这里的,默认的服务名(MySQL)是由--install选项后面给出的,如果没有给出 --defaults-file选项,该命令会从标准选项文件的 [mysqld]组读取。然而,如果给出了--defaults-file选项,那么服务器只从命名的文件中的 [mysqld]选项组读取选项。

注意

在Windows上,如果服务器启动时有 --defaults-file--install 选项,那么 --install 必须放在第一的位置,否则 mysqld.exe 会尝试去启动MySQL服务器。

您还可以在启动MySQL服务之前,在Windows服务工具中指定启动的参数选项。

最后,在尝试启动MySQL服务之前,要确保运行这个服务的用户,对其的用户变量 user variables %TEMP%%TMP% (and also %TMPDIR%指向的文件夹有写权限。默认用于运行MySQL服务的用户是 LocalSystem,并且%TEMP%%TMP%的默认值是 C:\Windows\Temp,一个默认 LocalSystem对其有写权限的目录。因此,如果对默认值有任何的更改 (例如,改变运行服务的用户,或上述提到的用户变量,或将已使用的 --tmpdir选项使用另外的临时目录),那么MySQL服务都可能运行失败,因为该用户对修改后的临时目录没有授予写权限。

启动服务

一旦MySQL服务器安装为一个服务后,Windows会在开机是自动启动这个服务,还可以从 服务 工具直接启动服务,或使用NET START MySQL 命令。NET命令不区分大小写。

当以一个服务运行时,mysqld就不能访问控制台窗口,因此看不到任何信息,如果mysqld没有启动,检查错误日志, 查看服务器在遇见问题时写出的任何信息。错误日志是位于MySQL数据目录(例如,C:\Program Files\MySQL\MySQL Server 8.0\data)下。后缀是.err

当MySQL服务器安装为一个服务,并且这个服务正在运行,那么Windows在关机时,会自动关闭这个服务。还可以用 Services工具手动的关闭服务,使用NET STOP MySQL 命令,或mysqladmin shutdown命令。

如果您不想服务随机自动启动,您可以选择手动启动服务,实现的方式是,使用 --install-manual选项,而不是 --install 选项:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install-manual
移除服务

移除一个以服务形式安装的服务器,如果这个服务器正在运行,那么首先通过执行NET STOP MySQL来关闭它。然后使用 --remove选项来移除它:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --remove

2.3.5.9 测试安装的MySQL

可以通过执行以下命令来测试MySQL服务器是否工作:

C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlshow"
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlshow" -u root mysql
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin" version status proc
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" test

如果mysqld对客户端程序TCP/IP连接的响应较慢,可能是DNS问题。此时,使用--skip-name-resolve选项启动 mysqld,这样只使用MySQL权限表Host列中的localhost和IP地址。 (确保有一个指定IP地址的帐户,否则您可能不能连接。)

可以通过指定 --pipe--protocol=PIPE选项来强制MySQL客户端使用命名管道连接来代替TCP/IP连接。 或指定. (句点)作为主机名。如果您不想使用默认的管道名,可以使用--socket选项指定管道名。

如果您已经设置了root账户的密码,那么删除匿名账户,或创建一个新的用户账户,然后连接MySQL服务器时,您必须使用恰当的-u-p选项。

2.3.6 Windows下MySQL服务器安装的故障处理

第一次安装、运行MySQL时,你可能会遇到一些错误,使MySQL服务器不能启动。本节的目的是帮助你诊断并纠正这些错误。

解决服务器问题时,您的第一资源就是错误日志 error log。MySQL服务器使用错误日志来记录服务器不能启动的信息。错误日志位于您my.ini文件指定的 数据目录下,默认的数据目录位置是C:\Program Files\MySQL\MySQL Server 8.0\data,或 C:\ProgramData\Mysql 在Windows 7 和 Windows Server 2008。C:\ProgramData 目录默认是隐藏的,您需要修改文件夹选项以便可以看到这个目录及其内容。更多有关错误日志和理解其内容的信息,请参阅  5.4.2节, “错误日志

对于其它可能出现的错误信息,还可以参考MySQL服务启动时控制台显示的信息。将mysqld安装为服务后,使用NET START MySQL 命令来查看MySQL服务启动的相关信息。参阅  2.3.5.8节, “以一个Windows服务启动MySQL”

下面示例中显示的其他常见的错误日志,您可能在首次安装MySQL和启动服务器时遇见:

  • 如果MySQL服务器不能找到mysql权限库或其它关键文件,那么它会显示这些信息:

    System error 1067 has occurred.
    Fatal error: Can't open and lock privilege tables:
    Table 'mysql.user' doesn't exist
    

    出现这些信息,通常是当MySQL的base或数据目录安装在其它不同于默认位置的地方。

    这种情况也会出现在对MySQL进行升级并安装到一个新的位置。但是没有在配置文件中更新相对应的新位置。 此外,还可能是新旧配置文件冲突,所以升级MySQL后,确保删除和重命名了旧的配置文件。

    如果您没有将MySQL安装到默认目录( C:\Program Files\MySQL\MySQL Server 8.0),而是安装在其他目录,那么您需要通过配置文件(my.ini)让MySQL服务器知道安装的目录,通常将(my.ini)文件放在您的 C:\WINDOWS目录下。可以在命令提示符下输入下面的命令,这样从WINDIR环境变量值中确定确切的位置:

    C:\> echo %WINDIR%
    

    可以通过文本编辑器来创建或修改选项文件。例如,如果MySQL是安装在 E:\mysql,并且数据目录是 D:\MySQLdata,那么您可以创建选项文件,并在[mysqld]节中来指定basedirdatadir选项的值:

    [mysqld]
    # set basedir to your installation path
    basedir=E:/mysql
    # set datadir to the location of your data directory
    datadir=D:/MySQLdata
    

    Microsoft Windows的路径名是使用(正)斜线,而不是反斜线,如果使用反斜线,则必须使用双反斜线:

    [mysqld]
    # set basedir to your installation path
    basedir=C:\\Program Files\\MySQL\\MySQL Server 8.0
    # set datadir to the location of your data directory
    datadir=D:\\MySQLdata
    

    如果您改变了您MySQL的配置文件中datadir的值,那么在重新启动MySQL服务器之前,您必须移动已存在的MySQL数据目录中所有的内容。

    参阅  2.3.5.2节, “创建一个选项文件”

  • 如果您在使用MySQL安装助手重新安装或升级MySQL之前,没有停止并卸载现有的MySQL服务,那么您会看到这样的错误:

    Error: Cannot create Windows service for MySql. Error: 0
    

    这个错误发生的原因是,当配置向导试图安装服务时,它发现已经有一个同名的服务。

    解决该问题的一个方案是,在使用配置向导时,选择mysql之外的其它服务名。这样就可以正确安装新服务,但保留了原来的服务。但是这样不好,最好是卸掉不再使用的旧服务。

    为了永久卸载掉旧的mysql服务,用一个有管理权限的用户,执行下面的命令:

    C:\> sc delete mysql
    [SC] DeleteService SUCCESS
    

    如果你的Windows版本没有sc工具,可以从 http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 下载delsrv,并使用delsrv mysql语法。

2.3.7 Windows系统上安装后的工作

在图形界面可以执行本节中描述的大部分任务,包括:

如果必要的话,初始化数据目录以及创建MySQL权限表。在Windows上MySQL安装助手会自动的执行这些操作。对于使用ZIP包,您可以参照  2.9.1.1节, “使用mysqld手动初始化数据目录”中描述的初始化数据目录。

对密码,如果您在使用MySQL安装助手安装MySQL时,您可能已经给初始root分配了密码。(参阅  2.3.3节, “Windows上的MySQL安装助手”。) ,否则,使用  2.9.4节, “安全化初始的MySQL账户”中给出的步骤设置密码。

在分配密码前,您也许希望运行某些客户端程序来确保您可以连接到服务器,并且可以正常的操作。确保服务器是正在运行 (参阅 2.3.5.5节, “首次启动服务器”)。您也可以将其设置为一个MySQL服务,这样就可以开机自动启动。

如果您使用MySQL安装助手安装的MySQL,默认安装目录是C:\Program Files\MySQL\MySQL Server 8.0:

C:\> cd "C:\Program Files\MySQL\MySQL Server 8.0"

对于使用zip包,常用的安装位置是C:\mysql:

C:\> cd C:\mysql

当然,还可以将bin目录添加到您的PATH环境变量中,这样命令解释器就可以正确的找到MySQL程序,这样您就可以只运行程序的名字,而不用输入全路径名。

随着服务器的运行,执行下面的语句来验证您可以从服务器检索信息。输出的内容应该和这里显示的类似。

使用mysqlshow查看已存在的库:

C:\> bin\mysqlshow
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

列表中已安装的库可能有所不同,但是通常会包含小写名字的mysql 库和 information_schema库。

如果当前的MySQL账户不存在,那么上面的命令可能没有效果(以及其他程序的命令,如:mysql)。举个例子,如果您是使用MySQL安装助手安装的MySQL,那么 root用户会使用您提供的密码被自动的创建,那么这个程序可能会出现错误,或者您可能无法看见所有的库。这种情况下,您应该是用 -u root-p选项。(如果您已经安全化了MySQL的初始账户,那么您必须使用这些选项),由于有 -p,那么客户端程序会提示出入 root密码,如:

C:\> bin\mysqlshow -u root -p
Enter password: (这里输入root密码)
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

如果您指定了一个库名,那么mysqlshow显示这个库下所有的表:

C:\> bin\mysqlshow mysql
Database: mysql
+---------------------------+
|          Tables           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

使用mysql程序选择mysql库中的一个表进行查询:

C:\> bin\mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+------+-----------+-----------------------+
| User | Host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+

2.3.8 在Windows上升级MySQL

在Windows上升级MySQL,请遵循以下步骤:

  1. 回顾 2.10.1节, “升级MySQL”,获取更多额外信息,不仅仅是针对Windows的。

  2. 在执行升级前,通常要备份您当前的安装的MySQL,参阅 7.2节, “数据库备份方式”

  3. http://dev.mysql.com/downloads/下载最新Windows版的MySQL。

  4. 在升级MySQL之前,停止服务器。如果服务器已被安装为一个服务,那么在命令提示符下,使用下面的命令停止这个服务:

    C:\> NET STOP MySQL
    

    如果不是以服务的形式运行MySQL,那么使用mysqladmin来停止服务器。例如,在从 MySQL 5.7 升级到 8.0 前,使用mysqladmin在MySQL 5.7上:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqladmin" -u root shutdown
    
    提示

    如果MySQL的root用户账户已经有密码,那么在调用mysqladmin命令时要带上 -p,并在出现提示符时键入密码。

  5. 当从以前至的4.1.5版本升级到MySQL 8.0时,或从Zip文件安装的MySQL升级到MySQL Installation Wizard(安装帮助)安装的MySQL时,你必须手动卸载前面安装的MySQL服务(如果服务器以安装为一个服务)。

    使用下面命令来卸载MySQL服务:

    C:\> C:\mysql\bin\mysqld --remove
    

    如果您不移除现有的服务,那么MySQL安装帮助句不能正确的安装新的MySQL服务。

  6. 如果您使用MySQL安装助手,像 2.3.3节, “Windows上的MySQL安装助手”中描述的启动它。

  7. 如果您是升级一个zip包方式安装的MySQL。提取文件,您可以覆盖原有的MySQL(通常位于C:\mysql),或者安装到一个不同的目录,例如, C:\mysql5。通常建议覆盖原有已安装的。然而,为了升级,您必须移走原有MySQL的数据目录,这样避免覆盖了当前的数据文件。为了达到这样,遵从以下步骤:

    1. 解压zip文件到某个地方,不是解压到您当前安装的MySQL。

    2. 移走数据目录

    3. 再次压缩Zip文件

    4. 解压修改后的Zip文件到现有的安装位置。

  8. 如果您之前是以Windows服务运行MySQL,并且已经把之前老的服务卸载了,那么重装这个服务。

  9. 重启服务器。例如,使用NET START MySQL ,如果您的MySQL是一个服务,或者直接调用mysqld

  10. 以管理员,运行mysql_upgrade来检查您的表,如果有必要尝试修复它们,并且如果权限表有更改,那么升级您的权限表,以便更好的利用任何新的功能。参阅  4.4.5节, “mysql_upgrade — 检查和升级MySQL表”

  11. 如果您遇见错误,请参阅  2.3.6节, “Windows下MySQL服务器安装的故障处理”.

2.4 OS X上安装MySQL(暂略)

2.5 在Linux系统上安装MySQL

Linux supports a number of different solutions for installing MySQL. We recommend that you use one of the distributions from Oracle, for which several methods for installation are available:

As an alternative, you can use the package manager on your system to automatically download and install MySQL with packages from the native software repositories of your Linux distribution. These native packages are often several versions behind the currently available release. You will also normally be unable to install development milestone releases (DMRs), as these are not usually made available in the native repositories. For more information on using the native package installers, see  2.5.6节, “Installing MySQL on Linux from the Native Software Repositories”.

Note

For many Linux installations, you will want to set up MySQL to be started automatically when your machine starts. Many of the native package installations perform this operation for you, but for source, binary and RPM solutions you may need to set this up separately. The required script, mysql.server, can be found in the support-files directory under the MySQL installation directory or in a MySQL source tree. You can install it as /etc/init.d/mysql for automatic MySQL startup and shutdown. See  4.3.3节, “mysql.server — MySQL Server Startup Script”.

2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository

The MySQL Yum repository for Oracle Linux, Red Hat Enterprise Linux, CentOS, and Fedora provides RPM packages for installing the MySQL server, client, MySQL Workbench, MySQL Utilities, MySQL Router, MySQL Shell, Connector/ODBC, Connector/Python and so on (not all packages are available for all the distributions; see Installing Additional MySQL Products and Components with Yum for details).

Before You Start

As a popular, open-source software, MySQL, in its original or re-packaged form, is widely installed on many systems from various sources, including different software download sites, software repositories, and so on. The following instructions assume that MySQL is not already installed on your system using a third-party-distributed RPM package; if that is not the case, follow the instructions given in  2.10.1.2节, “Upgrading MySQL with the MySQL Yum Repository” or Replacing a Third-Party Distribution of MySQL Using the MySQL Yum Repository.

Steps for a Fresh Installation of MySQL

Follow the steps below to install the latest GA version of MySQL with the MySQL Yum repository:

  1. Adding the MySQL Yum Repository

    First, add the MySQL Yum repository to your system's repository list. This is a one-time operation, which can be performed by installing an RPM provided by MySQL. Follow these steps:

    1. Go to the Download MySQL Yum Repository page (http://dev.mysql.com/downloads/repo/yum/) in the MySQL Developer Zone.

    2. Select and download the release package for your platform.

    3. Install the downloaded release package with the following command, replacing platform-and-version-specific-package-name with the name of the downloaded RPM package:

      shell> sudo yum localinstall platform-and-version-specific-package-name.rpm
      

      For an EL6-based system, the command is in the form of:

      shell> sudo yum localinstall mysql57-community-release-el6-{version-number}.noarch.rpm
      

      For an EL7-based system:

      shell> sudo yum localinstall mysql57-community-release-el7-{version-number}.noarch.rpm
      

      For Fedora 24:

      shell> sudo dnf localinstall mysql57-community-release-fc24-{version-number}.noarch.rpm
      

      For Fedora 25:

      shell> sudo dnf localinstall mysql57-community-release-fc25-{version-number}.noarch.rpm
      

      For Fedora 26:

      shell> sudo dnf localinstall mysql57-community-release-fc26-{version-number}.noarch.rpm
      

      The installation command adds the MySQL Yum repository to your system's repository list and downloads the GnuPG key to check the integrity of the software packages. See  2.1.3.2节, “Signature Checking Using GnuPG” for details on GnuPG key checking.

      You can check that the MySQL Yum repository has been successfully added by the following command (for dnf-enabled systems, replace yum in the command with dnf):

      shell> yum repolist enabled | grep "mysql.*-community.*"
      

    Note

    Once the MySQL Yum repository is enabled on your system, any system-wide update by the yum update command (or dnf upgrade for dnf-enabled systems) will upgrade MySQL packages on your system and also replace any native third-party packages, if Yum finds replacements for them in the MySQL Yum repository; see  2.10.1.2节, “Upgrading MySQL with the MySQL Yum Repository” and, for a discussion on some possible effects of that on your system, see Upgrading the Shared Client Libraries.

  2. Selecting a Release Series

    When using the MySQL Yum repository, the latest GA series (currently MySQL 5.7) is selected for installation by default. If this is what you want, you can skip to the next step, Installing MySQL.

    Within the MySQL Yum repository, different release series of the MySQL Community Server are hosted in different subrepositories. The subrepository for the latest GA series (currently MySQL 5.7) is enabled by default, and the subrepositories for all other series (for example, the MySQL 8.0 series) are disabled by default. Use this command to see all the subrepositories in the MySQL Yum repository, and see which of them are enabled or disabled (for dnf-enabled systems, replace yum in the command with dnf):

    shell> yum repolist all | grep mysql
    

    To install the latest release from the latest GA series, no configuration is needed. To install the latest release from a specific series other than the latest GA series, disable the subrepository for the latest GA series and enable the subrepository for the specific series before running the installation command. If your platform supports yum-config-manager, you can do that by issuing these commands, which disable the subrepository for the 5.7 series and enable the one for the 8.0 series:

    shell> sudo yum-config-manager --disable mysql57-community
    shell> sudo yum-config-manager --enable mysql80-community
    

    For dnf-enabled platforms:

    shell> sudo dnf config-manager --disable mysql57-community
    shell> sudo dnf config-manager --enable mysql80-community
    

    Besides using yum-config-manager or the dnf config-manager command, you can also select a release series by editing manually the /etc/yum.repos.d/mysql-community.repo file. This is a typical entry for a release series' subrepository in the file:

    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    Find the entry for the subrepository you want to configure, and edit the enabled option. Specify enabled=0 to disable a subrepository, or enabled=1 to enable a subrepository. For example, to install MySQL 8.0, make sure you have enabled=0 for the above subrepository entry for MySQL 5.7, and have enabled=1 for the entry for the 8.0 series:

    # Enable to use MySQL 8.0
    [mysql80-community]
    name=MySQL 8.0 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
    

    You should only enable subrepository for one release series at any time. When subrepositories for more than one release series are enabled, the latest series will be used by Yum.

    Verify that the correct subrepositories have been enabled and disabled by running the following command and checking its output (for dnf-enabled systems, replace yum in the command with dnf):

    shell> yum repolist enabled | grep mysql
    
  3. Installing MySQL

    Install MySQL by the following command (for dnf-enabled systems, replace yum in the command with dnf):

    shell> sudo yum install mysql-community-server
    

    This installs the package for MySQL server (mysql-community-server) and also packages for the components required to run the server, including packages for the client (mysql-community-client), the common error messages and character sets for client and server (mysql-community-common), and the shared client libraries (mysql-community-libs).

  4. Starting the MySQL Server

    Start the MySQL server with the following command:

    shell> sudo service mysqld start
    Starting mysqld:[ OK ]
    

    You can check the status of the MySQL server with the following command:

    shell> sudo service mysqld status
    mysqld (pid 3066) is running.
    

At the initial start up of the server, the following happens, given that the data directory of the server is empty:

  • The server is initialized.

  • SSL certificate and key files are generated in the data directory.

  • The validate_password plugin is installed and enabled.

  • A superuser account 'root'@'localhost is created. A password for the superuser is set and stored in the error log file. To reveal it, use the following command:

    shell> sudo grep 'temporary password' /var/log/mysqld.log
    

    Change the root password as soon as possible by logging in with the generated, temporary password and set a custom password for the superuser account:

    shell> mysql -uroot -p 
    
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
    
    Note

    MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters.

For more information on the postinstallation procedures, see  2.9节, “Postinstallation Setup and Testing”.

Note

Compatibility Information for EL7-based platforms: The following RPM packages from the native software repositories of the platforms are incompatible with the package from the MySQL Yum repository that installs the MySQL server. Once you have installed MySQL using the MySQL Yum repository, you will not be able to install these packages (and vice versa).

  • akonadi-mysql

Installing Additional MySQL Products and Components with Yum

You can use Yum to install and manage individual components of MySQL. Some of these components are hosted in sub-repositories of the MySQL Yum repository: for example, the MySQL Connectors are to be found in the MySQL Connectors Community sub-repository, and the MySQL Workbench in MySQL Tools Community. You can use the following command to list the packages for all the MySQL components available for your platform from the MySQL Yum repository (for dnf-enabled systems, replace yum in the command with dnf):

shell> sudo yum --disablerepo=\* --enablerepo='mysql*-community*' list available

Install any packages of your choice with the following command, replacing package-name with name of the package (for dnf-enabled systems, replace yum in the command with dnf):

shell> sudo yum install package-name

For example, to install MySQL Workbench on Fedora 24:

shell> sudo dnf install mysql-workbench-community

To install the shared client libraries (for dnf-enabled systems, replace yum in the command with dnf):

shell> sudo yum install mysql-community-libs

Updating MySQL with Yum

Besides installation, you can also perform updates for MySQL products and components using the MySQL Yum repository. See  2.10.1.2节, “Upgrading MySQL with the MySQL Yum Repository” for details.

2.5.2 Installing MySQL on Linux Using the MySQL APT Repository

The MySQL APT repository provides deb packages for installing and managing the MySQL server, client, and other components on the following Linux platforms: :

  • Debian 8.x (jessie)

  • Ubuntu 14.04 LTS (Trusty Tahr)

  • Ubuntu 16.04 (Xenial Xerus)

Instructions for using the MySQL APT Repository are available in A Quick Guide to Using the MySQL APT Repository.

2.5.3 Installing MySQL on Linux Using the MySQL SLES Repository

The MySQL SLES repository provides RPM packages for installing and managing the MySQL server, client, and other components on SUSE Enterprise Linux Server.

Instructions for using the MySQL SLES repository are available in A Quick Guide to Using the MySQL SLES Repository.

Note

The MySQL SLES repository is now in development release. We encourage you to try it and provide us with feedback. Please report any bugs or inconsistencies you observe to our Bugs Database.

2.5.4 Installing MySQL on Linux Using RPM Packages from Oracle

The recommended way to install MySQL on RPM-based Linux distributions is by using the RPM packages provided by Oracle. There are two sources for obtaining them, for the Community Edition of MySQL:

Note

RPM distributions of MySQL are also provided by other vendors. Be aware that they may differ from those built by Oracle in features, capabilities, and conventions (including communication setup), and that the installation instructions in this manual do not necessarily apply to them. The vendor's instructions should be consulted instead.

RPM packages for MySQL are listed in the following tables:

Table 2.7 RPM Packages for MySQL Community Edition

Package NameSummary
mysql-community-serverDatabase server and related tools
mysql-community-clientMySQL client applications and tools
mysql-community-commonCommon files for server and client libraries
mysql-community-devel Development header files and libraries for MySQL database client applications
mysql-community-libs Shared libraries for MySQL database client applications
mysql-community-libs-compatShared compatibility libraries for previous MySQL installations
mysql-community-test Test suite for the MySQL server

Table 2.8 RPM Packages for the MySQL Enterprise Edition

Package NameSummary
mysql-commercial-serverDatabase server and related tools
mysql-commercial-clientMySQL client applications and tools
mysql-commercial-commonCommon files for server and client libraries
mysql-commercial-devel Development header files and libraries for MySQL database client applications
mysql-commercial-libs Shared libraries for MySQL database client applications
mysql-commercial-libs-compatShared compatibility libraries for previous MySQL installations
mysql-commercial-test Test suite for the MySQL server

The full names for the RPMs have the following syntax:

packagename-version-distribution-arch.rpm

The distribution and arch values indicate the Linux distribution and the processor type for which the package was built. See the table below for lists of the distribution identifiers:

Table 2.9 MySQL Linux RPM Package Distribution Identifiers

distribution ValueIntended Use
el6, el7Red Hat Enterprise Linux/Oracle Linux/CentOS 6 or 7
fc24, fc25, fc26Fedora 24, 25, or 26
sles12SUSE Linux Enterprise Server 12

To see all files in an RPM package (for example, mysql-community-server), use the following command:

shell> rpm -qpl mysql-community-server-version-distribution-arch.rpm

The discussion in the rest of this section applies only to an installation process using the RPM packages directly downloaded from Oracle, instead of through a MySQL repository.

Dependency relationships exist among some of the packages. If you plan to install many of the packages, you may wish to download the RPM bundle tar file instead, which contains all the RPM packages listed above, so that you need not download them separately.

In most cases, you need to install the mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, and mysql-community-libs-compat packages to get a functional, standard MySQL installation. To perform such a standard, minimal installation, go to the folder that contains all those packages (and, preferably, no other RPM packages with similar names), and issue the following command:

shell> sudo yum install mysql-community-{server,client,common,libs}-* 

Replace yum with zypper for SLES systems, and with dnf for dnf-enabled systems (like Fedora 24 and later).

While it is much preferable to use a high-level package management tool like yum to install the packages, users who prefer direct rpm commands can replace the yum install command with the rpm -Uvh command; however, using rpm -Uvh instead makes the installation process more prone to failure, due to potential dependency issues the installation process might run into.

To install only the client programs, you can skip mysql-community-server in your list of packages to install; issue the following command:

shell> sudo yum install mysql-community-{client,common,libs}-* 

Replace yum with zypper for SLES systems, and with dnf for dnf-enabled systems (like Fedora 24 and later).

A standard installation of MySQL using the RPM packages result in files and resources created under the system directories, shown in the following table.

Table 2.10 MySQL Installation Layout for Linux RPM Packages from the MySQL Developer Zone

Files or ResourcesLocation
Client programs and scripts/usr/bin
mysqld server/usr/sbin
Configuration file/etc/my.cnf
Data directory/var/lib/mysql
Error log file

For RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log

For SLES: /var/log/mysql/mysqld.log

Value of secure_file_priv/var/lib/mysql-files
System V init script

For RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld

For SLES: /etc/init.d/mysql

Systemd service

For RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld

For SLES: mysql

Pid file /var/run/mysql/mysqld.pid
Socket/var/lib/mysql/mysql.sock
Keyring directory/var/lib/mysql-keyring
Unix manual pages/usr/share/man
Include (header) files/usr/include/mysql
Libraries/usr/lib/mysql
Miscellaneous support files (for example, error messages, and character set files)/usr/share/mysql

The installation also creates a user named mysql and a group named mysql on the system.

Note

Installation of previous versions of MySQL using older packages might have created a configuration file named /usr/my.cnf. It is highly recommended that you examine the contents of the file and migrate the desired settings inside to the file /etc/my.cnf file, then remove /usr/my.cnf.

MySQL is NOT automatically started at the end of the installation process. For Red Hat Enterprise Linux, Oracle Linux, CentOS, and Fedora systems, use the following command to start MySQL:

shell> sudo service mysqld start

For SLES systems, the command is the same, but the service name is different:

shell> sudo service mysql start

If the operating system is systemd enabled, standard service commands such as stop, start, status and restart should be used to manage the MySQL server service. The mysqld service is enabled by default, and it starts at system reboot. Notice that certain things might work differently on systemd platforms: for example, changing the location of the data directory might cause issues. See  2.5.9节, “Managing MySQL Server with systemd” for additional information.

At the initial start up of the server, the following happens, given that the data directory of the server is empty:

  • The server is initialized.

  • An SSL certificate and key files are generated in the data directory.

  • The validate_password plugin is installed and enabled.

  • A superuser account 'root'@'localhost' is created. A password for the superuser is set and stored in the error log file. To reveal it, use the following command for RHEL, Oracle Linux, CentOS, and Fedora systems:

    shell> sudo grep 'temporary password' /var/log/mysqld.log
    

    Use the following command for SLES systems:

    shell> sudo grep 'temporary password' /var/log/mysql/mysqld.log
    

    The next step is to log in with the generated, temporary password and set a custom password for the superuser account:

shell> mysql -uroot -p 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Note

MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters.

If something goes wrong during installation, you might find debug information in the error log file /var/log/mysqld.log.

For some Linux distributions, it might be necessary to increase the limit on number of file descriptors available to mysqld. See  B.5.2.17节, “File Not Found and Similar Errors”

Installing Client Libraries from Multiple MySQL Versions.  It is possible to install multiple client library versions, such as for the case that you want to maintain compatibility with older applications linked against previous libraries. To install an older client library, use the --oldpackage option with rpm. For example, to install mysql-community-libs-5.5 on an EL6 system that has libmysqlclient.21 from MySQL 8.0, use a command like this:

shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm

Debug Package.  A special variant of MySQL Server compiled with the debug package has been included in the server RPM packages. It performs debugging and memory allocation checks and produces a trace file when the server is running. To use that debug version, start MySQL with /usr/sbin/mysqld-debug, instead of starting it as a service or with /usr/sbin/mysqld. See  28.5.3节, “The DBUG Package” for the debug options you can use.

Rebuilding RPMs from source SRPMs.  Source code SRPM packages for MySQL are available for download. They can be used as-is to rebuild the MySQL RPMs with the standard rpmbuild tool chain.

2.5.5 Installing MySQL on Linux Using Debian Packages from Oracle

Oracle provides Debian packages for installing MySQL on Debian or Debian-like Linux systems. The packages are available through two different channels:

  • The MySQL APT Repository. This is the preferred method for installing MySQL on Debian-like systems, as it provides a simple and convenient way to install and update MySQL products. For details, see  2.5.2节, “Installing MySQL on Linux Using the MySQL APT Repository”.

  • The MySQL Developer Zone's Download Area. For details, see  2.1.2节, “How to Get MySQL”. The following are some information on the Debian packages available there and the instructions for installing them:

    • Various Debian packages are provided in the MySQL Developer Zone for installing different components of MySQL on different Debian or Ubuntu platforms (currently, Debian 8, and Ubuntu 14 and 16 are supported). The preferred method is to use the tarball bundle, which contains the packages needed for a basic setup of MySQL. The tarball bundles have names in the format of mysql-server_MVER-DVER_CPU.deb-bundle.tar. MVER is the MySQL version and DVER is the Linux distribution version. The CPU value indicates the processor type or family for which the package is built, as shown in the following table:

      Table 2.11 MySQL Debian and Ubuntu Installation Packages CPU Identifiers

      CPU ValueIntended Processor Type or Family
      i386Pentium processor or better, 32 bit
      amd6464-bit x86 processor

    • After downloading the tarball, unpack it with the following command:

      shell> tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
      
    • You may need to install the libaio library if it is not already present on your system:

      shell> sudo apt-get install libaio1
      
    • Preconfigure the MySQL server package with the following command:

      shell> sudo dpkg-preconfigure mysql-community-server_*.deb
      

      You will be asked to provide a password for the root user for your MySQL installation. You might also be asked other questions regarding the installation.

      Important

      Make sure you remember the root password you set. Users who want to set a password later can leave the password field blank in the dialogue box and just press OK; in that case, root access to the server is authenticated using the MySQL Socket Peer-Credential Authentication Plugin for connections using a Unix socket file. You can set the root password later using mysql_secure_installation.

    • For a basic installation of the MySQL server, install the database common files package, the client package, the client metapackage, the server package, and the server metapackage (in that order); you can do that with a single command:

      shell> sudo dpkg -i mysql-{common,community-client,client,community-server,server}_*.deb
      

      There are also packages with server-core and client-core in the package names. These contain binaries only and are installed automatically by the standard packages. Installing them by themselves will not result in a functioning MySQL setup.

      If you are being warned of unmet dependencies by dpkg, you can fix them using apt-get:

      sudo apt-get -f install

      Here are where the files are installed on the system:

      • All configuration files (like my.cnf) are under /etc/mysql

      • All binaries, libraries, headers, etc., are under /usr/bin and /usr/sbin

      • The data directory is under /var/lib/mysql

Note

Debian distributions of MySQL are also provided by other vendors. Be aware that they may differ from those built by Oracle in features, capabilities, and conventions (including communication setup), and that the instructions in this manual do not necessarily apply to installing them. The vendor's instructions should be consulted instead.

2.5.6 Installing MySQL on Linux from the Native Software Repositories

Many Linux distributions include a version of the MySQL server, client tools, and development components in their native software repositories and can be installed with the platforms' standard package management systems. This section provides basic instructions for installing MySQL using those package management systems.

Important

Native packages are often several versions behind the currently available release. You will also normally be unable to install development milestone releases (DMRs), as these are not usually made available in the native repositories. Before proceeding, we recommend that you check out the other installation options described in  2.5节, “Installing MySQL on Linux”.

Distribution specific instructions are shown below:

  • Red Hat Linux, Fedora, CentOS

    Note

    For a number of Linux distributions, you can install MySQL using the MySQL Yum repository instead of the platform's native software repository. See  2.5.1节, “Installing MySQL on Linux Using the MySQL Yum Repository” for details.

    For Red Hat and similar distributions, the MySQL distribution is divided into a number of separate packages, mysql for the client tools, mysql-server for the server and associated tools, and mysql-libs for the libraries. The libraries are required if you want to provide connectivity from different languages and environments such as Perl, Python and others.

    To install, use the yum command to specify the packages that you want to install. For example:

    root-shell> yum install mysql mysql-server mysql-libs mysql-server
    Loaded plugins: presto, refresh-packagekit
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package mysql.x86_64 0:5.1.48-2.fc13 set to be updated
    ---> Package mysql-libs.x86_64 0:5.1.48-2.fc13 set to be updated
    ---> Package mysql-server.x86_64 0:5.1.48-2.fc13 set to be updated
    --> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.48-2.fc13.x86_64
    --> Running transaction check
    ---> Package perl-DBD-MySQL.x86_64 0:4.017-1.fc13 set to be updated
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package               Arch          Version               Repository      Size
    ================================================================================
    Installing:
     mysql                 x86_64        5.1.48-2.fc13         updates        889 k
     mysql-libs            x86_64        5.1.48-2.fc13         updates        1.2 M
     mysql-server          x86_64        5.1.48-2.fc13         updates        8.1 M
    Installing for dependencies:
     perl-DBD-MySQL        x86_64        4.017-1.fc13          updates        136 k
    
    Transaction Summary
    ================================================================================
    Install       4 Package(s)
    Upgrade       0 Package(s)
    
    Total download size: 10 M
    Installed size: 30 M
    Is this ok [y/N]: y
    Downloading Packages:
    Setting up and reading Presto delta metadata
    Processing delta metadata
    Package(s) data still to download: 10 M
    (1/4): mysql-5.1.48-2.fc13.x86_64.rpm                    | 889 kB     00:04
    (2/4): mysql-libs-5.1.48-2.fc13.x86_64.rpm               | 1.2 MB     00:06
    (3/4): mysql-server-5.1.48-2.fc13.x86_64.rpm             | 8.1 MB     00:40
    (4/4): perl-DBD-MySQL-4.017-1.fc13.x86_64.rpm            | 136 kB     00:00
    --------------------------------------------------------------------------------
    Total                                           201 kB/s |  10 MB     00:52
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing     : mysql-libs-5.1.48-2.fc13.x86_64                          1/4
      Installing     : mysql-5.1.48-2.fc13.x86_64                               2/4
      Installing     : perl-DBD-MySQL-4.017-1.fc13.x86_64                       3/4
      Installing     : mysql-server-5.1.48-2.fc13.x86_64                        4/4
    
    Installed:
      mysql.x86_64 0:5.1.48-2.fc13            mysql-libs.x86_64 0:5.1.48-2.fc13
      mysql-server.x86_64 0:5.1.48-2.fc13
    
    Dependency Installed:
      perl-DBD-MySQL.x86_64 0:4.017-1.fc13
    
    Complete!
    

    MySQL and the MySQL server should now be installed. A sample configuration file is installed into /etc/my.cnf. An init script, to start and stop the server, will have been installed into /etc/init.d/mysqld. To start the MySQL server use service:

    root-shell> service mysqld start
    

    To enable the server to be started and stopped automatically during boot, use chkconfig:

    root-shell> chkconfig --levels 235 mysqld on
    

    Which enables the MySQL server to be started (and stopped) automatically at the specified the run levels.

    The database tables will have been automatically created for you, if they do not already exist. You should, however, run mysql_secure_installation to set the root passwords on your server.

  • Debian, Ubuntu, Kubuntu

    Note

    For Debian 8 and Ubuntu 14 and 16, MySQL can be installed using the MySQL APT Repository instead of the platform's native software repository. See  2.5.2节, “Installing MySQL on Linux Using the MySQL APT Repository” for details.

    On Debian and related distributions, there are two packages for MySQL in their software repositories, mysql-client and mysql-server, for the client and server components respectively. You should specify an explicit version, for example mysql-client-5.1, to ensure that you install the version of MySQL that you want.

    To download and install, including any dependencies, use the apt-get command, specifying the packages that you want to install.

    Note

    Before installing, make sure that you update your apt-get index files to ensure you are downloading the latest available version.

    A sample installation of the MySQL packages might look like this (some sections trimmed for clarity):

    root-shell> apt-get install mysql-client-5.1 mysql-server-5.1
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following packages were automatically installed and are no longer required:
      linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic
    Use 'apt-get autoremove' to remove them.
    The following extra packages will be installed:
      bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl
      libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx
      mysql-common postfix
    Suggested packages:
      dbishell libipc-sharedcache-perl tinyca procmail postfix-mysql postfix-pgsql
      postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb
    The following NEW packages will be installed
      bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl
      libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx
      mysql-client-5.1 mysql-common mysql-server-5.1 postfix
    0 upgraded, 13 newly installed, 0 to remove and 182 not upgraded.
    Need to get 1907kB/25.3MB of archives.
    After this operation, 59.5MB of additional disk space will be used.
    Do you want to continue [Y/n]? Y
    Get: 1 http://gb.archive.ubuntu.com jaunty-updates/main mysql-common 5.1.30really5.0.75-0ubuntu10.5 [63.6kB]
    Get: 2 http://gb.archive.ubuntu.com jaunty-updates/main libmysqlclient15off 5.1.30really5.0.75-0ubuntu10.5 [1843kB]
    Fetched 1907kB in 9s (205kB/s)
    Preconfiguring packages ...
    Selecting previously deselected package mysql-common.
    (Reading database ... 121260 files and directories currently installed.)
    ...
    Processing 1 added doc-base file(s)...
    Registering documents with scrollkeeper...
    Setting up libnet-daemon-perl (0.43-1) ...
    Setting up libplrpc-perl (0.2020-1) ...
    Setting up libdbi-perl (1.607-1) ...
    Setting up libmysqlclient15off (5.1.30really5.0.75-0ubuntu10.5) ...
    
    Setting up libdbd-mysql-perl (4.008-1) ...
    Setting up libmysqlclient16 (5.1.31-1ubuntu2) ...
    
    Setting up mysql-client-5.1 (5.1.31-1ubuntu2) ...
    
    Setting up mysql-server-5.1 (5.1.31-1ubuntu2) ...
     * Stopping MySQL database server mysqld
       ...done.
    2013-09-24T13:03:09.048353Z 0 [Note] InnoDB: 8.0.3 started; log sequence number 1566036
    2013-09-24T13:03:10.057269Z 0 [Note] InnoDB: Starting shutdown...
    2013-09-24T13:03:10.857032Z 0 [Note] InnoDB: Shutdown completed; log sequence number 1566036
     * Starting MySQL database server mysqld
       ...done.
     * Checking for corrupt, not cleanly closed and upgrade needing tables.
    ...
    Processing triggers for libc6 ...
    ldconfig deferred processing now taking place
    
    Note

    The apt-get command will install a number of packages, including the MySQL server, in order to provide the typical tools and application environment. This can mean that you install a large number of packages in addition to the main MySQL package.

    During installation, the initial database will be created, and you will be prompted for the MySQL root password (and confirmation). A configuration file will have been created in /etc/mysql/my.cnf. An init script will have been created in /etc/init.d/mysql.

    The server will already be started. You can manually start and stop the server using:

    root-shell> service mysql [start|stop]
    

    The service will automatically be added to the 2, 3 and 4 run levels, with stop scripts in the single, shutdown and restart levels.

2.5.7 Installing MySQL on Linux with docker

The docker deployment framework supports easy installation and configuration of MySQL servers. For instructions, see https://hub.docker.com/r/mysql/mysql-server/. This page also provides extensive documentation about using MySQL under docker.

2.5.8 Installing MySQL on Linux with juju

The juju deployment framework supports easy installation and configuration of MySQL servers. For instructions, see https://jujucharms.com/mysql/.

2.5.9 Managing MySQL Server with systemd

If you install MySQL using an RPM or Debian package on the following Linux platforms, server startup and shutdown is managed by systemd:

  • RPM package platforms:

    • Red Hat Enterprise Linux 7; Oracle Linux 7; CentOS 7

    • SUSE Linux Enterprise Server 12

    • Fedora 24, 25, or 26

  • Debian package platforms:

    • Debian 8 or higher

    • Ubuntu 16 or higher

If you install MySQL from a source distribution on a platform that uses systemd, obtain systemd support for MySQL by configuring the distribution using the -DWITH_SYSTEMD=1 CMake option. See  2.8.4节, “MySQL Source-Configuration Options”.

The following discussion covers these topics:

Note

On platforms for which systemd support for MySQL is installed, scripts such as mysqld_safe and the System V initialization script are unnecessary and are not installed. For example, mysqld_safe can handle server restarts, but systemd provides the same capability, and does so in a manner consistent with management of other services rather than by using an application-specific program.

Because systemd has the capability of managing multiple MySQL instances on platforms for which systemd support for MySQL is installed, mysqld_multi and mysqld_multi.server are unnecessary and are not installed.

Overview of systemd

systemd provides automatic MySQL server startup and shutdown. It also enables manual server management using the systemctl command. For example:

systemctl {start|stop|restart|status} mysqld

Alternatively, use the service command (with the arguments reversed), which is compatible with System V systems:

service mysqld {start|stop|restart|status}
Note

For the systemctl or service commands, if the MySQL service name is not mysqld, use the appropriate name. For example, use mysql rather than mysqld on Debian-based and SLES systems.

Support for systemd includes these files:

  • mysqld.service (RPM platforms), mysql.service (Debian platforms): systemd service unit configuration file, with details about the MySQL service.

  • mysqld@.service (RPM platforms), mysql@.service (Debian platforms): Like mysqld.service or mysql.service, but used for managing multiple MySQL instances.

  • mysqld.tmpfiles.d: File containing information to support the tmpfiles feature. This file is installed under the name mysql.conf.

  • mysqld_pre_systemd (RPM platforms), mysql-system-start (Debian platforms): Support script for the unit file. This script assists in creating the error log file only if the log location matches a pattern (/var/log/mysql*.log for RPM platforms, /var/log/mysql/*.log for Debian platforms). In other cases, the error log directory must be writable or the error log must be present and writable for the user running the mysqld process.

Configuring systemd for MySQL

To add or change systemd options for MySQL, these methods are available:

  • Use a localized systemd configuration file.

  • Arrange for systemd to set environment variables for the MySQL server process.

  • Set the MYSQLD_OPTS systemd variable.

To use a localized systemd configuration file, create the /etc/systemd/system/mysqld.service.d directory if it does not exist. In that directory, create a file that contains a [Service] section listing the desired settings. For example:

[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit
Environment="LD_PRELOAD=/path/to/malloc/library"
Environment="TZ=time_zone_setting"

The discussion here uses override.conf as the name of this file. Newer versions of systemd support the following command, which opens an editor and permits you to edit the file:

systemctl edit mysqld  # RPM platforms
systemctl edit mysql   # Debian platforms

Whenever you create or change override.conf, reload the systemd configuration, then tell systemd to restart the MySQL service:

systemctl daemon-reload
systemctl restart mysqld  # RPM platforms
systemctl restart mysql   # Debian platforms

With systemd, the override.conf configuration method must be used for certain parameters, rather than settings in a [mysqld] or [mysqld_safe] group in a MySQL option file:

  • For some parameters, override.conf must be used because systemd itself must know their values and it cannot read MySQL option files to get them.

  • Parameters that specify values otherwise settable only using options known to mysqld_safe must be specified using systemd because there is no corresponding mysqld parameter.

For additional information about using systemd rather than mysqld_safe, see Migrating from mysqld_safe to systemd.

You can set the following parameters in override.conf:

  • To specify the process ID file, use override.conf and change both PIDFile and ExecStart to name the PID file path name. Any setting of the process ID file in MySQL option files is ignored. To modify ExecStart, it must first be cleared. For example:

    [Service]
    PIDFile=/var/run/mysqld/mysqld-custom.pid
    ExecStart=
    ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld-custom.pid $MYSQLD_OPTS
    
  • To set the number of file descriptors available to the MySQL server, use LimitNOFILE in override.conf rather than the --open-files-limit option for mysqld or mysqld_safe.

  • To set the maximum core file size, use LimitCore in override.conf rather than the --core-file-size option for mysqld_safe.

  • To set the scheduling priority for the MySQL server, use Nice in override.conf rather than the --nice option for mysqld_safe.

Some MySQL parameters are configured using environment variables:

  • LD_PRELOAD: Set this variable if the MySQL server should use a specific memory-allocation library.

  • TZ: Set this variable to specify the default time zone for the server.

There are multiple ways to specify environment variable values for use by the MySQL server process managed by systemd:

  • Use Environment lines in the override.conf file. For the syntax, see the example in the preceding discussion that describes how to use this file.

  • Specify the values in the /etc/sysconfig/mysql file (create the file if it does not exist). Assign values using the following syntax:

    LD_PRELOAD=/path/to/malloc/library
    TZ=time_zone_setting
    

    After modifying /etc/sysconfig/mysql, restart the server to make the changes effective:

    systemctl restart mysqld  # RPM platforms
    systemctl restart mysql   # Debian platforms
    

To specify options for mysqld without modifying systemd configuration files directly, set or unset the MYSQLD_OPTS systemd variable. For example:

systemctl set-environment MYSQLD_OPTS="--general_log=1"
systemctl unset-environment MYSQLD_OPTS

MYSQLD_OPTS can also be set in the /etc/sysconfig/mysql file.

After modifying the systemd environment, restart the server to make the changes effective:

systemctl restart mysqld  # RPM platforms
systemctl restart mysql   # Debian platforms

Configuring Multiple MySQL Instances Using systemd

This section describes how to configure systemd for multiple instances of MySQL.

Note

Because systemd has the capability of managing multiple MySQL instances on platforms for which systemd support is installed, mysqld_multi and mysqld_multi.server are unnecessary and are not installed.

To use multiple-instance capability, modify the my.cnf option file to include configuration of key options for each instance. These file locations are typical:

  • /etc/my.cnf or /etc/mysql/my.cnf (RPM platforms)

  • /etc/mysql/mysql.conf.d/mysqld.cnf (Debian platforms)

For example, to manage two instances named replica01 and replica02, add something like this to the option file:

RPM platforms:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysqld-replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysqld-replica02.log

Debian platforms:

[mysqld@replica01]
datadir=/var/lib/mysql-replica01
socket=/var/lib/mysql-replica01/mysql.sock
port=3307
log-error=/var/log/mysql/replica01.log

[mysqld@replica02]
datadir=/var/lib/mysql-replica02
socket=/var/lib/mysql-replica02/mysql.sock
port=3308
log-error=/var/log/mysql/replica02.log

The replica names shown here use @ as the delimiter because that is the only delimiter supported by systemd.

Instances then are managed by normal systemd commands, such as:

systemctl start mysqld@replica01
systemctl start mysqld@replica02

To enable instances to run at boot time, do this:

systemctl enable mysqld@replica01
systemctl enable mysqld@replica02

Use of wildcards is also supported. For example, this command displays the status of all replica instances:

systemctl status 'mysqld@replica*'

For management of multiple MySQL instances on the same machine, systemd automatically uses a different unit file:

  • mysqld@.service rather than mysqld.service (RPM platforms)

  • mysql@.service rather than mysql.service (Debian platforms)

In the unit file, %I and %i reference the parameter passed in after the @ marker and are used to manage the specific instance. For a command such as this:

systemctl start mysqld@replica01

systemd starts the server using a command such as this:

mysqld --defaults-group-suffix=@%I ...

The result is that the [server], [mysqld], and [mysqld@replica01] option groups are read and used for that instance of the service.

Note

On Debian platforms, AppArmor prevents the server from reading or writing /var/lib/mysql-replica*, or anything other than the default locations. To address this, you must customize or disable the profile in /etc/apparmor.d/user.sbin.mysqld.

Note

On Debian platforms, the packaging scripts for MySQL uninstallation cannot currently handle mysqld@ instances. Before removing or upgrading the package, you must stop any extra instances manually first.

Migrating from mysqld_safe to systemd

Because mysqld_safe is not installed on platforms that use systemd to manage MySQL, options previously specified for that program (for example, in an [mysqld_safe] option group) must be specified another way:

  • Some mysqld_safe options are also understood by mysqld and can be moved from the [mysqld_safe] option group to the [mysqld] group. This does not include --pid-file, --open-files-limit, or --nice. To specify those options, use the override.conf systemd file, described previously.

  • For some mysqld_safe options, there are similar mysqld options. For example, the mysqld_safe option for enabling syslog logging is --syslog. For mysqld, enable the log_syslog system variable instead. For details, see  5.4.2节, “The Error Log”.

  • mysqld_safe options not understood by mysqld can be specified in override.conf or environment variables. For example, with mysqld_safe, if the server should use a specific memory allocation library, this is specified using the --malloc-lib option. For installations that manage the server with systemd, arrange to set the LD_PRELOAD environment variable instead, as described previously.

2.6 在Solaris系统上安装MySQL

提示

MySQL 8.0 支持 Solaris 11 (Update 3+ 及以上版本)。

在Solaris 上有多种格式的MySQL安装包可以使用。

重要

安装包依赖于Oracle Developer Studio 12.5 运行库,所以在运行MySQL安装包之前,必须先安装这个库。可以从 这里下载。当然可以只安装所需要的库,不必安装整个Oracle Developer Studio;参阅这里的说明 在Oracle Solaris 11上安装所需的运行库

获得Solaris系统使用的tarball或PKG格式的发行版MySQL二进制安装包, http://dev.mysql.com/downloads/mysql/8.0.html

在Solaris上安装和使用MySQL时,需要注意的其他提示:

  • 如果您想使用mysql 用户和组来使用MySQL,使用groupadduseradd 命令:

    groupadd mysql
    useradd -g mysql -s /bin/false mysql
    
  • 如果你在Solaris系统上使用发行版的二进制tar包安装MySQL,由于Solaristar无法处理长文件名,所以需要用 GNU tar (gtar)来解开安装包,如果您的系统上还没有 GNU tar ,可以使用下面的命令安装它:

    pkg install archiver/gnu-tar
    
  • 您应该使用forcedirectio 选项,来挂载任何用来存储InnoDB文件的文件系统(默认的挂载是没有这个选项)。 如果没有这样做,那么在这个平台上使用InnoDB存储引擎会导致性能显著下降。

  • 如果您想要MySQL启动自动,您可以复制 support-files/mysql.server/etc/init.d,然后创建一个叫做 /etc/rc3.d/S99mysql.server的符号连接。

  • 如果段时间大量的进程连接到 mysqld,您应该可以在 MySQL 日志中看到报错:

    Error in accept: Protocol error
    

    解决此问题的方法之一:尝试使用 --back_log=50 选项启动服务器。

  • 使用 coreadm 命令可以在Solaris配置核心文件,考虑到在 setuid() 应用程序中生成内核的安全影响,所以,在默认情况下,Solaris不支持 setuid() 程序的内核文件。但是,可以通过使用 coreadm修改。如果您为当前用户启用了 setuid()内核文件,那么它们将是以600模式生成。并且拥有者是超级用户。

2.6.1 使用Solaris PKG安装MySQL

可以使用 Solaris PKG格式的本地二进制包来替代tar格式的二进制包在 Solaris上安装MySQL。

重要

安装包依赖于Oracle Developer Studio 12.5 运行库,所以在运行MySQL安装包之前,必须先安装这个库。可以从 这里下载。当然可以只安装所需要的库,不必安装整个Oracle Developer Studio;参阅这里的说明 在Oracle Solaris 11上安装所需的运行库

下载合适的 mysql-VERSION-solaris11-PLATFORM.pkg.gz包,然后解压,例如:

shell> gunzip mysql-8.0.3-solaris11-x86_64.pkg.gz

安装新的包,使用pkgadd,并按照下面显示的提示符。提醒一下,这里的操作需要root权限来执行。

shell> pkgadd -d mysql-8.0.3-solaris11-x86_64.pkg

The following packages are available:
  1  mysql     MySQL Community Server (GPL)
               (i86pc) 8.0.3

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:

The PKG 安装助手会安装所有的文件和需要的工具,然后初始化数据库。同时,为了完成整个安装,在安装的结尾需要您为MySQL的root账户设置密码,还有就是,在安装的时候,您可以附带的运行 mysql_secure_installation脚本。

默认情况下,PKG 包安装的MySQL,位于 /opt/mysql根目录下。并且,当使用pkgadd时,您只能修改安装的根目录。pkgadd是用于将MySQL安装到Solaris不同的区域。如果您要安装到一个指定的目录下,可以使用发行版中的tar格式的二进制包。

pkg安装助手会将合适的启动脚本复制为 /etc/init.d/mysql。为了MySQL可以自动启动和关闭,您应该给这个文件和初始脚本目录之间创建一个链接, 举个例子,为了确保MySQL可以安全的启动和关闭,您可以使用下面命令,来添加右连接:

shell> ln /etc/init.d/mysql /etc/rc3.d/S91mysql
shell> ln /etc/init.d/mysql /etc/rc0.d/K02mysql

移除MySQL, 安装包名叫做 mysql. 可以和 pkgrm命令一起使用来移除已安装的MySQL。

升级使用Solaris包格式安装的MySQL,您必须在升级之前,移除已经存在的。移除,只需要移除服务文件,二进制文件和支持文件。不需要删除数据文件。因此,最典型的升级步骤是:

shell> mysqladmin shutdown
shell> pkgrm mysql
shell> pkgadd -d mysql-8.0.3-solaris11-x86_64.pkg
shell> mysqld_safe &
shell> mysql_upgrade

在执行任何升级之前,您应该查看 2.10, “升级和降级 MySQL”中的注意事项。

2.7 在FreeBSD上安装MySQL

本节提供关于在FreeBSD Linux上安装MySQL的信息。

使用由Oracle提供的二进制发行版在FreeBSD安装MySQL的信息,请参阅 2.2 节, “在Unix/Linux上使用通用二进制文件安装MySQL”

安装MySQL的最简单(也是首选)方法是使用 mysql-servermysql-client 端口,这些端口可以在http://www.freebsd.org/上使用。使用这些端口会给您带来以下好处:

  • 在您使用的FreeBSD上启用MySQL所有已知的优化。

  • 自动配置和构建

  • 启动脚本安装在 /usr/local/etc/rc.d

  • 使用pkg_info -L 查看安装了那些文件。

  • 使用pkg_delete 可以永久从设备上移除MySQL。

MySQL构建过程中需要GNU make (gmake) 才能进行,所以,如果您的GNU make 不可用,您必须在编译MySQL之前安装好它。

使用端口系统进行安装:

# cd /usr/ports/databases/mysql80-server
# make
...
# cd /usr/ports/databases/mysql80-client
# make
...

标准的端口安装,会将服务器安装到 /usr/local/libexec/mysqld,MySQL服务器的启动脚本位于 /usr/local/etc/rc.d/mysql-server.

在 BSD上实现的其他功能的说明:

  • 使用端口系统删除安装的MySQL:

    # cd /usr/ports/databases/mysql80-server
    # make deinstall
    ...
    # cd /usr/ports/databases/mysql80-client
    # make deinstall
    ...
    
  • 如果你对MySQL的当前日期有问题,设置 TZ 变量应该会有用。参阅 4.9 节, “MySQL环境变量”

2.8 源码安装MySQL

使用源码构建MySQL,使得您可以自定义构建参数、优化编译以及自定义安装位置。查看MySQL已知的运行平台 http://www.mysql.com/support/supportedplatforms/database.html.

在开始源码编译安装之前,检查Oracle是否有与您想要安装平台对应的,发行版的预编译的二进制安装包。并且,是否合适您的平台。我们花费了很大的努力,来确保我们的二进制文件能构建最好的性能,以便成为选好的选择。对于使用发行版二进制文件安装的说明,可以在这里获得  2.2 节, “在Unix/Linux上使用发行版二进制文件安装MySQL”

警告

使用非标准选项构建MySQL可能会导致功能、性能和安全性下降。

MySQL的源代码中含有使用Doxygen写的内置文档。可以在http://dev.mysql.com/doc/dev/mysql-server/latest/获得生产版本中的Doxygen目录 。 同样,也可以在使用源码安装MySQL时,生产本地的Doxygen目录。详情参阅:  2.8.7 节, “生成 MySQL Doxygen文档目录”

源码安装方式

有两种方式进行源码安装MySQL:

  • 使用标准的MySQL源码安装。获取标准源码安装包,参见2.1.2节, “如何获得MySQL”。对于使用标准源码构建安装的说明,参阅 2.8.2节, “使用标准发行的源码包安装MySQL”

    标准发行版有,压缩的 tar 文件格式,Zip格式和RPM包。发行文件的命名格式是 mysql-VERSION.tar.gz, mysql-VERSION.zip, 或 mysql-VERSION.rpm, 其中 VERSION 是一个数字变化,如 8.0.3。发行版的源码包是通用的,它不区分平台,而发行版二进制包是区分平台的,它会显示平台名称和类型。(例如, pc-linux-i686winx64).

  • 使用MySQL的一个分支开发版。对于使用从分支版构建安装的信息,参阅 2.8.3 节, “使用开发版源码安装MySQL”

源码安装的系统要求

使用源代码安装MySQL需要几个开发工具。其中的某些工具,不管是使用标准源码,还是开发版源码都需要。而有些工具,则是根据您使用的安装方式。

不管是使用那种源码安装方式安装MySQL,都必须满足下面的系统要求:

  • CMake, 用于在任何平台上构建框架。下载位置:http://www.cmake.org

  • make 一个好用的程序。尽管有些平台使用自带的 make ,但是我们推荐您使用GNU make 3.75 或更高版本。有可能它已经作为 gmake在您的系统上, GNU make可以从这里获得 http://www.gnu.org/software/make/.

  • MySQL 8.0 源代码许可使用C++11特性。为了能被所有平台上支持,需要一个级别合适的C++11。下面是最低的编译器版本要求:

    • GCC: 4.8 或更高版本

    • Clang: 3.4 或更高版本 (在 macOS上,Xcode 7)

    • Solaris Studio: 12.4 或更高版本 (仅Solaris客户端构建)

    • Visual Studio: 2015

    • CMake: 在Windows系统上,所需的Visual Studio版本要求需要根据CMake3.2.3 或更高版本的显示结果。

  • 构建MySQL需要Boost C++ 库(但是不是用它)。所以必须安装合适版本的Boost,可以访问 the official site获得Boost,安装好它后,只需要在调用CMake时,使用 WITH_BOOST 选项,来告诉系统它的所在位置即可。例如:

    shell> cmake . -DWITH_BOOST=/usr/local/boost_1_60_0
    

    根据您的安装,调整必要的路径。

  • 需要足够的空闲内存。如果在编译源码文件时,您遇到类似 internal compiler error的问题。很有可能就是您的内存太小了,如果是在一个虚拟机上,尝试增加虚拟机的内存。

  • 如果您打算运行一些测试脚本,那么Perl就是必须的。大部分的Unix-like系统已经自带了Perl。在Windows系统上,您可以使用类似ActiveState Perl的版本。

使用标准发行版源码安装MySQL,必须使用下列工具之一,来打开安装包文件。

  • 对于一个 .tar.gz 压缩的 tar 文件: GNU gunzip解压包,和 tar 打开包。如果您的 tar 程序支持z选项,它可以同时解压缩和打开文件。

    GNU tar是众所周知的, 有些操作系统提供的tar不能打开拥有长文件名的MySQL安装包。这个时候,您需要下载并安装 GNUtar,如果可以的话,可以使用已经安装好的GNU tar。通常情况下是 gnutar, gtar, 或是GNU的 tar ,或是开源软件目录,如/usr/sfw/bin/usr/local/bin。可以从 http://www.gnu.org/software/tar/获得GNU tar

  • 对于一个.zip Zip 存档文件: WinZip 或其它可以读 .zip 文件的工具。

  • 对于一个.rpm RPM 包: 使用 rpmbuild来构建和打开它。

使用开发版源码安装MySQL,需要以下附加工具:

  • 获得开发版的源代码需要Git版本控制系统。GitHub Help帮助提供指令下载和安装Git在不同的平台上。在2014年9月,MySQL正式加入GitHub。对MySQL的迁移到GitHub的更多信息,请参考MySQL版本工程博客上公告: MySQL on GitHub

  • bison 2.1 或更高版本。从 http://www.gnu.org/software/bison/获取(不再支持1版本)。 尽可能的使用最新版本的bison;如果遇见问题,请将其进行升级,而不是降级。

    bison 可以从 http://www.gnu.org/software/bison/获取。对于Windows平台上的 bison 可以从 http://gnuwin32.sourceforge.net/packages/bison.htm下载。 下载具有Complete package, excluding sources标签的包。在Windows上,默认的bison安装路径是C:\Program Files\GnuWin32 。因为目录中有空格的原因,可能有些工具找不到bison。而且,Visual Studio可能会因为路径中有空格而卡住。 解决办法就是,将其安装到一个不含有空格的目录下,如: C:\GnuWin32

  • Solaris 表示,除了bison,还必须安装m4。可以从 http://www.gnu.org/software/m4/获取m4

提醒

在任何平台上安装,都需要将安装程序所在的路径添加到环境变量 PATH中。参阅 4.2.10, “设置环境变量”

假如遇见问题,并且需要提交bug报告,请使用 1.7节, “如何提交Bug和错误”中的说明

2.8.1 MySQL源码安装布局

默认情况下,源码编译后,再安装MySQL,文件将安装在 /usr/local/mysql下。目录结构和使用二进制包方式安装的一样。如想使用非默认位置安装,参阅 2.8.4 节, “MySQL 源码配置选项”

2.8.2 标准源码安装MySQL

标准源码安装MySQL:

  1. 验证您的系统,确认  2.8 节, “源码安装MySQL”中列举的工具都满足。

  2. 使用 2.1.2 节, “如何获得MySQL”中的说明来获取安装包文件。

  3. 使用本节中的说明,配置、构建,并安装安装包。

  4. 使用2.9 节, “安装后的设置和测试”中的说明,来执行安装后的步骤。

在MySQL 8.0, CMake 被用于在所有平台上构建框架。这里的说明应该对您的安装有用,对于 使用CMake构建MySQL的额外信息,参阅 使用CMake如果构建MySQL服务器

如果您使用的是RPM, 使用下面给出的命令进行安装,如果没有 rpmbuild, 那么使用rpm 代替。

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

上面的结果是需要您额外的安装一个或多个RPM包,参阅 2.5.4 节, “在Linux平台使用RPM包安装MySQL”

下面的步骤是使用 tar文件或Zip文件的源码安装,这个跟使用二进制类似。除了这个是可以在所有平台上执行,包括编译和配置步骤。下面在Unix上以使用压缩的 tar 源码文件安装包,基本的安装命令顺序像这样:

# 前期配置
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
# 开始源码构建安装
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> mkdir bld
shell> cd bld
shell> cmake ..
shell> make
shell> make install
#源码构建安装结束
# 安装后的设置
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# 下面的是优化命令
shell> cp support-files/mysql.server /etc/init.d/mysql.server

下面是详版的源码构建安装:

提示

流程中没有给MySQL账户设置任何密码。此流程结束后,请继续转到 2.9 节, “安装后的设置和测试”

执行前期配置步骤

在Unix系统上,建立mysql 用户和组,用于后面运行和执行MySQL服务器,并且有自己的数据目录。详细参阅 2.2 节, “在Unix/Linux使用二进制文件安装MySQL”中介绍的 创建一个名为 mysql 的系统用户和组。然后,没有特殊提示,下面步骤都是用mysql 用户执行。

获取和打开安装包

选择需要将安装包打开到的目录,然后切换到该目录下。

获取安装包可以使用这里的说明 2.1.2节, “如何获得MySQL”

将安装包打开到当前目录:

  • 打开压缩的tar 文件,如果 tar支持z选项,就可以同时解压和打开安装包:

    shell> tar zxvf mysql-VERSION.tar.gz
    

    如果您的tar不支持 z选项,那么使用 gunzip解压,用 tar 打开:

    shell> gunzip < mysql-VERSION.tar.gz | tar xvf -
    

    还有一种方法,使用 CMake能解压打开安装包:

    shell> cmake -E tar zxvf mysql-VERSION.tar.gz
    
  • 对于解压Zip格式的文件,使用WinZip 或其它可以读取 .zip 格式文件的工具。

安装包解压后会创建一个名为 mysql-VERSION的目录。

安装包配置

切换位置到解压后的安装包目录下:

shell> cd mysql-VERSION

在安装包外面构建,以便保持目录结构清晰。如果当前所在的目录是mysql-src,那么可以在同级目录,创建一个bld目录。下面命令是,创建目录,然后切换到那里:

shell> mkdir bld
shell> cd bld

配置这个目录,最简单的就是不带任何选项,使用默认的配置覆盖:

shell> cmake ../mysql-src

创建目录不一定非要在安装外面。举个例子,在安装包中创建目录bld,切换当前目录到mysql-src,然后创建目录 bld,然后进去该目录:

shell> mkdir bld
shell> cd bld

配置这个目录,最简单的就是不带任何选项,使用默认的配置覆盖:

shell> cmake ..

如果有多个源码包在同级目录(如,安装多个版本的MySQL),那么第种策略就非常有用。第一种策略是将所有的安装包放在同级目录,那么每个包名都需要是唯一的。而第二种策略,可以使用相同的命令。下面的说明是假设使用的第二种策略。

在Windows系统上,需要指定指定开发环境。例如,下面的命令是不同32位和64位配置构建MySQL。分别是:

shell> cmake .. -G "Visual Studio 12 2013"
shell> cmake .. -G "Visual Studio 12 2013 Win64"

在macOS系统上, 使用Xcode IDE:

shell> cmake .. -G Xcode

当运行cmake时,您可能想在命令行上添加一些选项。这里有一些示例:

更多的选项,参阅 2.8.4节, “MySQL 源码配置选项”

使用下面命令之一,可以列出配置选项:

shell> cmake .. -L   # 概述
shell> cmake .. -LH  # 帮助文本概述
shell> cmake .. -LAH # 辅助文本
shell> ccmake ..     # 交互显示

如果CMake失败了,那么你可能需要使用不同的选项重新配置,再次运行。如果重新配置,请注意下面的提示:

  • 如果之前就已经运行过CMake那么可能就使用了之前的信息,这些信息都保存在CMakeCache.txt中,当 CMake启动时,它会查找是否存在CMakeCache.txt,如果存在则读取里面的内容。假设当前存在这些信息,那么当你重新配置后,这些采集的信息就无效了。

  • 每次运行CMake,都必须先再次运行 make进行重编译。而,由于使用了不同的配置选项,所以需要先移除上一次构建的对象文件。

为了防止使用旧的对象文件或之前使用的配置信息,在Unix系统上,再次运行 CMake之前,在编译目录下运行下面的命令:

shell> make clean
shell> rm CMakeCache.txt

在 Windows上:

shell> devenv MySQL.sln /clean
shell> del CMakeCache.txt

如果您准备向MySQL 邮件列表发送邮件,咨询配置帮助,请先检查CMakeFiles目录中的文件,以获得关于失败的有用信息。

编译安装包

在Unix上:

shell> make
shell> make VERBOSE=1

第二个命令是设置VERBOSE来显示编译源码的每个命令。

在使用GNU make的系统中使用gmake,它已经被安装为gmake

在Windows上:

shell> devenv MySQL.sln /build RelWithDebInfo

如果你已经到了编译阶段,但没有构建安装包 If you have gotten to the compilation stage, but the distribution 参阅2.8.5节, “Dealing with Problems Compiling MySQL”可以获得帮助,如果问题还是没有解决,请将其提交到我们的bug库,相关说明参阅 1.7节, “如何提交Bug或问题报告”。如果您已经安装了所需工具的最新版本,而它们在处理配置文件时崩溃了,请同样将其放在报告中。然而,如果在使用这些必须的工具时,得到一个 command not found错误,或是类似的问题,那么就不用报告了,相反,您应该先确保所有必须的工具已被安装,而且变量 PATH的设置是正确的,以至于可以被系统上的shell找到。

安装

在Unix上:

shell> make install

这里就将文件安装到配置的目录下(默认, /usr/local/mysql)。您可能需要以root来运行此命令。

要安装到指定的目录,可以在命令行添加 DESTDIR参数:

shell> make install DESTDIR="/opt/mysql"

又或者,将安装包文件生成到你想要安装的目录:

shell> make package

这个操作会产生一个或个多.tar.gz文件,可以像使用二进制安装包安装MySQL一样使用它们 参阅2.2节, “在Unix/Linux上使用二进制文件安装MySQL”。如果运行 CMake时,使用 -DCPACK_MONOLITHIC_INSTALL=1,那么会产生单个文件,不然,会产生多个文件。

在Windows上,生成数据目录,然后创建一个.zip格式的安装包:

shell> devenv MySQL.sln /build RelWithDebInfo /project initial_database
shell> devenv MySQL.sln /build RelWithDebInfo /project package

您可以将结果生成的.zip文件安装到你想要的位置。参阅 2.3.5 节, “在Microsoft Windows上使用免安装版Zip文件安装MySQL”

执行安装后的设置

安装过程的其余部分包含了建立配置文件,创建核心库,以及启动MySQL服务器。相关说明,参阅 2.9 节, “安装后的设置和测试”

提示

MySQL权限表中显示的内置账户是没有密码的,所以启动服务器后,应该给这些账户设置密码。相关说明,参阅 2.9 节, “安装后的设置和测试”

2.8.3 开发版源码安装MySQL

本节描述的是如何使用最新的开发版源码安装MySQL。源码文件托管在 GitHub上,可以从其获得,并建立自己本地的MySQL Git 资源库。

GitHub,在 MySQL页面可以看到MySQL服务器和其它MySQL项目。MySQL服务器项目是单独的资源库,包含几个MySQL系列的分支。

开发版源码安装的先决条件

想要使用开发版源码安装MySQL,您的系统必须满足  2.8 节, “源码安装MySQL”中锁列举的需求工具。

建立MySQL Git资源库

要在您的机器上建立一个MySQL Git资源库,使用下面步骤:

  1. 将MySQL Git资源库克隆到您的机器。下面的命令是将MySQL Git资源库克隆到一个名为mysql-server的目录。初次下载需要一些时间完成,主要取决于您的网速。

    ~$ git clone https://github.com/mysql/mysql-server.git
    Cloning into 'mysql-server'...
    remote: Counting objects: 1198513, done.
    remote: Total 1198513 (delta 0), reused 0 (delta 0), pack-reused 1198513
    Receiving objects: 100% (1198513/1198513), 1.01 GiB | 7.44 MiB/s, done.
    Resolving deltas: 100% (993200/993200), done.
    Checking connectivity... done.
    Checking out files: 100% (25510/25510), done.
  2. W当克隆完成,您本地的MySQL Git资源库显示的内容应该与下面的类似:

    ~$ cd mysql-server
    ~/mysql-server$ ls
    BUILD                cmd-line-utils       libservices          sql
    CMakeLists.txt       config.h.cmake       man                  sql-common
    COPYING              configure.cmake      mysql-test           storage
    Docs                 dbug                 mysys                strings
    Doxyfile-perfschema  extra                mysys_ssl            support-files
    INSTALL              include              packaging            testclients
    README               libbinlogevents      plugin               unittest
    VERSION              libbinlogstandalone  rapid                vio
    client               libevent             regex                win
    cmake                libmysql             scripts              zlib
    
  3. 使用git branch -r查看MySQL资源库的分支情况。

    ~/mysql-server$ git branch -r
      origin/5.5
      origin/5.6
      origin/5.7
      origin/8.0
      origin/HEAD -> origin/5.7
      origin/cluster-7.2
      origin/cluster-7.3
      origin/cluster-7.4
      origin/cluster-7.5
  4. 查看您本地资源库的分支情况,使用git branch命令。当克隆MySQL Git资源库时,MySQL 5.7分支会被自动的检查出来,*号表示活跃的分支。

    ~/mysql-server$ git branch
    * 5.7
  5. 运行git checkout 命令可以查看不同的MySQL分支。对于指定的分支名,举个例子, 检查MySQL 8.0分支:

    ~/mysql-server$ git checkout 8.0
    Checking out files: 100% (9600/9600), done.
    Branch 8.0 set up to track remote branch 8.0 from origin.
    Switched to a new branch '8.0'
  6. 运行git branch来验证MySQL 8.0分支是当前的。MySQL 8.0是目前检查出的最新分支,被*号标记,以显示为活跃分支。

    ~/mysql-server$ git branch
      5.7
    * 8.0
  7. 使用 git checkout 命令在分支间进行切换。如:

    ~/mysql-server$ git checkout 5.7
  8. 想要获取您的MySQL Git资源库初始设置之后的改变,切换到您要想要更新的分支,然后执行命令git pull,如:

    ~/mysql-server$ git checkout 8.0
    ~/mysql-server$ git pull
    

    查看提交的历史记录,使用git log选项:

    ~/mysql-server$ git log
    

    当然还可以在 GitHub MySQL 站点查看提交历史和源代码。

    如果您对其中的变化或代码有疑问,可以邮件给MySQL internals 邮件列表。补丁贡献的信息,参阅 对MySQL的贡献

  9. 克隆完MySQL Git资源库后,确定想要构建的分支,然后就可以从源码建立MySQL服务器。在 2.8.2节, “使用标准源码安装包安装MySQL”中提供了相关说明。除了您想跳过安装包某些部分的获取或移除。

    生产环境上谨慎使用开发版源码建立MySQL服务器。安装命令可能会覆盖掉您当前使用的版本。如果系统上已经安装有MySQL,同时又不想覆盖掉原来的。可以在运行 CMake时,使用的 CMAKE_INSTALL_PREFIX, MYSQL_TCP_PORT, 和 MYSQL_UNIX_ADDR 选项的值应该与当前正在使用的值不同。关于防止多个服务器相互干扰的额外信息,请参阅 5.7节, “一台机器运行多个MySQL实例”

    尽可能的使用您刚安装的MySQL。如,可以尝试将某些新功能弄崩溃。使用make test启动。更多信息,参阅28.1.2 节, “MySQL 测试套件”

2.8.4 MySQL 源码安装配置选项

CMake程序在如何配置一个MySQL源码安装包上提供了很多控制,通常情况下,是在 CMake命令行上作为选项提供。关于 options supported by CMake支持的选项,在源码安装包中,可以运行下列命令之一:

shell> cmake . -LH
shell> ccmake .

还可以使用特定的环境变量影响CMake,参阅 4.9 节, “MySQL 程序环境变量”

下表显示CMake可支持的选项。在默认 列,PREFIX表示 CMAKE_INSTALL_PREFIX 选项的值,用于指定安装的基础目录。这个值是一些安装子目录的父目录。

表 2.12 MySQL 源码配置选项参考 (CMake)

格式描述默认介绍已移除
BUILD_CONFIG 选项和官方介绍的一样   
CMAKE_BUILD_TYPE构建程序类型RelWithDebInfo  
CMAKE_CXX_FLAGS C++ 编译器标识   
CMAKE_C_FLAGSC 编译器标识   
CMAKE_INSTALL_PREFIX安装的基础目录/usr/local/mysql  
COMPILATION_COMMENT编译环境注释   
CPACK_MONOLITHIC_INSTALL是否将构建程序打包为单个文件OFF  
DEFAULT_CHARSET服务器默认字符集latin1  
DEFAULT_COLLATION服务器默认连接latin1_swedish_ci  
DISABLE_PSI_COND排除Performance Schema 条件检测OFF  
DISABLE_PSI_FILE排除 Performance Schema 文件校验OFF  
DISABLE_PSI_IDLE排除 Performance Schema 空闲校验OFF  
DISABLE_PSI_MEMORY排除Performance Schema 内存检测OFF  
DISABLE_PSI_METADATA排除Performance Schema元数据检测OFF  
DISABLE_PSI_MUTEX排除 Performance Schema 互斥检测OFF  
DISABLE_PSI_RWLOCK排除 Performance Schema 读写锁检测OFF  
DISABLE_PSI_SOCKET排除 Performance Schema 套接检测OFF  
DISABLE_PSI_SP排除 Performance Schema 存储程序检测OFF  
DISABLE_PSI_STAGE排除 Performance Schema 存储检测OFF  
DISABLE_PSI_STATEMENT排除 Performance Schema 声明检测OFF  
DISABLE_PSI_STATEMENT_DIGEST排除 Performance Schema 声明摘要检测OFF  
DISABLE_PSI_TABLE排除 Performance Schema 表检测OFF  
DISABLE_SHARED不要构建共享库,位置相关代码OFF  
DOWNLOAD_BOOST是否下载BoostOFF  
DOWNLOAD_BOOST_TIMEOUT下载Boost库的超时时间600  
ENABLED_LOCAL_INFILE是否为LOAD DATA INFILE启动LOCALOFF  
ENABLED_PROFILING是否启用查询分析代码ON  
ENABLE_DEBUG_SYNC是否启用Debug Sync 支持ON 8.0.1
ENABLE_DOWNLOADS是否下载选项文件OFF  
ENABLE_DTRACE是否包含DTrace支持  8.0.1
ENABLE_GCOV是否包含gcov 支持   
ENABLE_GPROFEnable gprof (optimized Linux builds only)OFF  
FORCE_UNSUPPORTED_COMPILERWhether to permit unsupported compilerOFF  
IGNORE_AIO_CHECKWith -DBUILD_CONFIG=mysql_release, ignore libaio checkOFF  
INSTALL_BINDIRUser executables directoryPREFIX/bin  
INSTALL_DOCDIRDocumentation directoryPREFIX/docs  
INSTALL_DOCREADMEDIRREADME file directoryPREFIX  
INSTALL_INCLUDEDIRHeader file directoryPREFIX/include  
INSTALL_INFODIRInfo file directoryPREFIX/docs  
INSTALL_LAYOUTSelect predefined installation layoutSTANDALONE  
INSTALL_LIBDIRLibrary file directoryPREFIX/lib  
INSTALL_MANDIRManual page directoryPREFIX/man  
INSTALL_MYSQLKEYRINGDIRDirectory for keyring_file plugin data fileplatform specific  
INSTALL_MYSQLSHAREDIRShared data directoryPREFIX/share  
INSTALL_MYSQLTESTDIRmysql-test directoryPREFIX/mysql-test  
INSTALL_PKGCONFIGDIRDirectory for mysqlclient.pc pkg-config fileINSTALL_LIBDIR/pkgconfig  
INSTALL_PLUGINDIRPlugin directoryPREFIX/lib/plugin  
INSTALL_SBINDIRServer executable directoryPREFIX/bin  
INSTALL_SECURE_FILE_PRIVDIRsecure_file_priv default valueplatform specific  
INSTALL_SHAREDIRaclocal/mysql.m4 installation directoryPREFIX/share  
INSTALL_STATIC_LIBRARIESWhether to install static librariesON  
INSTALL_SUPPORTFILESDIRExtra support files directoryPREFIX/support-files  
LINK_RANDOMIZEWhether to randomize order of symbols in mysqld binaryOFF8.0.1 
LINK_RANDOMIZE_SEEDSeed value for LINK_RANDOMIZE optionmysql8.0.1 
MAX_INDEXESMaximum indexes per table64  
MUTEX_TYPEInnoDB mutex typeevent  
MYSQLX_TCP_PORTTCP/IP port number used by X Plugin33060  
MYSQLX_UNIX_ADDRUnix socket file used by X Plugin/tmp/mysqlx.sock  
MYSQL_DATADIRData directory   
MYSQL_MAINTAINER_MODEWhether to enable MySQL maintainer-specific development environmentOFF  
MYSQL_PROJECT_NAMEWindows/OS X project nameMySQL  
MYSQL_TCP_PORTTCP/IP port number3306  
MYSQL_UNIX_ADDRUnix socket file/tmp/mysql.sock  
ODBC_INCLUDESODBC includes directory   
ODBC_LIB_DIRODBC library directory   
OPTIMIZER_TRACEWhether to support optimizer tracing   
SYSCONFDIROption file directory   
SYSTEMD_PID_DIRDirectory for PID file under systemd/var/run/mysqld  
SYSTEMD_SERVICE_NAMEName of MySQL service under systemdmysqld  
TMPDIRtmpdir default value   
USE_LD_GOLDWhether to use GNU gold loaderON8.0.0 
WIN_DEBUG_NO_INLINEWhether to disable function inliningOFF  
WITHOUT_SERVERDo not build the serverOFF  
WITHOUT_xxx_STORAGE_ENGINEExclude storage engine xxx from build   
WITH_ASANEnable AddressSanitizerOFF  
WITH_AUTHENTICATION_LDAPWhether to report error if LDAP authentication plugins cannot be builtOFF8.0.2 
WITH_AUTHENTICATION_PAMBuild PAM authentication pluginOFF  
WITH_BOOSTThe location of the Boost library sources   
WITH_CLIENT_PROTOCOL_TRACINGBuild client-side protocol tracing frameworkON  
WITH_DEBUGWhether to include debugging supportOFF  
WITH_DEFAULT_COMPILER_OPTIONSWhether to use default compiler optionsON  
WITH_DEFAULT_FEATURE_SETWhether to use default feature setON  
WITH_EDITLINEWhich libedit/editline library to usebundled  
WITH_INNODB_EXTRA_DEBUGWhether to include extra debugging support for InnoDB.OFF  
WITH_INNODB_MEMCACHEDWhether to generate memcached shared libraries.OFF  
WITH_KEYRING_TESTBuild the keyring test programOFF  
WITH_LIBEVENTWhich libevent library to usebundled  
WITH_LIBWRAPWhether to include libwrap (TCP wrappers) supportOFF  
WITH_LZ4Type of LZ4 supportbundled  
WITH_MECABCompiles MeCab   
WITH_MSANEnable MemorySanitizerOFF  
WITH_MSCRT_DEBUGEnable Visual Studio CRT memory leak tracingOFF  
WITH_NUMASet NUMA memory allocation policy   
WITH_PROTOBUFWhich Protocol Buffers package to usebundled  
WITH_RAPIDWhether to build rapid development cycle pluginsON  
WITH_SSLType of SSL supportbundled  
WITH_SYSTEMDEnable installation of systemd support filesOFF  
WITH_TEST_TRACE_PLUGINBuild test protocol trace pluginOFF  
WITH_TSANEnable ThreadSanitizerOFF  
WITH_UBSAN启动未定义行为清理助手OFF  
WITH_UNIT_TESTS使用单元测试编译 MySQL ON  
WITH_UNIXODBC启用unixODBCOFF  
WITH_VALGRIND是否在Valgrind头文件中编译OFF  
WITH_ZLIB支持的zlib类型bundled  
WITH_xxx_STORAGE_ENGINE静态的将存储引擎XXX编译到服务器中   

下面将提供更多 CMake选项的信息。

对于布尔类型选项,值可能规定1或 ON表示开启这个选项,而0或 OFF测试禁用这个选项。

很多选项会在编译时配置默认选项,但是这些选项可以被服务器启动时重新设置的值覆盖。如 CMAKE_INSTALL_PREFIX, MYSQL_TCP_PORT, 和 MYSQL_UNIX_ADDR选项配置默认的安装基础目录、TCP/IP 端口号和套接文件,而它们可以在服务器启动时,通过给mysqld加上 with the --basedir, --port, 和 --socket 选项就可以被改变。当然这些改变后值都应该是可用的。

一般选项

  • -DBUILD_CONFIG=mysql_release

    Oracle也是用此选项来构建官方版二进制发行版的MySQL。

  • -DCMAKE_BUILD_TYPE=type

    构建类型:

    • RelWithDebInfo:启用优化并生成调试信息。这是默认的MySQL构建类型。

    • Debug: 禁用优化并生成调试信息。如果WITH_DEBUG 启用该选项,也会使用此构建类型。也就是说 WITH_DEBUG选项是启用,该选项还是有效,也就是说, -DWITH_DEBUG=1-DCMAKE_BUILD_TYPE=Debug具有相同的效果。

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此选项影响make package操作是产生多个安装包文件,还是单个文件包。如果禁用,那么就是产生多个安装包文件,如果您只想安装MySQL的部分,那么这个选项会很有用。相反,禁用它,就会生成一个安装包文件。

安装布局选项

选项CMAKE_INSTALL_PREFIX 标识基础安装目录,其它如 INSTALL_xxx的选项,是标识相关组件的安装位置,他们的值是相对路径,并且不能有前缀。

  • -DCMAKE_INSTALL_PREFIX=dir_name

    基础目录。

    可以在服务器启动时使用 --basedir 选项设置。

  • -DINSTALL_BINDIR=dir_name

    在哪里用户程序。

  • -DINSTALL_DOCDIR=dir_name

    在哪里安装文档。

  • -DINSTALL_DOCREADMEDIR=dir_name

    哪里安装README 文件。

  • -DINSTALL_INCLUDEDIR=dir_name

    哪里安装头文件。

  • -DINSTALL_INFODIR=dir_name

    哪里安装信息文件。

  • -DINSTALL_LAYOUT=name

    选择一个预定义的安装布局:

    • STANDALONE:默认的,跟 .tar.gz.zip包的布局一样。

    • RPM:和 RPM 包的布局一样。

    • SVR4: Solaris包布局。

    • DEB: DEB 包布局 (实验)。

    选择预定义安装布局,可以通过修改其它选项来修改单个组件的安装位置。例如:

    shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
    

    INSTALL_LAYOUT的值决定了系统变量 secure_file_privkeyring_file_data的值。参阅  5.1.5节, “服务器系统变量”

  • -DINSTALL_LIBDIR=dir_name

    在哪里安装库文件。

  • -DINSTALL_MANDIR=dir_name

    在哪里安装手册。

  • -DINSTALL_MYSQLKEYRINGDIR=dir_path

    默认是使用 keyring_file 插件数据文件的位置。默认值特定于于平台,并取决于CMake选项中 INSTALL_LAYOUT的值。 参阅 5.1.5节, “服务器系统变量”中对 keyring_file_data系统变量的描述。

  • -DINSTALL_MYSQLSHAREDIR=dir_name

    在哪里安装共享数据文件,

  • -DINSTALL_MYSQLTESTDIR=dir_name

    哪里安装mysql-test目录,要禁止安装此目录,将 (-DINSTALL_MYSQLTESTDIR=)选项值置为空。

  • -DINSTALL_PKGCONFIGDIR=dir_name

    在哪里安装用于 pkg-configmysqlclient.pc 文件。默认值是 INSTALL_LIBDIR/pkgconfig, 除非 INSTALL_LIBDIR后面是 /mysql,这种情况下先被移除。

  • -DINSTALL_PLUGINDIR=dir_name

    安装插件的目录。

    这个的值可以在服务器启动时,通 --plugin_dir选项来设置。

  • -DINSTALL_SBINDIR=dir_name

    在哪里安装mysqld 服务。

  • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

    The default value for the secure_file_priv 系统标量的默认值,这个默认值特定于平台,并取决于 CMakeINSTALL_LAYOUT选项的值。详情请参阅  5.1.5节, “服务器系统变量”中,对 secure_file_priv 系统变量的描述。

  • -DINSTALL_SHAREDIR=dir_name

    在哪里安装aclocal/mysql.m4

  • -DINSTALL_STATIC_LIBRARIES=bool

    是否安装静态库,默认是 ON.,如果设置为OFF,下面的库不会被安装: libmysqlclient.a, libmysqlservices.a.

  • -DINSTALL_SUPPORTFILESDIR=dir_name

    在哪里安装额外的支持文件。

  • -DLINK_RANDOMIZE=bool

    是否初始化 mysqld bi二进制文件中发标示符顺序。默认值是 OFF。只有用于调试才会启用这个选项。

  • -DLINK_RANDOMIZE_SEED=val

    LINK_RANDOMIZE 选项的种子值,这个值是个字符串,默认是 mysql,可以随意选择。

  • -DMYSQL_DATADIR=dir_name

    MySQL数据目录的位置。

    这个值可以在服务器启动时,使用 --datadir 选项设置。

  • -DODBC_INCLUDES=dir_name

    The location of the ODBC includes directory, and may be used while configuring Connector/ODBC.

  • -DODBC_LIB_DIR=dir_name

    The location of the ODBC library directory, and may be used while configuring Connector/ODBC.

  • -DSYSCONFDIR=dir_name

    The default my.cnf option file directory.

    This location cannot be set at server startup, but you can start the server with a given option file using the --defaults-file=file_name option, where file_name is the full path name to the file.

  • -DSYSTEMD_PID_DIR=dir_name

    The name of the directory in which to create the PID file when MySQL is managed by systemd. The default is /var/run/mysqld; this might be changed implicitly according to the INSTALL_LAYOUT value.

    This option is ignored unless WITH_SYSTEMD is enabled.

  • -DSYSTEMD_SERVICE_NAME=name

    The name of the MySQL service to use when MySQL is managed by systemd. The default is mysqld; this might be changed implicitly according to the INSTALL_LAYOUT value.

    This option is ignored unless WITH_SYSTEMD is enabled.

  • -DTMPDIR=dir_name

    The default location to use for the tmpdir system variable. If unspecified, the value defaults to P_tmpdir in <stdio.h>.

Storage Engine Options

Storage engines are built as plugins. You can build a plugin as a static module (compiled into the server) or a dynamic module (built as a dynamic library that must be installed into the server using the INSTALL PLUGIN statement or the --plugin-load option before it can be used). Some plugins might not support static or dynamic building.

The InnoDB, MyISAM, MERGE, MEMORY, and CSV engines are mandatory (always compiled into the server) and need not be installed explicitly.

To compile a storage engine statically into the server, use -DWITH_engine_STORAGE_ENGINE=1. Some permissible engine values are ARCHIVE, BLACKHOLE, EXAMPLE, and FEDERATED. Examples:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
Note

It is not possible to compile without Performance Schema support. If it is desired to compile without particular types of instrumentation, that can be done with the following CMake options:

DISABLE_PSI_COND
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION

For example, to compile without mutex instrumentation, configure MySQL using the -DDISABLE_PSI_MUTEX=1 option.

To exclude a storage engine from the build, use -DWITH_engine_STORAGE_ENGINE=0. Examples:

-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0

It is also possible to exclude a storage engine from the build using -DWITHOUT_engine_STORAGE_ENGINE=1 (but -DWITH_engine_STORAGE_ENGINE=0 is preferred). Examples:

-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

If neither -DWITH_engine_STORAGE_ENGINE nor -DWITHOUT_engine_STORAGE_ENGINE are specified for a given storage engine, the engine is built as a shared module, or excluded if it cannot be built as a shared module.

Feature Options

  • -DCOMPILATION_COMMENT=string

    A descriptive comment about the compilation environment.

  • -DDEFAULT_CHARSET=charset_name

    The server character set. By default, MySQL uses the utf8mb4 character set.

    charset_name may be one of binary, armscii8, ascii, big5, cp1250, cp1251, cp1256, cp1257, cp850, cp852, cp866, cp932, dec8, eucjpms, euckr, gb2312, gbk, geostd8, greek, hebrew, hp8, keybcs2, koi8r, koi8u, latin1, latin2, latin5, latin7, macce, macroman, sjis, swe7, tis620, ucs2, ujis, utf8, utf8mb4, utf16, utf16le, utf32. The permissible character sets are listed in the cmake/character_sets.cmake file as the value of CHARSETS_AVAILABLE.

    This value can be set at server startup with the --character_set_server option.

  • -DDEFAULT_COLLATION=collation_name

    The server collation. By default, MySQL uses utf8mb4_0900_ai_ci. Use the SHOW COLLATION statement to determine which collations are available for each character set.

    This value can be set at server startup with the --collation_server option.

  • -DDISABLE_PSI_COND=bool

    Whether to exclude the Performance Schema condition instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_FILE=bool

    Whether to exclude the Performance Schema file instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_IDLE=bool

    Whether to exclude the Performance Schema idle instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_MEMORY=bool

    Whether to exclude the Performance Schema memory instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_METADATA=bool

    Whether to exclude the Performance Schema metadata instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_MUTEX=bool

    Whether to exclude the Performance Schema mutex instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_RWLOCK=bool

    Whether to exclude the Performance Schema rwlock instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_SOCKET=bool

    Whether to exclude the Performance Schema socket instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_SP=bool

    Whether to exclude the Performance Schema stored program instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_STAGE=bool

    Whether to exclude the Performance Schema stage instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_STATEMENT=bool

    Whether to exclude the Performance Schema statement instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    Whether to exclude the Performance Schema statement_digest instrumentation. The default is OFF (include).

  • -DDISABLE_PSI_TABLE=bool

    Whether to exclude the Performance Schema table instrumentation. The default is OFF (include).

  • -DDISABLE_SHARED=bool

    Whether to disable building build shared libraries and compile position-dependent code. The default is OFF (compile position-independent code).

    Enabling this option disables -fPIC, with the consequence that shared libraries are not built, including plugins and components. Invoking CMake produces this warning: Dynamic plugins are disabled.

  • -DDOWNLOAD_BOOST=bool

    Whether to download the Boost library. The default is OFF.

    See the WITH_BOOST option for additional discussion about using Boost.

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

    The timeout in seconds for downloading the Boost library. The default is 600 seconds.

    See the WITH_BOOST option for additional discussion about using Boost.

  • -DENABLE_DEBUG_SYNC=bool

    As of MySQL 8.0.1, ENABLE_DEBUG_SYNC is removed and enabling WITH_DEBUG enables Debug Sync.

  • -DENABLE_DOWNLOADS=bool

    Whether to download optional files. For example, with this option enabled, CMake downloads the Google Test distribution that is used by the test suite to run unit tests.

  • -DENABLE_DTRACE=bool

    Whether to include support for DTrace probes.

    This option was removed in MySQL 8.0.1 because support for DTrace is removed in MySQL 8.1.

  • -DENABLE_GCOV=bool

    Whether to include gcov support (Linux only).

  • -DENABLE_GPROF=bool

    Whether to enable gprof (optimized Linux builds only).

  • -DENABLED_LOCAL_INFILE=bool

    This option controls the compiled-in default LOCAL capability for the MySQL client library. Clients that make no explicit arrangements therefore have LOCAL capability disabled or enabled according to the ENABLED_LOCAL_INFILE setting specified at MySQL build time.

    By default, the client library in MySQL binary distributions is compiled with ENABLED_LOCAL_INFILE disabled. If you compile MySQL from source, configure it with ENABLED_LOCAL_INFILE disabled or enabled based on whether clients that make no explicit arrangements should have LOCAL capability disabled or enabled, respectively.

    ENABLED_LOCAL_INFILE controls the default for client-side LOCAL capability. For the server, the local_infile system variable controls server-side LOCAL capability. To explicitly cause the server to refuse or permit LOAD DATA LOCAL statements (regardless of how client programs and libraries are configured at build time or runtime), start mysqld with local_infile disabled or enabled, respectively. local_infile can also be set at runtime. See  6.1.6节, “Security Issues with LOAD DATA LOCAL”.

  • -DENABLED_PROFILING=bool

    Whether to enable query profiling code (for the SHOW PROFILE and SHOW PROFILES statements).

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    By default, CMake checks for minimum versions of supported compilers: Visual Studio 2015 (Windows); GCC 4.8 or Clang 3.4 (Linux); Developer Studio 12.5 (Solaris server); Developer Studio 12.4 or GCC 4.8 (Solaris client library); Clang 3.6 (macOS), Clang 3.4 (FreeBSD). To disable this check, use -DFORCE_UNSUPPORTED_COMPILER=ON.

  • -DIGNORE_AIO_CHECK=bool

    If the -DBUILD_CONFIG=mysql_release option is given on Linux, the libaio library must be linked in by default. If you do not have libaio or do not want to install it, you can suppress the check for it by specifying -DIGNORE_AIO_CHECK=1.

  • -DMAX_INDEXES=num

    The maximum number of indexes per table. The default is 64. The maximum is 255. Values smaller than 64 are ignored and the default of 64 is used.

  • -DMYSQL_MAINTAINER_MODE=bool

    Whether to enable a MySQL maintainer-specific development environment. If enabled, this option causes compiler warnings to become errors.

  • -DMUTEX_TYPE=type

    The mutex type used by InnoDB. Options include:

    • event: Use event mutexes. This is the default value and the original InnoDB mutex implementation.

    • sys: Use POSIX mutexes on UNIX systems. Use CRITICAL_SECTION onjects on Windows, if available.

    • futex: Use Linux futexes instead of condition variables to schedule waiting threads.

  • -DMYSQLX_TCP_PORT=port_num

    The port number on which X Plugin listens for TCP/IP connections. The default is 33060.

    This value can be set at server startup with the --mysqlx_port option.

  • -DMYSQLX_UNIX_ADDR=file_name

    The Unix socket file path on which the server listens for X Plugin socket connections. This must be an absolute path name. The default is /tmp/mysqlx.sock.

    This value can be set at server startup with the --mysqlx-socket option.

  • -DMYSQL_PROJECT_NAME=name

    For Windows or macOS, the project name to incorporate into the project file name.

  • -DMYSQL_TCP_PORT=port_num

    The port number on which the server listens for TCP/IP connections. The default is 3306.

    This value can be set at server startup with the --port option.

  • -DMYSQL_UNIX_ADDR=file_name

    The Unix socket file path on which the server listens for socket connections. This must be an absolute path name. The default is /tmp/mysql.sock.

    This value can be set at server startup with the --socket option.

  • -DOPTIMIZER_TRACE=bool

    Whether to support optimizer tracing. See MySQL Internals: Tracing the Optimizer.

  • -DUSE_LD_GOLD=bool

    CMake causes the build process to link with the GNU gold linker if it is available. To suppress use of this linker, specify the -DUSE_LD_GOLD=0 option.

  • -DWIN_DEBUG_NO_INLINE=bool

    Whether to disable function inlining on Windows. The default is off (inlining enabled).

  • -DWITH_ASAN=bool

    Whether to enable the AddressSanitizer, for compilers that support it. The default is off.

  • -DWITH_AUTHENTICATION_LDAP=bool

    Whether to report an error if the LDAP authentication plugins cannot be built:

    • If this option is disabled (the default), the LDAP plugins are built if the required header files and libraries are found. If they are not, CMake displays a note about it.

    • If this option is enabled, a failure to find the required header file andlibraries causes CMake to produce an error, preventing the server from being built.

  • -DWITH_AUTHENTICATION_PAM=bool

    Whether to build the PAM authentication plugin, for source trees that include this plugin. (See PAM Pluggable Authentication.) If this option is specified and the plugin cannot be compiled, the build fails.

  • -DWITH_BOOST=path_name

    The Boost library is required to build MySQL. These CMake options enable control over the library source location, and whether to download it automatically:

    • -DWITH_BOOST=path_name specifies the Boost library directory location. It is also possible to specify the Boost location by setting the BOOST_ROOT or WITH_BOOST environment variable.

      -DWITH_BOOST=system is also permitted and indicates that the correct version of Boost is installed on the compilation host in the standard location. In this case, the installed version of Boost is used rather than any version included with a MySQL source distribution.

    • -DDOWNLOAD_BOOST=bool specifies whether to download the Boost source if it is not present in the specified location. The default is OFF.

    • -DDOWNLOAD_BOOST_TIMEOUT=seconds the timeout in seconds for downloading the Boost library. The default is 600 seconds.

    For example, if you normally build MySQL placing the object output in the bld subdirectory of your MySQL source tree, you can build with Boost like this:

    mkdir bld
    cd bld
    cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
    

    This causes Boost to be downloaded into the my_boost directory under your home directory. If the required Boost version is already there, no download is done. If the required Boost version changes, the newer version is downloaded.

    If Boost is already installed locally and your compiler finds the Boost header files on its own, it may not be necessary to specify the preceding CMake options. However, if the version of Boost required by MySQL changes and the locally installed version has not been upgraded, you may have build problems. Using the CMake options should give you a successful build.

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    Whether to build the client-side protocol tracing framework into the client library. By default, this option is enabled.

    For information about writing protocol trace client plugins, see  28.2.4.11节, “Writing Protocol Trace Plugins”.

    See also the WITH_TEST_TRACE_PLUGIN option.

  • -DWITH_DEBUG=bool

    Whether to include debugging support.

    Configuring MySQL with debugging support enables you to use the --debug="d,parser_debug" option when you start the server. This causes the Bison parser that is used to process SQL statements to dump a parser trace to the server's standard error output. Typically, this output is written to the error log.

    Sync debug checking for the InnoDB storage engine is defined under UNIV_DEBUG and is available when debugging support is compiled in using the WITH_DEBUG option. When debugging support is compiled in, the innodb_sync_debug configuration option can be used to enable or disable InnoDB sync debug checking.

    Enabling WITH_DEBUG also enables Debug Sync. This facility is used for testing and debugging. When compiled in, Debug Sync is disabled by default at runtime. To enable it, start mysqld with the --debug-sync-timeout=N option, where N is a timeout value greater than 0. (The default value is 0, which disables Debug Sync.) N becomes the default timeout for individual synchronization points.

    Sync debug checking for the InnoDB storage engine is available when debugging support is compiled in using the WITH_DEBUG option.

    For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization.

  • -DWITH_DEFAULT_FEATURE_SET=bool

    Whether to use the flags from cmake/build_configurations/feature_set.cmake.

  • -DWITH_EDITLINE=value

    Which libedit/editline library to use. The permitted values are bundled (the default) and system.

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    Whether to include extra InnoDB debugging support.

    Enabling WITH_INNODB_EXTRA_DEBUG turns on extra InnoDB debug checks. This option can only be enabled when WITH_DEBUG is enabled.

  • -DWITH_INNODB_MEMCACHED=bool

    Whether to generate memcached shared libraries (libmemcached.so and innodb_engine.so).

  • -DWITH_KEYRING_TEST=bool

    Whether to build the test program that accompanies the keyring_file plugin. The default is OFF. Test file source code is located in the plugin/keyring/keyring-test directory.

  • -DWITH_LIBEVENT=string

    Which libevent library to use. Permitted values are bundled (default), system, and yes. If you specify system or yes, the system libevent library is used if present. If the system library is not found, the bundled libevent library is used. The libevent library is required by InnoDB memcached.

  • -DWITH_LIBWRAP=bool

    Whether to include libwrap (TCP wrappers) support.

  • -DWITH_LZ4=lz4_type

    The WITH_LZ4 indicates the source of zlib support:

    • bundled: Use the lz4 library bundled with the distribution. This is the default.

    • system: Use the system lz4 library. If WITH_LZ4 is set to this value, the lz4_decompress utility is not built. In this case, the system lz4 command can be used instead.

  • -DWITH_MSAN=bool

    Whether to enable MemorySanitizer, for compilers that support it. The default is off.

    For this option to have an effect if enabled, all libraries linked to MySQL must also have been compiled with the option enabled.

  • -DWITH_MECAB={disabled|system|path_name}

    Use this option to compile the MeCab parser. If you have installed MeCab to its default installation directory, set -DWITH_MECAB=system. The system option applies to MeCab installations performed from source or from binaries using a native package management utility. If you installed MeCab to a custom installation directory, specify the path to the MeCab installation. For example, -DWITH_MECAB=/opt/mecab. If the system option does not work, specifying the MeCab installation path should work in all cases.

    For related information, see  12.9.9节, “MeCab Full-Text Parser Plugin”.

  • -DWITH_MSCRT_DEBUG=bool

    Whether to enable Visual Studio CRT memory leak tracing. The default is OFF.

  • -DWITH_NUMA=bool

    Explicitly set the NUMA memory allocation policy. CMake sets the default WITH_NUMA value based on whether the current platform has NUMA support. For platforms without NUMA support, CMake behaves as follows:

    • With no NUMA option (the normal case), CMake continues normally, producing only this warning: NUMA library missing or required version not available

    • With -DWITH_NUMA=ON, CMake aborts with this error: NUMA library missing or required version not available

  • -DWITH_PROTOBUF=protobuf_type

    Which Protocol Buffers package to use. protobuf_type can be one of the following values:

    • bundled: Use the package bundled with the distribution. This is the default.

    • system: Use the package installed on the system.

    Other values are ignored, with a fallback to bundled.

  • -DWITH_RAPID=bool

    Whether to build the rapid development cycle plugins. When enabled, a rapid directory is created in the build tree containing these plugins. When disabled, no rapid directory is created in the build tree. The default is ON, unless the rapid directory is removed from the source tree, in which case the default becomes OFF.

  • -DWITH_SSL={ssl_type|path_name}

    The type of SSL support to include or the path name to the OpenSSL installation to use.

    • ssl_type can be one of the following values:

      • yes: Use the system SSL library if present, else the library bundled with the distribution.

      • bundled: Use the SSL library bundled with the distribution. This is the default.

      • system: Use the system SSL library.

    • path_name is the path name to the OpenSSL installation to use. Using this can be preferable to using the ssl_type value of system, for it can prevent CMake from detecting and using an older or incorrect OpenSSL version installed on the system. (Another permitted way to do the same thing is to set the CMAKE_PREFIX_PATH option to path_name.)

    For information about using SSL support, see  6.4节, “Using Secure Connections”.

  • -DWITH_SYSTEMD=bool

    Whether to enable installation of systemd support files. By default, this option is disabled. When enabled, systemd support files are installed, and scripts such as mysqld_safe and the System V initialization script are not installed. On platforms where systemd is not available, enabling WITH_SYSTEMD results in an error from CMake.

    For more information about using systemd, see  2.5.9节, “Managing MySQL Server with systemd”. That section also includes information about specifying options previously specified in [mysqld_safe] option groups. Because mysqld_safe is not installed when systemd is used, such options must be specified another way.

  • -DWITH_TEST_TRACE_PLUGIN=bool

    Whether to build the test protocol trace client plugin (see  28.2.4.11.1节, “Using the Test Protocol Trace Plugin”). By default, this option is disabled. Enabling this option has no effect unless the WITH_CLIENT_PROTOCOL_TRACING option is enabled. If MySQL is configured with both options enabled, the libmysqlclient client library is built with the test protocol trace plugin built in, and all the standard MySQL clients load the plugin. However, even when the test plugin is enabled, it has no effect by default. Control over the plugin is afforded using environment variables; see  28.2.4.11.1节, “Using the Test Protocol Trace Plugin”.

    Note

    Do not enable the WITH_TEST_TRACE_PLUGIN option if you want to use your own protocol trace plugins because only one such plugin can be loaded at a time and an error occurs for attempts to load a second one. If you have already built MySQL with the test protocol trace plugin enabled to see how it works, you must rebuild MySQL without it before you can use your own plugins.

    For information about writing trace plugins, see  28.2.4.11节, “Writing Protocol Trace Plugins”.

  • -DWITH_TSAN=bool

    Whether to enable the ThreadSanitizer, for compilers that support it. The default is off.

  • -DWITH_UBSAN=bool

    Whether to enable the Undefined Behavior Sanitizer, for compilers that support it. The default is off.

  • -DWITH_UNIT_TESTS={ON|OFF}

    If enabled, compile MySQL with unit tests. The default is ON unless the server is not being compiled.

  • -DWITH_UNIXODBC=1

    Enables unixODBC support, for Connector/ODBC.

  • -DWITH_VALGRIND=bool

    Whether to compile in the Valgrind header files, which exposes the Valgrind API to MySQL code. The default is OFF.

    To generate a Valgrind-aware debug build, -DWITH_VALGRIND=1 normally is combined with -DWITH_DEBUG=1. See Building Debug Configurations.

  • -DWITH_ZLIB=zlib_type

    Some features require that the server be built with compression library support, such as the COMPRESS() and UNCOMPRESS() functions, and compression of the client/server protocol. The WITH_ZLIB indicates the source of zlib support:

    • bundled: Use the zlib library bundled with the distribution. This is the default.

    • system: Use the system zlib library. If WITH_ZLIB is set to this value, the zlib_decompress utility is not built. In this case, the system openssl zlib command can be used instead.

  • -DWITHOUT_SERVER=bool

    Whether to build without the MySQL server. The default is OFF, which does build the server.

Compiler Flags

  • -DCMAKE_C_FLAGS="flags"

    Flags for the C Compiler.

  • -DCMAKE_CXX_FLAGS="flags"

    Flags for the C++ Compiler.

  • -DWITH_DEFAULT_COMPILER_OPTIONS=bool

    Whether to use the flags from cmake/build_configurations/compiler_options.cmake.

    Note

    All optimization flags were carefully chosen and tested by the MySQL build team. Overriding them can lead to unexpected results and is done at your own risk.

To specify your own C and C++ compiler flags, for flags that do not affect optimization, use the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS CMake options.

When providing your own compiler flags, you might want to specify CMAKE_BUILD_TYPE as well.

For example, to create a 32-bit release build on a 64-bit Linux machine, do this:

shell> mkdir bld
shell> cd bld
shell> cmake .. -DCMAKE_C_FLAGS=-m32 \
         -DCMAKE_CXX_FLAGS=-m32 \
         -DCMAKE_BUILD_TYPE=RelWithDebInfo

If you set flags that affect optimization (-Onumber), you must set the CMAKE_C_FLAGS_build_type and/or CMAKE_CXX_FLAGS_build_type options, where build_type corresponds to the CMAKE_BUILD_TYPE value. To specify a different optimization for the default build type (RelWithDebInfo) set the CMAKE_C_FLAGS_RELWITHDEBINFO and CMAKE_CXX_FLAGS_RELWITHDEBINFO options. For example, to compile on Linux with -O3 and with debug symbols, do this:

shell> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
         -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

2.8.5 编译MySQL的问题处理

许多问题的解决方案涉及重新配置。如果你做了重新配置,请注意以下几点:

  • 如果之前就已经运行过CMake那么可能就使用了之前的信息,这些信息都保存在CMakeCache.txt中,当 CMake启动时,它会查找是否存在CMakeCache.txt,如果存在则读取里面的内容。假设当前存在这些信息,那么当你重新配置后,这些采集的信息就无效了。

  • 每次运行CMake,都必须先再次运行make进行重编译。而,由于使用了不同的配置选项,所以需要先移除上一次构建的对象文件。

为了防止使用旧的对象文件或配置信息,重新运行CMake前,先运行下面的命令:

在Unix上:

shell> make clean
shell> rm CMakeCache.txt

在Windows上:

shell> devenv MySQL.sln /clean
shell> del CMakeCache.txt

如果您是在源码包外构建,那么在再次运行CMake前,移除并重新创建您的编译目录。 对于在源码包外构建安装的介绍,参阅 如何使用CMake构建MySQL服务器.

在一些系统中,由于系统的不同,可能会出现警告。下面的列表描述了其他一些经常会在编译MySQL时经常出现的问题:

  • 定义编译器是使用C 还是C++,可以通过定义CCCXX 环境变量。举个例子:

    shell> CC=gcc
    shell> CXX=g++
    shell> export CC CXX
    

    使用CMAKE_C_FLAGSCMAKE_CXX_FLAGS CMake 选项。来标识您使用的C或C++编译器。参阅 编译器标识

    调用 mysql_config加上 --cflags--cxxflags 选项,来查看您需要指定什么标识。

  • CMake 配置完MySQL后,运行 make VERBOSE=1 而不仅是 make可以查看编译期间执行的命令。

  • 如果编译失败,查看是否开启了 MYSQL_MAINTAINER_MODE选项,这个模块会导致编译器将警告当做错误,所以,禁用它可能会使得编译继续进行。

  • 如果您的编译失败了,且出现一下任何一种,您必须将您的 make版本升级到GNU make:

    make: Fatal error in reader: Makefile, line 18:
    Badly formed macro assignment
    

    或:

    make: file `Makefile' line 18: Must be a separator (:
    

    或:

    pthread.h: No such file or directory
    

    众所周知,Solaris和FreeBSD的 make 程序都有令人讨厌。

    GNU make 3.75 是公认的好。

  • The sql_yacc.cc 文件是由 sql_yacc.yy生成的。正常情况下,构建流程不需要创建sql_yacc.cc 因为MySQL附带一个预先生成的副本,因此,如果您根据需要而重建它,您可能会遇见这个错误:

    "sql_yacc.yy", line xxx fatal: default action causes potential...
    

    这表明您当前的yacc存在缺陷,您可能需要安装最新版的 bison (yacc的GNU版),然后使用最新版的。

    1.75版本之前的bison可能报这样的错:

    sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
    

    实际上最大表的大小没有超过,这在老 bison版本的一个bug引起的。

更多有工具的关获取或更新的信息,参阅2.8节, “源码安装MySQL”中的系统要求。

2.8.6 MySQL 配置和第三方工具

需要从MySQL源码来确定此版本的MySQL所需的第三方工具,这些信息可以从源码目录中的VERSION文件中获得。 该文件分别列举出了版本的各个部分。如,如果版本是MySQL 8.0.4-m14,那么此文件应该看起来像这样:

MYSQL_VERSION_MAJOR=8
MYSQL_VERSION_MINOR=0
MYSQL_VERSION_PATCH=4
MYSQL_VERSION_EXTRA=-m14

如果源码不是用于发行稳定版本,那么 MYSQL_VERSION_EXTRA的值将会是空值。对于这里的例子,该值与m14相对应。

从版本组件构造一个5位数的数字,可以使用以下公式:

MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH

2.8.7 生成MySQL Doxygen 文档

MySQL源码包含了使用Doxygen写的内置文档。生成的Doxygen内容可以从这里获得 http://dev.mysql.com/doc/dev/mysql-server/latest/. 当然也可以使用本地的源码生成,流程如下:

  1. 安装 doxygen 1.8.11 或更高版本。 安装包可从这里获得:

    http://www.stack.nl/~dimitri/doxygen/download.html
    

    安装完doxygen后,验证版本号:

    shell> doxygen --version
    1.8.11
    
  2. 安装PlantUML。安装包可从这里获得:

    http://plantuml.com/download.html
    

    当在Windows上安装PlantUML(在Windows 10上测试过),必须要以管理员身份运行一次它,以便于它能生成注册码。打开一个管理员控制台,然后运行这个命令:

    java -jar path-to-plantuml.jar
    

    这个命令应该会打开一个图形界面,并在控制台上返回没有错误。

  3. 安装Graphviz dot 命令。可以从这里获得安装包:

    http://www.graphviz.org/
    

    安装Graphviz后,验证dot可用。如:

    shell> which dot
    /usr/bin/dot
    shell> dot -V
    dot - graphviz version 2.28.0 (20130928.0220)
    
  4. 将环境变量PLANTUML_JAR_PATH 设置为您的PlantUML安装路径。如:

    export PLANTUML_JAR_PATH=path-to-plantuml.jar
    
  5. 切换到MySQL的顶级安装目录,然后调用doxygen,然后执行这些命令:

    mkdir -p generated/doxygen
    doxygen
    

    检查错误日志, doxyerror.log位于顶级安装目录下。假设构建成功执行,则可以使用浏览器查看生成的输出。例如:

    firefox generated/doxygen/html/index.html
    

    您可以使用不同的浏览器甚至可以在页面上添加书签。

2.9 安装后的设置和测试

本节讨论的是安装MySQL后您需要执行的工作:

  • 如果有必要,初始化数据目录并创建MySQL权限表,对于某些安装方式,在安装的时候会自动的完成数据目录的初始化:

    • 在Windows上使用MySQL安装助手执行MySQL安装的,会自动初始化数据目录。

    • 在Linux上使用RPM方式安装的。

    • 许多使用本地包安装的系统,包括,Debian Linux、 Ubuntu Linux、Gentoo Linux等等。

    • OS X 上使用 DMG 安装的。

    对于其它平台和其它安装方式,包括使用二进制文件和源码安装的,您必须自己初始化数据目录。相关说明,请参阅 2.9.1 节, “初始化数据目录”

  • 启动服务器以证实数据目录可以被访问。相关说明,请参阅 2.9.2 节, “启动服务器”, 和 2.9.3 节, “测试服务器”

  • 如果在初始化数据目录的时候没有完成对root账户的密码分配,那么MySQL服务器就拒绝未授权的访问。详细说明,请参阅 2.9.4 节, “使初始MySQL账户安全”

  • 根据需求,可以将服务器设置为随系统自动启动和关闭。详细说明,请参阅 2.9.5 节, “自动启动关闭MySQL”

  • 根据需求,可以设置时区表,以便对指定的时区进行识别,详细说明,请参阅 10.6 节, “MySQL服务器时区支持”

当您准备创建其它的用户账户,可以在参阅 6.2 节, “MySQL 权限系统”, 和 6.3节, “MySQL 用户账户管理”,这里可以看到MySQL的访问控制系统和账户管理。

2.9.1 初始化数据目录

安装MySQL后,必须初始化数据目录,包括mysql系统库中的表。对于有些安装方式,数据目录是自动初始化,正如 2.9节, “安装后的设置和测试”中描述的。 有些安装方式,包括使用二进制文化和源码安装的,必须手动的初始化数据目录。

本节描述的是如何在Unix和类Unix系统上初始化数据目录。(至于Windows, 参阅 2.3.7节, “Window上安装后的程序”。) 参阅2.9.3节, “测试服务器”,其中的一些建议的命令可以用来测试服务器是否可以访问,且正常工作。

在这里的示例中,服务器在mysql 登录帐户的用户ID下运行。这是假设此账户已经存在的情况下,如果没有这个账户就先创建,或者也可以用其他的账户来运行服务器。对于创建账户的信息,请参阅 2.2 节, “在 Unix/Linux上使用通用二进制文件安装MySQL”中的 创建一个mysql系统用户和组

  1. 切换到MySQL的顶级安装目录,此处为 BASEDIR:

    shell> cd BASEDIR
    

    BASEDIR 可能是/usr/local/mysql/usr/local。以下步骤假定您位于该目录。

    您会在 BASEDIR目录看到几个文件和子目录,其中最重要的就是bin子目录,里面包含了服务器程序,还有客户端程序和一些实用程序。

  2. 在操作系统上创建一个目录作为系统变量 secure_file_priv的值来限制import/export到指定的目录。参阅 5.1.5节, “服务器系统变量”

    shell> mkdir mysql-files
    shell> chmod 750 mysql-files
    
  3. 根据需要,保证可以被mysql用户访问,如果以 mysql安装的,那就不需要其他操作,如果是以 root用户安装,那么文件的所有者就是 root,需要用户root用户,执行下面的命令,将它们的所有者改为 mysql 。第一个命令的是将它们的所有者属性改为 mysql 用户,第二个命令是将所属组改为mysql 组。

    shell> chown -R mysql .
    shell> chgrp -R mysql .
    
  4. 根据需要,初始化数据目录,包含mysql 库,其中包括决定用户能否访问服务器的初始MySQL权限表。

    典型的,数据目录的初始化仅需要首次安装MySQL时完成,如果对已存在的进行升级,则应该运行 mysql_upgrade (参阅 4.4.5节, “mysql_upgrade — 检查和升级MySQL表”)。然而,下面对数据目录初始化的命令不会覆盖已有的权限表,因此,可以在任何环境下安全运行。

    初始化数据目录:

    shell> bin/mysqld --initialize --user=mysql
    

    多个信息,请参阅 2.9.1.1 节, “手动使用mysqld初始化数据目录”

  5. 如果您希望服务器能够自动支持安全连接,使用 mysql_ssl_rsa_setup 来创建默认的SSL 和RSA 文件:

    shell> mysql_ssl_rsa_setup
    

    多个信息,请参阅 4.4.3 节, “mysql_ssl_rsa_setup — 创建SSL/RSA文件

  6. 初始化数据目录后,您可以确立设置最终的所属关系。不做其他操作,那么所有者是mysql。 不然,如果您喜欢的话,大部分的MySQL安装文件的所有者可以是root。例外的是,数据目录和 mysql-files 目录的所有者必须是 mysql。为了坐实这一点,在初始目录下以 root用户运行下面的命令。对于某些安装类型,数据目录可能叫做var而不是 data; 可以相应的调整两个命令。

    shell> chown -R root .
    shell> chown -R mysql data mysql-files
    

    如果服务器上的插件目录(由 plugin_dir系统变量命令的目录)是可写的,那么用户就可以使用 SELECT ... INTO DUMPFILE将可执行代码写入到目录中的文件中。为了安全起见,可以通过在服务器上将插件目录设置为只读,或者在服务器启动时,将 secure_file_priv 系统变量设置为一个可以安全执行 SELECT 写的目录。(例如,将它设置为之前创建的 mysql-files目录)

  7. 要指定MySQL服务器在启动时应该使用的选项, 将其放入 /etc/my.cnf/etc/mysql/my.cnf 文件中,您可以这样使用这个文件,例如,设置系统变量 secure_file_priv的值,参阅 5.1.2 节, “服务器配置默认值”。如果您没有这样做,那么服务器是以默认值启动。

  8. 如果您想MySQL随着机器自动启动,请参阅 2.9.5 节, “自动启动关闭MySQL”.

数据目录初始化时会在 mysql 库下创建时区表,但是不会填充时区表,那就照着 10.6 节, “MySQL服务器时区支持”中的说明的做。

2.9.1.1 手动使用mysqld初始化数据目录

本节描述的是如何使用 mysqld初始化数据目录。

接下来的描述是假设你当前所在的目录是MySQL的安装目录,此处是 BASEDIR:

shell> cd BASEDIR

调用 mysqld加上 --initialize--initialize-insecure 选项来初始化数据目录,选择那个选项是根据您是否希望服务器随机的为'root'@'localhost'账户生成一个初始密码。

在Windows平台上,使用下面命令之一:

C:\> bin\mysqld --initialize
C:\> bin\mysqld --initialize-insecure

在Unix和类Unix系统上,很重要的一点是,要确保库目录和文件的所有者是 mysql 登录用户,这样您后面运行服务器时才能对其进行读写操作。为此,使用系统root账户,并以含有--user 选项启动 mysqld,就像这里显示的:

shell> bin/mysqld --initialize --user=mysql
shell> bin/mysqld --initialize-insecure --user=mysql

否则,就用 mysql登录系统来执行程序,这样命令中就可以省略 --user 选项。

不管是什么平台,都可以使用 --initialize 进行缺省安全的安装(换而言之,就是随机的给root生成一个初始密码)。这种情况下,root用户的密码是标记为过期的,因此您需要重新设置一个。使用 --initialize-insecure 选项,就不会产生 root密码,这种情况是你在将服务器投入生产之前,会指定一个密码。

其他可能有必要指定的选项,如: --basedir--datadir 。如果 mysqld不能识别正确的安装目录和数据目录。 举个例子 (将命令放在一行):

shell> bin/mysqld --initialize --user=mysql
         --basedir=/opt/mysql/mysql
         --datadir=/opt/mysql/mysql/data

根据需要,将相关的选项设置放在一个选项文件中,并将该文件的名称传递给 mysqld。对于Unix和类Unix系统,假设这个选项文件名是 /opt/mysql/mysql/etc/my.cnf。将这些行放入文件:

[mysqld]
basedir=/opt/mysql/mysql
datadir=/opt/mysql/mysql/data

然后如下调用mysqld( --defaults-file选项以独立的一行放在最前):

shell> bin/mysqld --defaults-file=/opt/mysql/mysql/etc/my.cnf
         --initialize --user=mysql

在 Windows上,假设C:\my.ini 中包含这些行:

[mysqld]
basedir=C:\\Program Files\\MySQL\\MySQL Server 8.0
datadir=D:\\MySQLdata

那就可以这样调用mysqld( --defaults-file 选项必须是在第一个位置):

C:\> bin/mysqld --defaults-file=C:\my.ini --initialize

当使用带有 --initialize--initialize-insecure 选项调用, mysqld 会执行下面的顺序执行初始化。

注意

服务器会将任何信息写入到它的标准输出中,而且可能被重定向到错误日志,因此,屏幕上您不一定会看到这些信息。对于错误日志的信息,包括其所在位置,请参阅 5.4.2 节, “错误日志”

在Windows上, 使用 --console选项将消息直接发送到控制台。

  1. 服务器检查数据目录的存在:

    • 如果没有数据目录,服务器会创建它。

    • 如果数据目录已经存在,但是不为空(意思就是,它包含文件或子目录),服务器会产生错误信息,然后退出:

      [ERROR] --initialize specified but the data directory exists. Aborting.
      

      这种情况下,移除或更名这个数据目录,然后再次尝试。

      如果每个条目都有一个 (.) 开头的名称,那么现有的数据目录就可以是非空的。

  2. 在这个数据目录中,服务器会创建 mysql系统库及其表,包括:权限表、服务器端帮助表,以及时区表。完成的列表和权限表的描述,参阅 6.2节, “MySQL 访问权限系统”

  3. 服务器初始化 system 表空间 以及管理 InnoDB 表的相关数据结构。

    注意

    mysqld建立好 InnoDB system表空间 后,当创建一个新的instance时需要改变某些表空间的特性。这包括系统表空间中的第一个文件的文件名,和undo日志的个数。 如果您使用的不想使用默认值,请确保在运行mysqld之前将设置好参数值 innodb_data_file_pathinnodb_log_file_size放入MySQL的 配置文件文件中。 同样还要指定一些必要的参数来 InnoDB文件的创建和所在位置。如: innodb_data_home_dirinnodb_log_group_home_dir

    如果这些选项都在配置文件中,但是配置文件不在MySQL的默认读取位置,那么可以在运行 mysqld的时候使用 --defaults-extra-file选项指定配置文件的所在位置。

  4. 服务器创建一个'root'@'localhost'超级用户账户和其他保留账户(参阅 6.3.5节, “保留的用户账户”)。有些保留账户是被锁定的,所以不能在客户端使用,但是 'root'@'localhost'是用于管理,所以需要给它分配一个密码。

    服务器对'root'@'localhost'帐户的密码的操作取决于您如何调用它:

    • 使用 --initialize ,而不是 --initialize-insecure, 服务器会生成一个随机密码,但,是过期的,并且显示密码:

      [Warning] A temporary password is generated for root@localhost:
      iTag*AfrH5ej
      
    • 使用 --initialize-insecure, (不管有没有 --initialize ,因为 --initialize-insecure 包含 --initialize), 服务器不会生成一个随机密码,或标记密码过期,以及显示密码信息:

      Warning] root@localhost is created with an empty password ! Please
      consider switching off the --initialize-insecure option.
      

    参阅本节后面的关于给'root'@'localhost' 分配一个新密码的说明。

  5. 如果内容是可用,服务器将填充服务器端帮助表(在 fill_help_tables.sql 文件中)。服务器不会填充时区表,如想填充,参阅 10.6节, “MySQL 服务器时区支持”

  6. 如果将--init-file 选项用来指定 SQL语句所在的文件名,那么服务器将在文件红执行该语句,此选项允许您执行自定义引导序列。

    当服务器是以引导模式运行,那么某些功能就不能使用,因为文件中的语句被限制。其中包括账户管理 (如: CREATE USERGRANT), 复制、全局事务标示符相关的语句。

  7. 服务器退出。

使用--initialize--initialize-insecure启动服务器来初始化数据目录后,正常(意思是,没有那些选项)启动服务器,添加默认账户等。关于如何选择安装包的信息,请参见然后给 'root'@'localhost' 账户分配一个新密码:

  1. 启动服务器。相关说明,请参阅 2.9.2节, “启动服务器”

  2. 连接到服务器:

    • 如果使用的是--initialize而不是 --initialize-insecure来初始化的数据目录。使用 root连接到服务器时,需要使用之前服务器产生的随机密码:

      shell> mysql -u root -p
      Enter password: (此处输入之前的随机密码)
      

      如果不知道密码,查看服务器的错误日志。

    • 如果是使用 --initialize-insecure to 初始化的数据目录,可不需密码使用root连接服务器:

      shell> mysql -u root --skip-password
      
  3. 连接受,分配一个新的root密码:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

2.9.2 启动服务器

本节描述的是在Unix和类Unix系统上启动MySQL服务器 (至于在Windows系统上,参阅 2.3.5.5节, “首次启动服务器”。) 推荐一些用来测试服务器是否可以访问和正常工作的命令,参阅 2.9.3节, “测试服务器”

如果安装包含了 mysqld_safe,就像这样启动MySQL服务器:

shell> bin/mysqld_safe --user=mysql &
注意

对于在Linux系统上,使用RPM包安装的MySQL,服务器的启动和管理是使用系统命令,而不是 mysqld_safe,并且, mysqld_safe 是没有安装的。

如果是支持系统命令的安装,那么就像这样启动服务器:

shell> systemctl start mysqld

如果与mysqld不同,可以替换适当的服务名称;例如,在SLES系统上的mysql

很重要的一点是,使用非特权 (非-root)登录账户运行MySQL服务器。要想做到这一点,用root运行含有--user 选项的 mysqld_safe 不然,您就得使用以 mysql登录系统来执行程序,这样就可以在命令中省略 --user选项。

更多关于使用无权限的用户运行MySQL ,请参阅6.1.5节, “如何用普通用户运行MySQL”

如果命令直接失败了,并显示mysqld ended, 查看错误日志中的信息(默认值是在数据目录中的 host_name.err )。

如果服务器启动是不能访问数据目录,或读取mysql库下的权限表,那么它会在错误日志中显示信息。如果您在执行此步骤之前,忽略了初始化数据目录,或者在运行初始化数据目的命令中没有 --user 选项,那么就会出现这样的问题。此时就要删掉 data目录,然后加上 --user 选项运行命令。

如果在服务器启动上有其他的问题,请参阅 2.9.2.1 节, “MySQL服务器启动故障处理”.。更多关于 mysqld_safe的信息,请参阅 4.3.2 节, “mysqld_safe — MySQL 服务器启动脚本”。与支持的关系统命令相关的信息,请参阅 2.5.9 节, “使用系统命令管理MySQL服务器”

2.9.2.1 MySQL服务器启动故障处理

本节提供一些在启动服务器时,故障处理的建议。

如果在服务器启动上有问题,这里有些方法可以尝试:

  • 检查错误日志看服务器为什么没有启动。日志文件位于 数据目录 (典型, C:\Program Files\MySQL\MySQL Server 8.0\data 是Windows系统上的, /usr/local/mysql/data是二进制安装的Unix/Linux系统,以及 /usr/local/var源码安装的 Unix/Linux 系统)。查看数据目录下的一个文件,格式为 host_name.errhost_name.log ,而 host_name 是您的主机名。然后查看文件中最近的一些记录。 使用tail把它们显示出来:

    shell> tail host_name.err
    shell> tail host_name.log
    
  • 指定正在使用的存储引擎所需的任何特殊选项。 您可以通过创建一个my.cnf文件,来指定引擎启动选项。如果您使用支持事务的表 (InnoDB, NDB)的存储引擎,请确保在启动前,您已经按照您想要的方式配置了它们。如果您使用InnoDB 表。请参阅 15.6 节, “InnoDB 配置” 中的在指导,以及 15.13 节, “InnoDB 启动选项和系统变量” 获得选项语法。

    尽管存储引擎使用省缺的默认值。但是Oracle还是建议您检查可使用的选项,并为那些不适合默认值的选项指定明确的值。

  • 确保服务器知道找到数据目录的位置。mysqld服务器使用该目录作为其当前目录。这是它期望找到的数据库和它期望写日志文件的地方。服务器还在数据目录中写入pid(进程ID)文件。

    当服务器被编译时,默认的数据目录路径是在服务编译时硬性指定的,调用mysqld加上 --verbose--help 选项。如果数据目录位于系统的其他位置。那么在运行 mysqldmysqld_safe命令时,通过 在命令行或选项文件中指定--datadir 选项来指定数据目录的位置, 否则服务器将无法正常工作。 --datadir 选项的另一种使用方法,就是,您可以在MySQL安装时,通过--basedir选项指定 mysqld 的所在位置 ,那么 mysqld 就会在这里查找 data 目录。

    检查指定的路径是否生效,调用 mysqld且带上 --verbose--help 选项,如下所示。 举个例子,如果您将目录换到 mysqld的安装目录,然后运下面的命令,它显示了使用基本目录启动服务器的效果 /usr/local:

    shell> ./mysqld --basedir=/usr/local --verbose --help
    

    您同样还可以指定其他选项,如: --datadir ,但是 --verbose--help 必须放在最后。

    一旦确定了您想要设置的路径,就不需要 server without --verbose--help来启动服务器。

    如果mysqld正在运行,您可以通过执行以下命令找到它使用的路径设置:

    shell> mysqladmin variables
    

    或:

    shell> mysqladmin -h host_name variables
    

    host_name 是主机名。

  • 确保服务器可以访问 数据目录。数据目录的所有者和权限,以及必须允许服务器能对其内容进行读写操作。

    如果在启动mysqld时遇见Errcode 13 (意思是 Permission denied) ,这就意味着数据目录或其内容的权限不允许服务器访问。这种情况下,需要修改相关文件和目录的权限以便于服务器可以访问。您可以用 root用户来启动服务器,但是这会引发安全问题,所以应该避免。

    将位置更改为数据目录,并检查数据目录及其内容的所有权,以确保服务器具有访问权限。例如:如果数据目录是 /usr/local/mysql/var,使用命令:

    shell> ls -la /usr/local/mysql/var
    

    如果数据目录及其内容,以及目录下的子目录或子文件的所有者不是您当前登录的用户,那么需要将其修改为该用户,假如,账户名是 mysql, 使用下面命令:

    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql/var
    

    即使所有者是正确的用户,MySQL也可能启动失败,如果系统上运行了管理应用程序访问文件系统各个部分的安全软件。这种情况下,推荐重新配置该软件,以至于MySQL能够访问它在正常操作期间所使用的目录。

  • 验证服务器想要使用的网络接口是否可用。

    以下出现以下报错,说明mysqld试图使用的套接文件或端口被其他程序(或许是另外一个mysqld服务)占用:

    Can't start server: Bind on TCP/IP port: Address already in use
    Can't start server: Bind on unix socket...
    

    使用 ps检查服务器是是否有其他的 mysqld服务在运行,如果有,先关闭这个,然后再次启动 mysqld 。 (如果另外一个服务正在运行,而且您又想在服务器上运行多个MySQL,您可以参照这里介绍的信息 5.7 节, “一个机器上运行多个MySQL实例”。)

    如果上面没有其他的服务在运行,那么执行这个命令 telnet your_host_name tcp_ip_port_number. (默认的MySQL端口是3306)然后按回车键。如果您没有得到像这样的错误信息 telnet: Unable to connect to remote host: Connection refused,那么某些其他程序正在使用mysqld试图使用的TCP/IP 端口。查找出这个程序,然后禁用掉。或者使用--port选项给 mysqld 指定另外一个不同的端口号。这种情况下,使用TCP/IP连接到服务器的客户端程序也要使用相同的非默认的端口号。

    端口不可访问的其他原因可能就是您有防火墙,它阻止了连接,如果是这样,那么修改防火的设置来允许这个端口访问。

    如果服务器已经启动了,但是您不能连接上去,请确保在 /etc/hosts 文件中加入了类似这样的:

    127.0.0.1       localhost
    
  • 如果不能启动mysqld,尝试使用--debug选项,生成一个跟踪文件来找到问题的所在。请参阅 28.5.3 节, “ DBUG 包”

2.9.3 测试服务器

初始化数据目录后,然后启动服务器。此时执行一些简单的测试,来确保服务器能令我们满意的工作。 本节假设您当前的位置是MySQL安装目录,并且它有一个bin子目录,如果不是在这个目录,请切换到正确的目录路径下。

当然,可以把 bin 目录添加到 PATH环境变量中。这样shell就能正确的找到MySQL程序, 以至于以后只需要敲程序名,而不用加上路径名。参阅 4.2.10 节, “设置环境变量”

使用 mysqladmin 来校验服务器在运行。下面的命令提供了一个简单的测试来检查服务器是否起来的,且可以连接的上:

shell> bin/mysqladmin version
shell> bin/mysqladmin variables

如果您不能连接到服务器,那么指定-u root 选项,以root连接。如果之前已经给 root账户分配的密码,那么还得在命令行上指定-p ,然后根据提示符输入密码。举个例子:

shell> bin/mysqladmin -u root -p version
Enter password: (在这里输入root密码)

mysqladmin version 的输出略有不同,这取决于您的平台和MySQL版本,但应该跟这里所示的类似:

shell> bin/mysqladmin version
mysqladmin  Ver 14.12 Distrib 8.0.3, for pc-linux-gnu on i686
...

Server version          8.0.3
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 14 days 5 hours 5 min 21 sec

Threads: 1  Questions: 366  Slow queries: 0
Opens: 0  Flush tables: 1  Open tables: 19
Queries per second avg: 0.000

调用--help选项,可以查看mysqladmin还能做什么。

验证您可以关闭服务器(如果root 账户已经有密码,还要带上-p 选项):

shell> bin/mysqladmin -u root shutdown

验证您可以再次启动服务器。使用 mysqld_safe这样做,或者直接调用 mysqld。 例如:

shell> bin/mysqld_safe --user=mysql &

如果使用mysqld_safe 失败了,请参阅 2.9.2.1 节, “MySQL服务器启动的故障处理”

运行一些简单的测试,以验证您可以从服务器检索信息。输出内容应该和这里显示的类似。

使用 mysqlshow 来查看存在哪些库:

shell> bin/mysqlshow
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

列表显示的库可能有所不同,但基本上最少会包括 mysqlinformation_schema

如果你指定了一个库名,mysqlshow会列出这个库下所有的表:

shell> bin/mysqlshow mysql
Database: mysql
+---------------------------+
|          Tables           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

使用mysql 可以查询 mysql库中某个表的内容信息:

shell> bin/mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+------+-----------+-----------------------+
| User | Host      | plugin                |
+------+-----------+-----------------------+
| root | localhost | mysql_native_password |
+------+-----------+-----------------------+

至此,您的服务器正在运行,并且您可以访问它。为了安全起见,需要给初始账户分配密码。 参阅这里介绍的 2.9.4节, “安全化MySQL初始账户”

2.9.4 安全化MySQL初始账户

MySQL 的安装过程涉及到数据目录的初始化,其中含有MySQL初始账户定义的权限表的mysql 库。更多细节,请参阅 2.9 节, “安装后的设置和测试”

本节描述的是,如果给安装MySQL过程中创建的初始 root账户设置密码。

注意

在Windows 平台上,在安装MySQL的过程中,您可以使用MySQL安装助手执行这些操作。 在所有平台上,MySQL发行版中包含了mysql_secure_installation,这是一个命令行实用程序,它可以自动完成MySQL安装的大部分安全工作。MySQL Workbench可以在所有平台上使用,并且还提供管理用户帐户的能力。 (参阅 第30章, MySQL Workbench )。

在这些情况下,初始账户可以已经被分配了密码:

  • 在Windows上,使用MySQL安装助手进行的安装可以让您选择指定一个密码。

  • 使用OS X 安装助手安装的,安装程序会在一个对话框中生成一个初始的随机密码显示给用户。

  • 使用RPM包进行安装的,会生成一个随机密码,写入到MySQL错误日志中。

  • 对于手动的使用 mysqld --initialize执行数据目录初始化的,, mysqld会生成一个随机密码,写入MySQL错误日志中,同时标示为过期。更多详细,请参阅 2.9.1.1 节, “手动使用mysqld初始化数据目录”

在授权表mysql.user中定义了MySQL初始用户账户,及其访问权限。安装MySQL时,只会创建一个 'root'@'localhost'超级账户,它有所有的权限,可以做任何事情。如果 root账户的密码为空,那么安装的MySQL就没有受到保护:任何人都能以 root无密码连接到MySQL服务器,且可以被授予所有的权限。

'root'@'localhost'账户在mysql.proxies_priv表中有一条的记录,它可以为 ''@''授予PROXY 权限,也就是所有的用户和主机。这使得 root可以创建代理用户,同样还可以让其他代理用户授权代理用户。 参阅 6.3.11 节, “代理用户”

使用下面的流程,给MySQL初始root账户分配密码。将您想要使用的密码替换掉示例中的new_password

如果服务没有运行,那么先启动服务器,相关说明,参阅 2.9.2 节, “启动服务器”

不管初始root有没有密码,都适用于下面的流程:

  • 如果root 账户有一个初始随机密码,但是已经过期了,那么使用这个过期的密码以root连接到服务器,然后设置新密码,这种情况,是因为初始数据目录是使用 mysqld --initialize初始化的,这里不管是手动的还是使用安装助手,由于安装期间不能设置自己想要的密码,而是生成一个随机的过期的密码。 但是因为密码已经存在,所以必须使用它连接到服务器。但是由于密码过期,所以在设置新密码之前此账号将不能被使用。您不能在选择新密码之前使用该帐户,除非您选择了一个新密码。

    1. 如果不知道初始随机密码,可以在错误日志中查找。

    2. root使用密码连接到服务器:

      shell> mysql -u root -p
      Enter password: (这里输入root的随机密码)
      
    3. 设置新的密码,来替换随机密码:

      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
      
  • 如果存在root账户,但是没有密码。那么以root无密码方式连接到服务器。然后分配一个密码。这种情况是,如果您是使用 mysqld --initialize-insecure初始化数据目录。

    1. 使用root 无密码连接服务器:

      shell> mysql -u root --skip-password
      
    2. 分配一个密码:

      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
      

root 账户分配密码后,无论什么时候使用这个账户连接到MySQL服务器时都需要提供密码。例如:使用 mysql客户端连接服务器。使用这个命令:

shell> mysql -u root -p
Enter password: (这里输入root密码)

使用mysqladmin关闭服务器,使用这个命令:

shell> mysqladmin -u root -p shutdown
Enter password: (这里输入root密码)
提示

关于设置密码的其他信息,请参阅 6.3.7 节, “分配账户密码”。如果您忘记了之前设置的 root密码,参阅 附录 B.5.3.2 节, “如何重置Root密码”

对于建立其他账户,请参阅 6.3.2 节, “添加用户账户”

2.9.5 自动启动和关闭MySQL

本节描述的是启动和关闭MySQL服务器的方式。

通常情况下,使用下面其中一种方式来启动 mysqld 服务。

系统命令,mysqld_safemysql.server 脚本、Solaris SMF、以及OS X启动项(或MySQL偏好面板) 都可以用来手动启动MySQL服务器,或者设置为开机自动启动。系统命令 mysql.server和启动项还可以用于关闭MySQL服务器。

下表显示的是从选项文件中需要读取的选项组和启动脚本。

表 2.13 MySQL 启动脚本和只是的服务器选项组

脚本选项组
mysqld[mysqld], [server], [mysqld-major_version]
mysqld_safe[mysqld], [server], [mysqld_safe]
mysql.server[mysqld], [mysql.server], [server]

[mysqld-major_version] 这就意味着,拥有类似 [mysqld-5.7][mysqld-8.0]组的可以由5.7.x, 8.0.x等等的版本读取。该特性可用于指定选项,而这些选项只能被特定的的版本读取。

为了向后兼容,mysql.server 还会读取[mysql_server]组,以及 mysqld_safe会读取 [safe_mysqld]组。为了保持这样的趋势,您应该更新您的选项文件以至于可以使用 [mysql.server][mysqld_safe]组 。

更多有关MySQL配置文件及其结构和内容的信息,请参阅  4.2.6 节, “使用选项文件”

2.10 升级和降级MySQL

本节描述的是升级或降级MySQL的安装步骤。

升级,是一个常见的场景,因为您可以修复同版本中的bug,或者可以使用新版的重要特性。您首先在测试环境执行升级操作,以确保所有的都可以正常工作,然后在生产系统上执行。

降级,是一个很少见的场景,通常情况下,是在升级的过程中,由于出现了兼容性或性能问题,然后取消升操作。因为这些问题当初在测试系统上升级的过程总没有发现。与升级过程一样,首先需要在测试系统上执行和验证降级过程,然后应用在生产系统上。

2.10.1 升级 MySQL

MySQL 8.0 将包含数据库对象信息的事务表合并为一个全局的数据字典。在之前的MySQL系列中,字典数据存储在元数据文件和非事务性系统表中。本节描述如何将您的数据字典从基于文件的结构升级到数据字典结构。

重要

这里描述的是将发行版的MySQL从5.7(5.7.9或更高)升级到8.0。不支持5.7之前的版本,也不支持非发行版的5.7。

升级之后,由于服务器使用的是数据字典,所以有些常用操作会有所不同,请参见 14.6 节, “数据字典的使用差异”

注意

在接下来的讨论中,必须使用具有管理权限的MySQL账户运行MySQL命令。其中在命令行中包含 -u root来指定MySQL root用户, 同时使用-p选项来指定root用户的密码。因为-p 后面没有选项值,所以此命令会提示您输入密码。

使用 mysql命令行客户端可以执行SQL语句。

升级方式

支持的升级方式包括:

  • 原地升级: 涉及到关闭旧版本的MySQL,用新的MySQL文件或包覆盖旧的,重启MySQL,然后运行mysql_upgrade.

  • 逻辑升级: 用 mysqldump导出就版中的数据,然后安装新版本的MySQL,在载入DUMP文件到新版本的MySQL中,然后运行 mysql_upgrade

对于原地升级和逻辑升级的过程,请参阅 执行原地升级, 和 执行逻辑升级

如果您的MySQL运行在Windows系统下,可以参考这里描述的升级过程 2.3.8 节, “Windows上升级MySQL”

如果您当前的MySQL是使用MySQL的YUM库安装在Linux或Fedora平台,请参阅 2.10.1.2 节, “使用MySQL Yum 库升级MySQL”

如果您当前的MySQL是使用MySQL的APT库安装在Ubuntu平台上,请参阅 2.10.1.3 节, “使用MySQL APT 库升级MySQL”

升级路径

  • 从一个版本升级到另外一个版本。例如:从5.7升级到8.0。在升级到下一个版本前,我们推荐先升级到当前版的最新版本,例如:先升级到最新的5.7版,然后在升级到8.0。

    重要

    对于MySQL 8.0, 支持您从MySQL 5.7 GA 版(5.7.9 或更高版本)。而从非GA版的MySQL5.7是不支持的。

  • 不能跳过一个版本升级,例如从MySQL 5.6升级到8.0是不支持的。

  • 可以从一个GA版升级到下一个GA版,而跳过一个版本是不支持的。目前还没有为MySQL 8.0提供的GA状态版本。

  • 不支持里程碑版本之间的升级(或者从里程碑版本到GA版本)。例如,不支持从MySQL 8.0.0升级到8.0.1,因为这两个版本都不不是GA版。

对于已经达到GA状态的MySQL版本的版本之间的升级,MySQL格式和数据文件可以在具有相同架构的系统之间的不同版本之间进行移动。这对于里程碑版本之间的升级并不一定是正确的。使用里程碑版本需要您自己承担风险。

关于MySQL发行版命名方案的信息,请参见 2.1.1 节, “选择MySQL安装版本”

升级之前

在升级之前,检查以下信息并执行推荐步骤:

  • 在升级前,可以备份当前的数据和日志文件来保护您的数据,备份应该包括 mysql 系统库, 这个库中包含了MySQL数据字典表和系统表。请参阅 7.2 节, “数据库备份方式”

  • 回顾发行说明 中提到的有关MySQL8.0与其他早期的MySQL发行的版本之间的不同, 其中某些变化可能导致不兼容。

    对于MySQL 8.0中被移除的服务器特性的描述,请参阅 MySQL 8.0中移除的特性。如果你使用了其中任何一个,那么升级时需要修改他们。

    对与MySQL 8.0中的服务器变量和选项的添加,弃用和移除,请参阅 1.5 节, “MySQL 8.0中服务器和状态变量及选项的添加,弃用和移除”。如果您使用了其中任何一类,升级时需要修改配置。

  • 回顾 2.10.1.1 节, “影响升级到MySQL 8.0的改变”,中描述的可能需要在升级之前或之后进行的操作。

  • 如果您使用的是复制, 回顾 18.4.3 节, “升级复制的步骤”

  • 如果你使用了InnoDB的XA事务,在升级前执行 XA RECOVER 来检查未提交的XA事务。如果返回结果,使用 XA COMMIT语句提交事务,或 XA ROLLBACK语句回滚事务。

  • 如果您安装的MySQL上有海量的数据,以至于升级后需要很长的时间进行转换。 那么您可能发现创建一个 dummy数据库实例来评估可能需要哪些转换以及需要做哪些工作来执行转换。创建一个MySQL实例副本,其中包含源库的完整副本,及其他没有数据的库,然后在这个副本实例上进行升级,以此来了解需要哪些操作,这样就有助于您更好的评估在原始数据库实例上执行实际数据转换时所涉及到的工作。

  • 在安装或升级MySQL到新版本时,建议重建或重装MySQL语言接口。这些接口如PHP mysql 扩展, Perl DBD::mysql module, and the Python MySQLdb module.

验证MySQL 5.7升级的先决条件

在开始做MySQL 8.0服务器升级之前,使用MySQL 5.7服务器执行几步初始条件检查是非常重要的,否则,升级的过程可能会失败。

支持初始条件检查:

  1. 必须没有,使用弃用的数据类型的表, 使用非本地分区,或有缺失或空定义的触发器,或是含有无效上下文的InnoDB表。(此上下问是由 SHOW TRIGGERSINFORMATION_SCHEMA TRIGGERS 表中显示的character_set_client, collation_connection, Database Collation 属性表示。) 要识别这些需求检查中失败的表和触发器,执行以下命令:

    mysqlcheck -u root -p --all-databases --check-upgrade
    

    如果 mysqlcheck 反馈任何错误,请修正它。

  2. 必须没有那些不支持本地分区功能的存储引擎创建的分区表,要识别这些表,执行以下查询:

    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
    AND CREATE_OPTIONS LIKE '%partitioned%';
    

    查询显示的任何表,都应转换为 InnoDB存储引擎的分区表或转换为非分区表。修改表的存储引擎为InnoDB,支持下面语句:

    ALTER TABLE table_name ENGINE = INNODB;
    
    提示

    对于将 MyISAM 表转换为InnoDB表,请参阅 15.8.1.4 节, “MyISAM表转换为InnoDB表”

    将分区表转为非分区表,执行下面语句:

    ALTER TABLE table_name REMOVE PARTITIONING;
    
  3. 在MySQL 5.7中 mysql 系统库中的表名不能与MySQL 8.0 数据字典同名。 可以执行下面语句,识别出具有同名的表:

    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE LOWER(TABLE_SCHEMA) = 'mysql'
    and LOWER(TABLE_NAME) IN
    (
    'catalogs',
    'character_sets',
    'collations',
    'column_type_elements',
    'columns',
    'dd_properties',
    'events',
    'foreign_key_column_usage',
    'foreign_keys',
    'index_column_usage',
    'index_partitions',
    'index_stats',
    'indexes',
    'parameter_type_elements',
    'parameters',
    'routines',
    'schemata',
    'st_spatial_reference_systems',
    'table_partition_values',
    'table_partitions',
    'table_stats',
    'tables',
    'tablespace_files',
    'tablespaces',
    'triggers',
    'view_routine_usage',
    'view_table_usage'
    );
    

    对查询中出现的表,必须重命名(使用 RENAME TABLE),且,这可能还需要对使用受影响表的应用程序进行更改。

  4. 必须没有外键约束名超过64个字符的表,识别具有太长约束名称的表,执行以下查询:

    SELECT CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
    WHERE LENGTH(CONSTRAINT_NAME) > 64;
    

    对查询中出现的约束名,必须修改为低于64个字符长度(使用 ALTER TABLE)。

  5. 您安装的MySQL 5.7使用的特性中,必须没有不被MySQL 8.0支持的特性。任何更改都必须是特定于安装的,但是下面的例子说明了要寻找的东西:

    • 使用不被MySQL 8.0支持的存储引擎的表,都必须修改为被支持的引擎。

      例如: MySQL 8.0 还不支持MySQL集群,所以 NDB 表,必须修改为其它的存储引擎。

    • 一些在MySQL 8.0中移除的服务器启动选项和系统变量,请参阅 MySQL 8.0中移除的特性,和 1.5 节, “MySQL 8.0中服务器和状态变量及选项的添加,弃用和移除”。 如果您使用这些项目中的任何一个,那么就需要修改升级配置。

      例如: 因为数据字典提供了数据库对象的信息,所以服务器不再检查数据目录中的目录名来查找库。因此, --ignore-db-dir 选项已经无关了,且已被移除了。但要处理这个问题,需要从启动配置中移除--ignore-db-dir中任何一个实例,此外,在升级到MySQL 8.0之前,删除或移动指定的数据目录的子目录(或者,让8.0服务器将这些目录作为库添加到数据字典中,然后使用DROP DATABASE删除这些库。)

执行原地升级

本节描述的是如何执行一个 原地升级,在开始前,先回顾一下开始之前, 然后,确保您的安装环境已经执行了 验证升级MySQL 5.7的先决条件中给出的步骤。

提示

如果您想升级一个当初是使用多个RPM包的方式安装的,那么您需要升级所有的RPM包,而不是其中的某些。举个例子,如果您之前安装了服务器和客户端的RPM包,不要只是升级服务器RPM。

对于某些Linux平台,使用RPM或Debian包安装的MySQL,包括管理MySQL服务器启动关闭的系统命令。这些平台上没有安装 mysqld_safe ,这样的情况下. 使用系统命令来启动和关闭服务器,请参见 2.5.9 节, “使用系统命令管理MySQL服务器”,而不是用下面的方式。

执行原地升级:

  1. 回顾之前在 2.10.1.1 节, “影响升级到MySQL 8.0的改变”一节中对升级前执行步骤的描述。

  2. 如果您的MySQL 5.7 服务器上的InnoDB表空间是加密的,通过下面语句来转换主机上的密钥值:

    ALTER INSTANCE ROTATE INNODB MASTER KEY;
    
  3. 配置您的MySQL 5.7 服务器可以执行慢速关闭,执行下面语句:

    SET GLOBAL innodb_fast_shutdown = 0;
    

    在缓慢关闭的情况下,InnoDB在关闭前执行完整purg和改变缓冲区合并,这样确保undo日志是空的,且数据文件都是完好的,以便应对版本之间的文件格式差异。

  4. 关闭老版的MySQL服务器。例如:

    mysqladmin -u root -p shutdown
    
  5. 升级二进制安装方式或二进制包的MySQL。如果升级二进制安装方式的MySQL,打开新的二进制发行包,参见 获取和打开发行包。对于基于包的安装,将新的包替换旧的包即可。

    注意

    对于被MySQL支持的Linux平台,替代MySQL包的首选方法是使用MySQL软件库;更多信息,参阅 2.10.1.2 节, “使用MySQL Yum源升级MySQL”, 2.10.1.3 节, “使用MySQL APT 源升级MySQL”, 或 使用MySQL SLES 源升级MySQL

  6. 使用当前已存在的数据目录启动MySQL 8.0服务器。例如:

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

    如果InnoDB 表空间加密了,使用--early-plugin-load 选项,载入密钥插件。

    服务器会自动的检测是否存在数据字典表,如果没有,服务器将在数据目录中创建它们,然后用元数据填充它们,再按照正常的顺序启动它们。在此过程中,服务器服务器会更新所有的数据库对象的元数据,其中包括 库,表空间,系统表和用户表,视图以及存储程序(存储过程、函数、触发器和事件调度器) ,服务器还会移除之前用于元数据存储的文件。升级后,您会发现您的表中以及没有了 .frm 文件。

    如果这一步骤成功了,服务器会执行清理工作:

    • 在数据目录下,服务器创建一个名为 backup_metadata_57的目录,然后将 db.opt 和带有.frm, .par, .TRG, .TRN, 或 .isl后缀的文件移动到这个目录下。 (这些文件以前是用于存储元数据)

      backup_metadata_57目录中的文件保持这原来的系统文件层次。 例如,t1.frm是位于数据目录下的 my_schema1目录下, 服务器将它移动到backup_metadata_57/my_schema1目录。

    • mysql库中,服务器将eventproc 表重名为event_backup_57proc_backup_57

    如果这一步失败,服务器会回收对数据目录的所有改变。这种情况下,您应该移除所有的重做日志文件,用相同的数据目录启动MySQL 5.7服务器,然后修复出现的错误,然后再次对MySQL 5.7服务器执行缓慢关闭,然后再次尝试启动MySQL 8.0服务器。

  7. 成功启动MySQL 8.0 服务器后,执行 mysql_upgrade:

    mysql_upgrade -u root -p
    

    mysql_upgrade 会检查所有库下的所有表与当前版本的的兼容性。它会 对mysql 系统库进行一些修改,以至于我们可以使用新的权限系统和性能。 mysql_upgrade还会为MySQL 8.0引入性能模式 ,INFORMATION_SCHEMA,和sys 模式对象。

    提示

    如果运行的服务器是--gtid-mode=ON就不能使用 mysql_upgrade。参阅 GTID 模式和 mysql_upgrade 以获得更多信息。

    mysql_upgrade不会升级帮助表的内容,对于升级的说明,请参阅 5.1.10, “服务器端帮助”

  8. 关闭,然后重启MySQL服务器以确保对系统表的所有修改都生效。例如:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

    第一次启动MySQL 8.0服务器时,您可能会注意到,错误日志中写入了几行关于没有被升级的表的信息,如果 mysql_upgrade 已经更新成功了,那么下一次启动服务器时机不会出现了。

执行逻辑升级

本节描述如果执行 逻辑升级。在进行之前,回顾 开始之前,确保环境已经准备就绪。

提示

对于某些Linux平台,使用RPM 或 Debian包安装的MySQL,包括管理MySQL服务器启动关闭的系统命令。在这些平台上没有安装mysqld_safe。在这样的情况下,使用系统命令来启动和管理服务, 详情请参阅 2.5.9 节, “用系统命令管理MySQL服务器”

执行逻辑升级:

  1. 回顾在 2.10.1.1 节, “变化对MySQL 8.0降级的影响” 描述的,需要在升级之前执行的步骤。

  2. 在MySQL 5.7 服务器上,使用 mysqldump导出数据:

    mysqldump -u root -p
      --add-drop-table --routines --events --all-databases
      --ignore-table=mysql.innodb_table_stats
      --ignore-table=mysql.innodb_index_stats
      --force > data-for-upgrade.sql
    

    --routines--events 选项必须显示的给出,它们的作用是将存储程序和事件作为对象定义保存在dump文件中。不然,它们只会以记录的形式出现在 mysql.procmysql.event 表中,而这对于MySQL 8.0来说是没有用的。MySQL 8.0中的这些对象的定义是存储在数据字典中。

    您可以省略 --ignore-table 选项,但是在载入命令中你加入了 --force选项dump文件还是会转储这两个表 。 因此,在这种情况下,在加载这两个表时,做好会看见警告的心里准备,当然喽,可以不用理会这些警告。

  3. 关闭低版本的MySQL 服务器。如:

    mysqladmin -u root -p shutdown
    
  4. 安装MySQL 8.0,安装说明,参阅第 2章, 安装和升级MySQL.

  5. 初始化一个新的数据目录,如 2.9.1节, “初始化数据目录”中描述的。举个例子:

    mysqld --initialize --datadir=/path/to/8.0-datadir
    

    临时将'root'@'localhost'密码复制到您的屏幕上,或者将其写到您的笔记中,以便日后使用。

  6. 使用新的数据目录启动MySQL 8.0 服务器,如:

    mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir
    

    如果InnoDB 表空间加密了,使用--early-plugin-load 选项,载入密钥插件。

  7. 重置 root 密码:

    shell> mysql -u root -p
    Enter password: ****  <- enter temporary root password
    mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
    
  8. 载入之前创建的dump文件到新的MySQL服务器中。如:

    mysql -u root -p --force < data-for-upgrade.sql
    

    如果之前在 mysqldump命令中没有指定 --ignore-table选项来过滤mysql.eventmysql.proc 表,那么重载dump文件时会出现。

  9. 载入dump文件后,执行 mysql_upgrade:

    mysql_upgrade -u root -p
    

    mysql_upgrade 会检查所有库下的所有表与当前版本的的兼容性。它会 对mysql 系统库进行一些修改,以至于我们可以使用新的权限系统和性能。 mysql_upgrade还会为MySQL 8.0引入性能模式 ,INFORMATION_SCHEMA,和sys 模式对象。

    注意

    如果运行的服务器是--gtid-mode=ON就不能使用 mysql_upgrade。参阅 GTID 模式和 mysql_upgrade 以获得更多信息。

    mysql_upgrade不会升级帮助表的内容,对于升级的说明,请参阅 5.1.10, “服务器端帮助”

  10. 关闭,然后重启MySQL服务器以确保对系统表的所有修改都生效。举个例子:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir
    

升级故障处理

  • 如果出现问题,如, mysqld不能启动,检查一下,您是否使用的是一个旧的 my.cnf 文件,使用 --print-defaults 选项可以检查这个问题(举个例子 ,mysqld --print-defaults),如果此命令会显示是其他程序名,也就意味着您使用的 my.cnf文件无效,而它影响着服务器和客户端的操作。

  • 假如,升级后,您遇到编译后客户端程序问题,如Commands out of sync 或意外的内核转储, 您可能在编译程序的时候使用了旧的头文件或库文件。 这种情况下,检查 mysql.h文件和 libmysqlclient.a 库的日期,看是否是来源于新安装的MySQL。如果不是,重新使用新的头文件和库编译程序,如果库的主版本变了(举个例子,从libmysqlclient.so.15libmysqlclient.so.16),那么,重新编译时还需要将相应的共享客户端库进行编译。

  • 如果您创建了一个自定义函数,但是升级到的MySQL有一个内置的函数,与您的自定义函数同名,那么您的自定义函数就不能使用,修正这个问题的的方法,就是使用DROP FUNCTION删除这个自定义函数,然后用一个不冲突的名字,使用 CREATE FUNCTION 重建这个自定义函数。同理,存储过程的名字相同也类似这样处理。参阅 9.2.4节, “函数名分析和解析”中,服务器如何解析各种函数的引用的描述。

2.10.1.1 变化对MySQL 8.0升级的影响

在升级到MySQL 8.0之前,先回顾一下本节描述的变化,以确定适用于您当前安装的MySQL和应用程序的升级问题。

提示

除了本节描述的变化以外,可以回顾 发行说明 或其他在 开始之前中概述的重要信息。

被标记为已知问题不兼容变化的更改与MySQL早期版本的不兼容,以及在升级之前需要注意的地方。我们的目的就是避开这些变化,但,偶尔也有必要纠正一些比版本兼容性更槽糕的问题。如果您在升级过程中遇到涉及不兼容,需要特殊处理的问题,遵循下述中给出的关于不兼容的说明。有时候包括转储和重载表,或使用诸如CHECK TABLEREPAIR TABLE的语句。

关于dump和重载的说明,请参阅 2.10.3节, “重建或修复表和索引”。任何涉及到 REPAIR TABLE使用 USE_FRM 选项的程序 必须完成。使用这个语句由于和创建表时所在的MySQL的版本不同(意思是,升级到使用它),可能会损坏表。参阅  13.7.2.5 节, “REPAIR TABLE 语法”

数据字典变化

不兼容性变化: MySQL 8.0中将包含数据库对象信息的事务性表,合并到一个全局的数据字典中。由于在以前系列的MySQL中,字典数据是保存在元数据文件和非事务性系统表中,因此升级的过程与以往不同,所以需要在升级之前,检查特定的先决条件来验证升级的准备工作。 。更多信息,请参阅MySQL 5.7升级先决条件的验证。 一个启用了数据字典的服务器,常用操作的一些差异,请参阅 14.6 节, “数据字典使用的差异”

配置变化
  • 不兼容性变化:MySQL服务器不再提供一般分区支持,转而对分区的处理放在存储引擎级别。在MySQL 8.0 中 InnoDB是唯一一个能提供本地分区处理的存储引擎。( NDB 存储引擎同样可以提供本地分区支持,但是目前在MySQL 8.0中不支持它)。因此在服务器升级之前,用其他存储引擎创建分区表,必须修改或转换为 InnoDB, 或移除分区,否则就不能使用这个表。

    关于将MyISAM 表转换为 InnoDB表,请参阅 15.8.1.4 节, “将表从MyISAM转换为InnoDB”

    在MySQL 8.0 中,一个表的创建语句中使用的存储引擎不支持分区表,该表将创建失败,错误信息是 (ER_CHECK_NOT_IMPLEMENTED) 。 如果您将一个从MySQL 5.7(或,更低版本)中的dump文件使用 mysqldump导入一个MySQL 8.0服务器中,您必须确保创建分区表的任何语句中指定的存储引擎,没有不支持分区表的存储引擎。要么删除对分区表的应用,要么指定存储引擎为 InnoDB ,或者干脆将 InnoDB 设置为默认存储引擎。

    提示

    MySQL 5.7升级先决条件的验证中给出的过程,描述的是,在升级到MySQL 8.0之前,如何识别需要修的表。

    参阅 22.6.2 节, “与存储引擎相关的分区限制”, 获取更多信息。

  • 不兼容性变化: 几个服务器错误代码已不再使用,且被移除 (展示列表,参阅 MySQL 8.0 中移除的特性)。 所以针对其中任何一个测试的应用程序都应该进行更新。

InnoDB 变化
SQL 变化
  • 有些关键字可能在MySQL 8.0中保留,而在MySQL 5.7 中没有保留。参阅 9.3 节, “关键字和保留字”. 这可能导致先前用作标识符的单词变为非法的。使用标识符引用修正受影响的语句,参阅 9.2 节, “Schema对象名”

  • 升级后,建议在应用代码中指定hint来测试优化器,以确保代码中仍然需要这些hint来实现所需的优化策略。优化器的增强有时会是某些优化器hint变得不需要,在某些情况下,不需要的hint甚至可能产生相反的效果。

2.10.1.2 使用MySQL Yum 源升级MySQL

对于支持Yum的平台(请参阅 2.5.1 节, “在Linux上使用MySQL Yum 源安装MySQL”,一个列表) 您可以使用MySQL的YUM源执行原地升级(意思就是,覆盖低版本,然后使用低版本的数据文件运行高版本)

提示

  1. 选择一个目标发行系列

    默认情况下,在安装过程中MySQL Yum 源会将MySQL更新到您选择的发行系列中的最新的发行版(请参阅 选择一个发行系列获得更多信息), 这就意味着,例如,5.7.x不会自动更新到8.0.x。更新到另外一个发行系列,首先需要您禁用已选择(默认,或手动选择)系列的子仓库,同时启用目标系列的子仓库。 为了做到这一点,可以参阅 选择一个发行系列中给出的一般说明。 关于从MySQL 5.7 升级到 8.0,执行 选择一个发行系列步骤中插入的,禁用MySQL 5.7 系列字仓库和启用MySQL 8.0 系列子仓库的步骤。

    一般来说,要从一个发行版系列升级到另一个发行版系列,请先升级到下一个系列,逐步升级,而不是跳过一个系列。举个例子,假如您现在运行的是MySQL 5.6,并且想升级到8.0,那么在升级到8.0之前先升级到5.7。

    重要

    关于从MySQL 5.7升级8.0的信息,请参阅 从MySQL 5.7升级8.0

  2. 升级 MySQL

    对于未授权平台,使用下面命令升级MySQL机器组件:

    sudo yum update mysql-server
    

    未授权平台:

    sudo dnf upgrade mysql-server
    

    或者,您使用YUM升级系统上所有的,以此来升级MySQL,但是个需要较长的时间,对于未授权平台:

    sudo yum update
    

    未授权平台:

    sudo dnf upgrade
    

  3. 重启 MySQL

    使用yum更新了MySQL服务器后,通常会重启MySQL服务器,一旦重启了服务器,运行 mysql_upgrade 检查并可能解决旧数据与升级后的软件之间的不兼容性问题。 mysql_upgrade同样还会执行其他的功能;细节请参阅 4.4.5 节, “mysql_upgrade — 检查和升级MySQL表”

您也可以更新指定的组件,使用下面的命令列出MySQL组件的所有安装包, (对于未授权系统,在命令中使用dnf)代替 yum

sudo yum list installed | grep "^mysql"

确定了您所选择的组件的包后,对于未授权平台,使用下面命令更新包: package:

sudo yum update package-name

对于未授权平台:

sudo dnf upgrade package-name

升级共享客户端库

使用YUM库升级完MySQL后,原来高版本编译的应用程序的共享客户端库可以继续工作。

如果您如果您重新编译应用程序,然后使他们和更新后的库动态连接: 通常情况下,新版本的共享库会与旧版本之间存在差异,或添加了新旧版本的控制符。 (举个例子,相对于最新的版本, 标准的8.0共享客户端库,或老版本的,或Linux本身自带的共享库的衍生版,或其他来源。),所有用到 更新过的库 的应用程序都要重新编译,以及系统上那些依赖于新的共享库,而新共享库需要这些被更新过的库的应用程序。(PS :这个有点绕口) 而且,不出意外,如果这些库没有更新,那么需要用到这些库的应用程序将会失败,因此需要确保系统上已经覆盖了MySQL的共享库包。 您可以通过将MySQL的YUM库 添加到系统中(参见 添加 MySQL Yum 库),然后使用使用YUM安装附加的MySQL产品和组件中给出的说明,安装最新的共享库。

2.10.1.3 使用MySQL APT 源升级MySQL

在Debian 和 Ubuntu 平台上,您可以使用MySQL的 APT源执行原地升级,参阅 MySQL APT 源使用快速指南中的使用MySQL APT 源升级MySQL

2.10.降级 MySQL

本节描述如何降级到低版本的MySQL。

提示

在接下来的讨论中,必须使用具有管理权限的MySQL账户运行MySQL命令。其中包含 -u root,在命令行上指定MySQL root 用户,命令需要 root用户的密码,所以还可以在命令行上加上 -p 选项。因为-p可以不跟随值,这样的命令会有提示符。可以在提示符出现时输入密码,然后回车。

可以在mysql命令行客户端执行SQL语句(可以使用 root用户以确保有权限)。

降级方式

支持的降级方式有:

  • 原地降级:包括关闭高版本MySQL,使用低版本覆盖高版本MySQL二进制文件或包,然后使用当前的数据目录重启低版本的MySQL。原地降级支持同系列的稳定版之间。

  • 逻辑降级: 包括,使用 mysqldump从高版中dump所有表,然后加载到低版本中,逻辑降级支持同系列稳定版本之间和跨系列版本之间。

注意

用MySQL APT, SLES,和Yum 库方式安装的,不支持原地降级。

降级过程,请参阅执行原地降级, 和 执行逻辑降级

降级的路径

除非有其他的文档记录,否则支持以下的降级路径:

  • 所有的降级方式都支持从高版本系列降低到低版本系列。

  • 可以使用 逻辑降级方式降低一个发行级别。例如,从8.0降级到5.7。

  • 使用 逻辑降级 方法可以在相隔多个发布级别之间降级,但是只能每次降低一个级别,例如,您可以从8.0降级到5.7,然后降级到5.6。

以下条件适用于所有降级路径:

  • 支持稳定版(GA版)之间的降级。

  • 不支持两个里程碑版本之内降级的。例如,不支持从MySQL 8.0.1降级到MySQL 8.0.0,而且不管是不是稳定版。

开始之前

降级之前,推荐以下步骤:

  • 回顾 发行说明中您需要降级的MySQL版本,以确保此时没有您需要的特性或修复。

  • 回顾 2.10.2.1节, “变化对MySQL 8.0降级的影响”,这一节描述的是版本的变化,可能导致降级前后需要的一些操作。

    提示

    下面几节中描述的降级过程是,假设您使用高版本MySQL创建或修改的数据文件进行降级。而,如果您在升级后没有修改数据,那么建议您在升级到高版本MySQL之前使用备份进行降级,在 2.10.2.1 节, “变化对MySQL 8.0降级的影响”描述的许多更在降级之前或之后需要采取措施,而使用备份文件升级到高版本的MySQL之前,这些更改就没影响。

  • 可以备份当前的数据和日志文件来保护您的数据,备份应该包括mysql系统库, 这个库中包含了MySQL数据字典表和系统表。请参阅7.2 节, “数据库备份方式”

  • 使用了不被老版本支持的新特性,新配置选项或新配置选项值,可能会引起降级错误或失败,所以在降级之前,建议您将老版本不支持的都移除掉。

  • 如果你使用了InnoDB的XA事务,在升级前执行 XA RECOVER 来检查未提交的XA事务。如果返回结果,使用 XA COMMIT语句提交事务,或 XA ROLLBACK语句回滚事务。

执行原地降级

原地降级支持同系列的稳定版本之间的降级。开始之前,请回顾一下 开始之前

警告

对于MySQL 8.0版本系列中支持的降级路径,必须至少有两个MySQL 8.0 GA状态版本可用。

提示

对于某些Linux平台,使用RPM 或 Debian包安装的MySQL,包括管理MySQL服务器启动关闭的系统命令。在这些平台上没有安装 mysqld_safe。在这样的情况下,使用系统命令来启动和管理服务, 详情请参阅 2.5.9 节, “用系统命令管理MySQL服务器”

原地降级:

  1. 回顾在  2.10.2.1 节, “变化对MySQL 8.0降级的影响”降级之前需要执行的步骤的描述

  2. innodb_fast_shutdown 设置为 0使服务器执行缓慢关闭。例如:

    mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
    

    在缓慢关闭的情况下,InnoDB在关闭前执行完整purg和改变缓冲区合并,这样确保undo日志是空的,且数据文件都是完好的,以便应对版本之间的文件格式差异。

  3. 关闭高版本的服务器,例如:

    mysqladmin -u root -p shutdown
    
  4. 关闭服务器后,删除从数据目录中InnoDB的重做日志文件 (ib_logfile* 文件)以避免,降级后版本之间可能发生因重做日志文件格式相关的改变引起的问题。

    rm ib_logfile*
    
  5. 在原位置使用低版本替换二进制文件或包的形式来降级。

  6. 使用当前的数据目录,启动低版本的MySQL服务器,例如:

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    
  7. 运行 mysql_upgrade,例如:

    mysql_upgrade -u root -p
    

    mysql_upgrade 会基于当前的MySQL版本检查所有库下所有表的兼容性,并尝试修复有问题的表。

  8. 关闭或重启MySQL服务器以确保对服务器的任何改变都已经生效,例如:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
    

执行逻辑降级

逻辑降级支持同系列的版本之间的降级和跨版本降级。但是,降级只支持稳定版(GA)之间。在降级之前,请回顾一下 开始之前

提示

对于某些Linux平台,使用RPM 或 Debian包安装的MySQL,包括管理MySQL服务器启动关闭的系统命令。在这些平台上没有安装 mysqld_safe。在这样的情况下,使用系统命令来启动和管理服务, 详情请参阅 2.5.9 节, “用系统命令管理MySQL服务器”

对于使用MySQL APT, SLES, 和 Yum 库的安装方式,只支持降级到上一个版本级别。当初始化一个低版本的实例时,可以使用包管理工具来删除MySQL8.0包,并安装MySQL 5.7包。

执行逻辑降级:

  1. 回顾之前在 2.10.2.1节, “变化对MySQL 8.0降级的影响”中,降级前后需要执行的步骤中描述的变化。

  2. Dump所有的库,例如:

    mysqldump -u root -p
      --add-drop-table --routines --events
      --all-databases --force > data-for-downgrade.sql
    
  3. 关闭高版本的MySQL服务器。例如:

    mysqladmin -u root -p shutdown
    
  4. 使用一个新的数据目录初始化低版本的MySQL实例。例如:

    mysqld --initialize --user=mysql
    
  5. 用新的数据目录启动低版本的MySQL服务器,例如:

    mysqld_safe --user=mysql --datadir=/path/to/new-datadir
    
  6. 将dump文件加载到低版本的MySQL服务器中。例如:

    mysql -u root -p --force < data-for-upgrade.sql
    
  7. 运行mysql_upgrade。例如:

    mysql_upgrade -u root -p
    

    mysql_upgrade会基于当前的MySQL版本检查所有库下所有表的兼容性,并尝试修复有问题的表。

  8. 关闭或重启MySQL服务器以确保对服务器的任何改变都已经生效,例如:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/new-datadir
    

降级故障处理

如果您从一个版本降级到另外一个版本,可能在表的存储格式上存在兼容性,在这种情况,在降级之前使用 mysqldumpdump您的表,降级之后,再在 mysqlmysqlimport 中加载dump文件来重建您的表。例如: 2.10.4 节, “复制MySQL库到另外一台机”

当您降级时,一个向下兼容的表格式变化的典型症状是不能打开表。在这种情况下,使用以下步骤:

  1. 关闭低版本的MySQL服务器。

  2. 重启高版本MySQL服务器。

  3. 使用mysqldump 将高版本服务器上无法访问的表dump到文件中。

  4. 关闭高版本MySQL服务器,然后启动低版本的MySQL服务器。

  5. 将dump文件重载到低版本的服务器上。

2.10.2.1 变化对MySQL 8.0降级的影响

从MySQL 8.0 降级之前,回顾一下本节中描述的变化,某些变化可能需要在降级之前或之后进行相应的操作。

系统表变化
  • 在 MySQL 8.0.2中, the system tables in the mysql系统库中的系统表从各自单独的表空间文件,迁移到一个独立的表空间文件 (mysql.ibd)中。在降级到MySQL5.7之前,需要将这些 mysql系统表移回各自独立的表空间文件,使用下面语句可以做到:

    ALTER TABLE mysql.columns_priv TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.component TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.db TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.default_roles TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.engine_cost TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.func TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.general_log TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.global_grants TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.gtid_executed TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.help_category TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.help_keyword TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.help_relation TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.help_topic TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.innodb_index_stats TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.innodb_table_stats TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.plugin TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.procs_priv TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.proxies_priv TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.role_edges TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.server_cost TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.servers TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.slave_master_info TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.slave_relay_log_info TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.slave_worker_info TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.slow_log TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.tables_priv TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.time_zone TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.time_zone_leap_second TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.time_zone_name TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.time_zone_transition TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.time_zone_transition_type TABLESPACE=innodb_file_per_table;
    ALTER TABLE mysql.user TABLESPACE=innodb_file_per_table;  
    
  • 在MySQL 8.0.2,有6个系统表从 MyISAM 变为 InnoDB,所以在降级到MySQL 5.7之前,使用下面语句要将每个表变回 MyISAM

    ALTER TABLE mysql.columns_priv ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT
    ALTER TABLE mysql.db ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT;
    ALTER TABLE mysql.procs_priv ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT;
    ALTER TABLE mysql.proxies_priv ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT;
    ALTER TABLE mysql.tables_priv ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT;
    ALTER TABLE mysql.user ENGINE='MyISAM' STATS_PERSISTENT=DEFAULT;
    
  • 在 MySQL 8.0.2, 中 mysql.user 表增加了两个列,所以在降级到MySQL 5.7前,使用下面的语句移除这两个列:

    ALTER TABLE mysql.user drop Create_role_priv;
    ALTER TABLE mysql.user drop Drop_role_priv;
    
InnoDB 变化

2.10.重建或修复表或索引

本节描述如何重建或修复表或索引。这可能需要:

  • MySQL处理数据类型或字符集的变化。例如,由于修正了校对中的错误,使得需要重建表来更新列上的索引。

  • CHECK TABLE, mysqlcheck,或 mysql_upgrade反馈需要修复表。

重建表的方式包括:

Dump 和 Reload 方法

如果您是因为在二进制(原地)升级或降级之后,不同版本的MySQL无法处理它们而重建表,那么您必须使用转储和重载的方法。在升级或降级MySQL之间,先将转储表,然后在升级或降级之后重载表。

如果您只是为了重建索引而使用转储和重载的方法重建表,那么不管是升级前后还是降级前后,最后都需要重载数据。

如果您是因为CHECK TABLE操作显示需要升级表而重建一个InnoDB 表,可以使用 mysqldump 来创建一个dump文件,然后在 mysql 重载这个文件。如果 CHECK TABLE 操作显示存在损坏或导致 InnoDB失败的原因,参考 15.20.2 节, “强制InnoDB恢复” 中的使用 innodb_force_recovery 选项来重启InnoDB的相关信息。 而对于认识CHECK TABLE 可能遇见的错误类型,请参考 13.7.2.2 节, “CHECK TABLE Syntax”中的 InnoDB 注释。

可以使用导出导入的方式重建一个表,使用 mysqldump创建一个dump文件,然后 mysql载入这个文件:

mysqldump db_name t1 > dump.sql
mysql db_name < dump.sql

重建一个库中所有的表,指定库名,不需指定表名:

mysqldump db_name > dump.sql
mysql db_name < dump.sql

重建所有库中所有的表,使用 --all-databases 选项:

mysqldump --all-databases > dump.sql
mysql < dump.sql

ALTER TABLE 方法

使用ALTER TABLE重建一个表时,使用null 修改,也就是说,一个 ALTER TABLE 语句将表 变为一个它已经在使用的存储引擎。 如果 t1 是一个InnoDB 表,使用这个语句:

ALTER TABLE t1 ENGINE = InnoDB;

如果你在 ALTER TABLE 语句中不确定使用哪个存储引擎,可以使用 SHOW CREATE TABLE来显示表的定义。

REPAIR TABLE 方法

REPAIR TABLE 方法只适用于MyISAM, ARCHIVE, 以及 CSV 表。

如果表检查操作显示存在一个损坏或需要进行升级,您可以使用REPAIR TABLE 。例如,修复一个MyISAM 表,使用这个语句:

REPAIR TABLE t1;

mysqlcheck --repairREPAIR TABLE语句提供在命令行的入口,这可能更方便修复表,因为您可以使用 --databases--all-databases选项来修复特定库中所有的表或所有的库:

mysqlcheck --repair --databases db_name ...
mysqlcheck --repair --all-databases

2.10.4 复制MySQL数据库到其它机器上

有时候您需要将数据库迁移到不同架构的平台上,这时您可以使用 mysqldump 来创建一个含有SQL语句的文件,然后将这个文件传递到其它平台,然后使用输入到 mysql客户端。

使用mysqldump --help可以看到有哪些可用选项。

最早(尽管不是最快的)的方式,将一个数据库迁移到不同的主机上,就是在数据库本地运行下面的命令:

mysqladmin -h 'other_hostname' create db_name
mysqldump db_name | mysql -h 'other_hostname' db_name

如果您想要通过慢速网络从远程机器上复制数据库,可以使用以下命令:

mysqladmin create db_name
mysqldump -h 'other_hostname' --compress db_name | mysql db_name

您同样还可以将dump保存为一个文件,再将这个文件传输到目标机器上,然后将文件载入机器上的数据库中。举个例子,您可以源端将一个库dump为一个压缩文件,像这样:

mysqldump --quick db_name | gzip > db_name.gz

将包含数据内容的文件传输到目标机器上,然后运行下面命令:

mysqladmin create db_name
gunzip < db_name.gz | mysql db_name

您同样还可以使用mysqldumpmysqlimport 来迁移数据库。对于大表,这比简单的使用 mysqldump会更快。 下面的命令 DUMPDIR表示目录的全路径名,用来存放 mysqldump的输出。

第一步,为输出文件创建一个目录,然后dump出数据库:

mkdir DUMPDIR
mysqldump --tab=DUMPDIR db_name

DUMPDIR目录中的文件传输到目标机器上的相应目录下,然后将文件加载到MySQL中:

mysqladmin create db_name           # 创建库
cat DUMPDIR/*.sql | mysql db_name   # 在库中创建表
mysqlimport db_name DUMPDIR/*.txt   # 向表中加载数据

别忘了复制mysql库,因为里面有权限表。您还可能需要在新的机器上用MySQL的root用户运行命令,直到在相应的位置有了mysql库。

当您将mysql 数据库导入新的机器上,然后执行 mysqladmin flush-privileges 以至于当前服务器可以重载权限表的信息。

2.11 Perl 安装注意事项

Perl的DBI 模块为数据库的访问提供了一个通用接口,您可以编写一个DBI 脚本,在不做修改的情况下,这个脚本可以在不同的数据库引擎上工作。要想要使用DBI,那么您必须安装 DBI 模块,以及(DBD)模块,它是访问各种类型数据库的数据库驱动器。对于MySQL而言,这个驱动器就是DBD::mysql

提示

发行版MySQL没有包含Perl。 您可以从 http://search.cpan.org 来获得Unix上必要的模块,或使用Windows上的 ActiveState ppm程序,下面描述如何做到这一点。

DBI/DBD 接口需要Perl 5.6.0、 5.6.1 或更高版本。如果在很低版本的Perl下,DBI 不起作用 ,您应该使用 DBD::mysql 4.009 或更高版本。尽管可以使用早期版本,但是它们不能完全兼容MySQL 8.0。

2.11.1 在Unix上安装Perl

要使用MySQL Perl,就需要安装MySQL客户端程序支持(库和头文件)。 大多数的安装方式都是安装必要的文件,如果您在Linux上使用RPM文件安装,那么请确保安装的是 developer RPM,因为客户端程序是在RPM中,而客户端程序支持是在developer RPM中。

可以从CPAN(Comprehensive Perl Archive Network) http://search.cpan.org获得所需的Perl支持文件。

在Unix上安装Perl模块最简单的方法就是使用 CPAN,例如:

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

DBD::mysql的安装会进行很多测试,这些测试会使用默认的用户和密码连接到本地的MySQL服务器。(Unix上的默认用户名是您的登录名,而在Windows上是 ODBC,默认密码是no password.) 如果使用这些默认值不能连接到服务器(如, 如果您的账户有密码), 这些测试会失败。当然您可以使用 force install DBD::mysql来忽略失败的测试。

DBI 需要Data::Dumper 模块,所以在需要在安装DBI之前安装它。

有可能您下载的是tar压缩文件,那么就需要手工的安装这个模块。流程如下:

  1. 将安装包解压到相应的目录下:

    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -
    

    此命令是创建一个名为 DBI-VERSION的目录。

  2. 切换到解压后的目录:

    shell> cd DBI-VERSION
    
  3. 构建和编译:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

make test命令比较重要,因为它可以验证模块是否可以正常工作。注意,在安装过程中运行这个命令时,MySQL服务器必须是运行的,否则,测试就会失败!

最好是在安装新版本的MySQL时,重新安装发行版的 DBD::mysql,这样就可以保证MySQL客户端库安装的是最新版本的。

如果您没有权限安装Perl模块,或者您想使用本地文件安装Perl模块,,这里的参考资料可能有用 http://learn.perl.org/faq/perlfaq8.html#How-do-I-keep-my-own-module-library-directory-

2.11.2 在Windows上安装ActiveState Perl

在 Windows系统上,您应该按照下面流程来安装带有ActiveState Perl的MySQL DBD 模块:

  1. http://www.activestate.com/Products/ActivePerl/ 获得ActiveState Perl ,并安装它。

  2. 打开一个控制台窗口。

  3. 如果有必须要的话,可以设置HTTP_proxy 变量。 如:您可以试试这样的设置:

    C:\> set HTTP_proxy=my.proxy.com:3128
    
  4. 启动PPM 程序:

    C:\> C:\perl\bin\ppm.pl
    
  5. 如果您之前没有做过这些,请安装 DBI:

    ppm> install DBI
    
  6. 如果这一步成功了,然后运行下面的命令:

    ppm> install DBD-mysql
    

上面的流程适用于ActiveState Perl 5.6 或更高版本。

如果上面所做的还是不能正常工作,您可以安装 ODBC 驱动来替代,然后通过ODBC连接MySQL服务器:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

2.11.3 Perl DBI/DBD 接口使用问题

如果Perl反馈找不到 ../mysql/mysql.so 模块,问题可能是Perl找不到 libmysqlclient.so 共享库。您可以使用下面其中一种方式修复这个问题:

  • 复制 libmysqlclient.so 到公共库文件目录下(可能是 /usr/lib/lib)。

  • 修改 DBD::mysql 编译中使用的-L选项,以反映 libmysqlclient.so的实际位置。

  • 在Linux系统上,您可以在 /etc/ld.so.conf 文件中添加 libmysqlclient.so 的路径名。

  • LD_RUN_PATH 环境变量上添加libmysqlclient.so的路径名。有些系统使用LD_LIBRARY_PATH 来代替。

注意,如果连接器没有找到其它库,您还是需要修改-L选项。例如连接器找不到 libc,因为它在/lib下。并且连接命令指定的是-L/usr/lib,所以改变 -L/lib-L选项,或者将 -L/lib 添加到现有的命令中。

如果您从 DBD::mysql得到下面的错误,您可能是使用了 gcc (或使用 gcc编译了旧的版本):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

在构建mysql.so库时,将-L/usr/lib/gcc-lib/... -lgcc添加到命令中 (当您编译Perl客户端时,检查一下 mysql.somake时输出的信息)。 The -L 选项需要指定libgcc.a在系统上的路径名。

另一个原因可能是Perl 和 MySQL 都不是gcc编译的。 可以同时都是用 gcc编译来解决此问题。