第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适用于Windows的MySQL安装程序
2.3.4 MySQL通知程序
2.3.5使用 noinstall ZIP存档 在Microsoft Windows上安装MySQL
2.3.6 Microsoft Windows MySQL服务器安装疑难解答
2.3.7 Windows安装后程序
2.4在macOS上安装MySQL
2.4.1在macOS上安装MySQL的一般注意事项
2.4.2使用本机软件包在macOS上安装MySQL
2.4.3安装和使用MySQL启动守护进程
2.4.4安装和使用MySQL首选项窗格
2.5在Linux上安装MySQL
2.5.1使用MySQL Yum存储库在Linux上安装MySQL
2.5.2使用MySQL APT存储库在Linux上安装MySQL
2.5.3使用MySQL SLES存储库在Linux上安装MySQL
2.5.4使用Oracle的RPM软件包在Linux上安装MySQL
2.5.5使用Oracle的Debian软件包在Linux上安装MySQL
2.5.6使用Docker在Linux上部署MySQL
2.5.7从本地软件存储库在Linux上安装MySQL
2.5.8使用Juju在Linux上安装MySQL
2.5.9使用systemd管理MySQL服务器
2.6使用坚不可摧的Linux网络(ULN)安装MySQL
2.7在Solaris上安装MySQL
2.7.1使用Solaris PKG在Solaris上安装MySQL
2.8在FreeBSD上安装MySQL
2.9从源安装MySQL
2.9.1源安装的MySQL布局
2.9.2使用标准源分发安装MySQL
2.9.3使用开发源树安装MySQL
2.9.4 MySQL源配置选项
2.9.5处理编译MySQL的问题
2.9.6 MySQL配置和第三方工具
2.9.7生成MySQL Doxygen文档内容
2.10安装后设置和测试
2.10.1初始化数据目录
2.10.2启动服务器
2.10.3测试服务器
2.10.4保护初始MySQL帐户
2.10.5自动启动和停止MySQL
2.11升级MySQL
2.11.1开始之前
2.11.2升级路径
2.11.3 MySQL升级过程升级的内容
2.11.4 MySQL 8.0的变化
2.11.5准备升级安装
2.11.6在Unix / Linux上升级MySQL二进制或基于包的安装
2.11.7使用MySQL Yum存储库升级MySQL
2.11.8使用MySQL APT存储库升级MySQL
2.11.9使用MySQL SLES存储库升级MySQL
2.11.10在Windows上升级MySQL
2.11.11升级MySQL的Docker安装
2.11.12升级故障排除
2.11.13重建或修复表或索引
2.11.14将MySQL数据库复制到另一台机器
2.12降级MySQL
2.13 Perl安装说明
2.13.1在Unix上安装Perl
2.13.2在Windows上安装ActiveState Perl
2.13.3使用Perl DBI / DBD接口的问题

本章介绍如何获取和安装MySQL。 以下是程序的摘要,后面的部分提供了详细信息。 如果您计划将现有版本的MySQL升级到较新版本而不是首次安装MySQL,请参见 第2.11节“升级MySQL” ,了解有关升级过程以及升级前应考虑的问题的信息。

如果您有兴趣从其他数据库系统迁移到MySQL,请参见 第A.8节“MySQL 8.0常见问题解答:迁移” ,其中包含有关迁移问题的一些常见问题的答案。

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

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

    请注意,并非所有平台都适用于运行MySQL,并且并非所有运行MySQL的平台都由Oracle Corporation正式支持。 有关官方支持的平台的信息,请参阅 MySQL网站上的 https://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. 安装发行版。

    要从二进制发行版安装MySQL,请使用 第2.2节“在Unix / Linux上使用通用二进制文件安装MySQL”中的说明

    要从源代码分发版或当前开发源代码树 安装MySQL ,请使用 第2.9节“从源代码安装MySQL”中的说明

  5. 执行任何必要的安装后设置。

    安装MySQL后,请参见 第2.10节“安装后设置和测试” 以获取有关确保MySQL服务器正常工作的信息。 另请参阅 第2.10.4节“保护初始MySQL帐户”中提供的信息 本节介绍如何保护初始MySQL root 用户帐户, 帐户 在分配 密码 之前 没有密码 无论您是使用二进制文件还是源代码分发安装MySQL,本节均适用。

  6. 如果要运行MySQL基准脚本脚本,必须提供对MySQL的Perl支持。 请参见 第2.13节“Perl安装说明”

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

2.1一般安装指南

以下部分包含选择,下载和验证您的分发所需的信息。 本章后面部分中的说明介绍了如何安装所选的发行版。 对于二进制发行版,请参见 第2.2节“在Unix / Linux上使用通用二进制文件安装MySQL”中的说明 或适用于您的平台的相应部分(如果有)。 要从源代码构建MySQL,请使用 第2.9节“从源代码安装MySQL”中的说明

2.1.1要安装的MySQL版本和分发版本

MySQL可在许多操作系统和平台上使用。 有关官方支持的平台的信息,请参阅 MySQL网站上的 https://www.mysql.com/support/supportedplatforms/database.html

准备安装MySQL时,请确定要使用的版本和分发格式(二进制文件或源代码)。

首先,决定是安装开发版本还是通用可用性(GA)版本。 开发版本具有最新功能,但不建议用于生产。 GA版本,也称为生产版或稳定版,适用于生产用途。 我们建议使用最新的GA版本。

MySQL 8.0中的命名方案使用由三个数字和一个可选后缀组成的版本名称(例如, mysql-8.0.1-dmr )。 版本名称中的数字解释如下:

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

  • 第二个数字( 0 )是次要版本号。 总的来说,主要和次要数字构成了发行系列号。 序列号描述了稳定的功能集。

  • 第三个数字( 1 )是发行系列中的版本号。 对于每个新的错误修复版本,这都会增加。 在大多数情况下,系列中的最新版本是最佳选择。

版本名称还可以包含后缀以指示版本的稳定性级别。 通过一组后缀在一系列进程中释放,以指示稳定性级别如何提高。 可能的后缀是:

  • dmr 表示开发里程碑版本(DMR)。 MySQL开发使用里程碑模型,其中每个里程碑都引入了一小部分经过全面测试的功能。 从一个里程碑到下一个里程碑,根据尝试这些早期版本的社区成员提供的反馈,功能界面可能会发生变化,甚至可能会删除功能。 里程碑版本中的功能可被视为具有预生产质量。

  • rc 表示候选发布者(RC)。 通过MySQL的所有内部测试后,发布候选版本被认为是稳定的。 RC版本中可能仍会引入新功能,但重点转移到修复错误以稳定系列早期介绍的功能。

  • 缺少后缀表示一般可用性(GA)或生产版本。 GA版本是稳定的,已成功通过早期版本阶段,并且被认为是可靠的,没有严重的错误,并且适用于生产系统。

系列中的开发始于DMR版本,随后是RC版本,最后达到GA状态版本。

选择要安装的MySQL版本后,确定要为您的操作系统安装哪种分发格式。 对于大多数用例,二进制分发是正确的选择。 对于许多平台,二进制发行版以本机格式提供,例如Linux的RPM软件包或OS X的DMG软件包。分发版也可以采用更通用的格式,例如Zip存档或压缩的 tar 文件。 在Windows上,您可以使用 MySQL安装程序 来安装二进制分发版。

在某些情况下,最好从源代码发行版安装MySQL:

  • 您想在某个显式位置安装MySQL。 标准二进制发行版已准备好在任何安装位置运行,但您可能需要更灵活地将MySQL组件放置在您想要的位置。

  • 您希望 使用可能未包含在标准二进制分发版中的功能 来配置 mysqld 以下是用于确保功能可用性的最常见附加选项列表:

    有关其他信息,请参见 第2.9.4节“MySQL源配置选项”

  • 您希望在 没有标准二进制分发版中包含的某些功能的情况下 配置 mysqld

  • 您想要读取或修改构成MySQL的C和C ++代码。 为此,获取源分发。

  • 源代码分发包含比二进制分发更多的测试和示例。

2.1.2如何获取MySQL

有关当前MySQL版本和下载说明的信息 访问 https://dev.mysql.com/downloads/上 的下载页面 有关MySQL下载镜像站点的完整最新列表,请参阅 https://dev.mysql.com/downloads/mirrors.html 您还可以在那里找到有关成为MySQL镜像站点以及如何报告错误或过时镜像的信息。

对于使用Yum作为其包管理系统的基于RPM的Linux平台,可以使用 MySQL Yum Repository 安装 MySQL 有关详细信息 请参见 第2.5.1节“使用MySQL Yum存储库在Linux上安装MySQL”

对于基于Debian的Linux平台,可以使用 MySQL APT Repository 安装 MySQL 有关详细信息 请参见 第2.5.2节“使用MySQL APT存储库在Linux上安装MySQL”

对于SUSE Linux Enterprise Server(SLES)平台,可以使用 MySQL SLES存储库 安装 MySQL 有关详细信息 请参见 第2.5.3节“使用MySQL SLES存储库在Linux上安装MySQL”

要获取最新的开发源,请参见 第2.9.3节“使用开发源树安装MySQL”

2.1.3使用MD5校验和或GnuPG验证程序包完整性

下载适合您需要的MySQL软件包之后,在尝试安装之前,请确保它完好无损且未被篡改。 有三种完整性检查方法:

  • MD5校验和

  • 使用 GnuPG GNU Privacy Guard的 加密签名

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

以下部分描述了如何使用这些方法。

如果您注意到MD5校验和或GPG签名不匹配,请首先尝试再次下载相应的程序包,可能是从另一个镜像站点下载。

2.1.3.1验证MD5校验和

下载MySQL软件包后,应确保其MD5校验和与MySQL下载页面上提供的校验和匹配。 每个包都有一个单独的校验和,您可以根据下载的包进行验证。 每个MySQL产品的下载页面上都列出了正确的MD5校验和,您将把它与您下载的文件(产品)的MD5校验和进行比较。

每个操作系统和设置都提供了自己的工具版本,用于检查MD5校验和。 通常,该命令名为 md5sum ,或者可能命名为 md5 ,而某些操作系统根本不发送它。 在Linux上,它是 GNU Text Utilities 包的一部分,可用于各种平台。 您也可以从 http://www.gnu.org/software/textutils/ 下载源代码 如果安装了OpenSSL,则可以使用命令 openssl md5 package_name 可以从中 获得 md5 命令行实用程序的 Windows实现 http://www.fourmilab.ch/md5/ winMd5Sum 是一个图形化的MD5检查工具,可以从 http://www.nullriver.com/index/products/winmd5sum 获得 我们的Microsoft Windows示例将采用名称 md5.exe

Linux和Microsoft Windows示例:

外壳> md5sum mysql-standard-8.0.18-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945 mysql-standard-8.0.18-linux-i686.tar.gz
外壳> md5.exe mysql-installer-community-8.0.18.msi
aaab65abbec64d5e907dcd41b8699945 mysql-installer-community-8.0.18.msi

您应该验证生成的校验和(十六进制数字的字符串)是否与相应程序包正下方的下载页面上显示的校验和相匹配。

注意

确保验证的校验和 存档文件 (例如 .zip .tar.gz .msi 文件),并没有被包含在存档内的文件。 换句话说,在提取其内容之前验证该文件。

2.1.3.2使用GnuPG进行签名检查

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

我们使用 GnuPG (GNU Privacy Guard) 签署MySQL可下载软件包 GnuPG Phil Zimmermann 着名的Pretty Good Privacy( PGP )的 开源替代品 大多数Linux发行版 默认安装了 GnuPG 否则,请参阅 http://www.gnupg.org/ 以获取有关 GnuPG 以及如何获取和安装它的 更多信息

要验证特定包的签名,首先需要获取我们的公共GPG构建密钥的副本,您可以从 http://pgp.mit.edu/ 下载该密钥 您要获取的密钥已命名 mysql-build@oss.oracle.com 或者,您可以直接从以下文本复制并粘贴密钥:

-----开始PGP公共钥匙块-----
版本:GnuPG v1

mQGiBD4 + owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH / nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96 + OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA / BThQoADgj8AW6 / 0Lo7V1W9 / 8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1 + iSiunZMYD1WufeXfshc57S / + yeJkegNW
hxwR9pRWVArNYJdDRT + rf2RUe3vpquKNQU / hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP / Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw + UNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6 // 62zQJ7Q2TXlTUUwgUmVs
ZWFzZSBFbmdpbmVlcmluZyA8bXlzcWwtYnVpbGRAb3NzLm9yYWNsZS5jb20 + iGwE
ExECACwCGyMCHgECF4ACGQEGCwkIBwMCBhUKCQgCAwUWAgMBAAUCXEBY + wUJI87e
5AAKCRCMcY07UHLh9RZPAJ9uvm0zlzfCN + DHxHVaoFLFjdVYTQCfborsC9tmEZYa
whhogjeBkZkorbyIaQQTEQIAKQIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAhkB
BQJTAdRmBQkaZsvLAAoJEIxxjTtQcuH1X4MAoKNLWAbCBUj96637kv6Xa / fJuX5m
AJwPtmgDfjUe2iuhXdTrFEPT19SB6ohmBBMRAgAmAhsjBgsJCAcDAgQVAggDBBYC
AwECHgECF4AFAk53PioFCRP7AhUACgkQjHGNO1By4fUmzACeJdfqgc9gWTUhgmcM
AOmG4RjwuxcAoKfM + U8yMOGELi + TRif7MtKEms6piGkEExECACkCGyMGCwkIBwMC
BBUCCAMEFgIDAQIeAQIXgAIZAQUCUZSROgUJFTchqgAKCRCMcY07UHLh9YtAAJ9X
RA / ymlmozPZn + A9ls8 / uwMcTsQCfaQMNq1dNkhH2kyByc3Rx9 / W2xfqJARwEEAEC
AAYFAlAS6 + UACgkQ8aIC + GoXHivrWwf / dtLk / X + NC2VMDlg + vOeM0qgG1IlhXZfi
NsEisvvGaz4m8fSFRGe + 1bvvfDoKRhxiGXU48RusjixzvBb6KTMuY6JpOVfz9Dj3
H9spYriHa + i6rYySXZIpOhfLiMnTy7NH2OvYCyNzSS / ciIUACIfH / 2NH8zNT5CNF
1uPNRs7HsHzzz7pOlTjtTWiF4cq / Ij6Z6CNrmdj + SiMvjYN9u6sdEKGtoNtpycgD
5HGKR + I7Nd / 7v56yhaUe4FpuvsNXig86K9tI6MUFS8CUyy7Hj3kVBZOUWVBM053k
nGdALSygQr50DA3jMGKVl4ZnHje2RVWRmFTr5YWoRTMxUSQPMLpBNIkBHAQQAQIA
BgUCU1B + vQAKCRAohbcD0zcc8dWwCACWXXWDXIcAWRUw + j3ph8dr9u3SItljn3wB
c7clpclKWPuLvTz7lGgzlVB0s8hH4xgkSA + zLzl6u56mpUzskFl7f1I3Ac9GGpM4
0M5vmmR9hwlD1HdZtGfbD + wkjlqgitNLoRcGdRf / + U7x09GhSS7Bf339sunIX6sM
gXSC4L32D3zDjF5icGdb0kj + 3lCrRmp853dGyA3ff9yUiBkxcKNawpi7Vz3D2ddU
pOF3BP + 8NKPg4P2 + srKgkFbd4HidcISQCt3rY4vaTkEkLKg0nNA6U4r0YgOa7wIT
SsxFlntMMzaRg53QtK0 + YkH0KuZR3GY8B7pi + tlgycyVR7mIFo7riQEcBBABCAAG
BQJWgVd0AAoJEEZu4b / gk4UKk9MH / Rnt7EccPjSJC5CrB2AU5LY2Dsr + PePI2ubP
WsEdG82qSjjGpbhIH8LSg / PzQoGHiFWMmmZWJktRT + dcgLbs3b2VwCNAwCE8jOHd
UkQhEowgomdNvHiBHKHjP4 / lF68KOPiO / 2mxYYkmpM7BWf3kB57DJ5CTi3 / JLoN7
zF40qIs / p09ePvnwStpglbbtUn7XPO + 1 / Ee8VHzimABom52PkQIuxNiVUzLVn3bS
Wqrd5ecuqLk6yzjPXd2XhDHWC9Twpl68GePru6EzQtusi0m6S / sHgEXqh / IxrFZV
JlljF75JvosZq5zeulr0i6kOij + Y1p6MFffihITZ1gTmk + CLvK2JASIEEAECAAwF
Ak53QS4FAwASdQAACgkQlxC4m8pXrXwJ8Qf /是/ UO9mqfoc2sMyhwMpN4 / fdBWwf
LkA12FXQDOQMvwH9HsmEjnfUgYKXschZRi + DuHXe1P7l8G2aQLubhBsQf9ejKvRF
TzuWMQkdIq + 6Koulxv6ofkCcv3d1xtO2W7nb5yxcpVBPrRfGFGebJvZa58DymCNg
yGtAU6AOz4veavNmI2 + GIDQsY66 + tYDvZ + CxwzdYu + HDV9HmrJfc6deM0mnBn7SR
jqzxJPgoTQhihTav6q / R5 / 2p5NvQ / H84OgS6GjosfGc2duUDzCP / kheMRKfzuyKC
OHQPtJuIj8 ++ gfpHtEU7IDUX1So3c9n0PdpeBvclsDbpRnCNxQWU4mBot4kBIgQQ
AQIADAUCToi2GQUDABJ1AAAKCRCXELibyletfLZAB / 9oRqx + NC98UQD / wlxCRytz
VI / MuPnbgQUPLHEap10tvEi33S / H / XDR / tcGofY4cjAvo5skZXXeWq93Av7PACUb
zkg0X0eSr2oL6wy66xfov72AwSuX + iUK68qtKaLqRLitM02y8aNRV / ggKvt7UMvG
mOvs5yLaYlobyvGaFC2ClfkNOt2MlVnQZCmnYBCwOktPGkExiu2yZMifcYGxQcpH
KVFG59KeF2cM2d4xYM8HJqkSGGW306LFVSyeRwG + wbttgLpD5bM / T2b3fF / J35ra
CSMLZearRTq8aygPl + XM7MM2eR946aw6jmOsgNBErbvvIdQj6LudAZj + 8imcXV2K
iQEiBBABAgAMBQJOmdnRBQMAEnUAAAoJEJcQuJvKV618AvIIAIEF1ZJ + Ry7WOdKF
5oeQ / ynaYUigzN92fW / 9zB8yuQlngkFJGidYMbci1tR1siziIVJFusR3ZonqAPGK
/ SUta9Y6KWLhmc7c5UnEHklq / NfdMZ2WVSIykXlctqw0sbb + z1ecEd4G8u9j5ill
MO1B36rQayYAPoeXLX8dY4VyFLVGaQ00rWQBYFZrpw16ATWbWGJP332NSfCk4zZq
6kXEW07q0st3YBgAAGdNQyEeZCa4d4pBRSX6189Kjg6GDnIcaiOF6HO6PLr9fRlL
r5ObCgU + G9gEhfiVwDEV9E + 7 / Bq2pYZ9whhkBqWQzdpXTNTM24uaEhE01EPO5zeC
O214q6mJASIEEAECAAwFAk6rpgEFAwASdQAACgkQlxC4m8pXrXzAhwf / f9O99z16
3Y5FZVIxexyqXQ / Mct9uKHuXEVnRFYbA49dQLD4S73N + zN7gn9jFeQcBo4w8qVUV
94U / TA / VbLkdtNREyplPM4XY8YE5Wfd9bfyg3q1PbEiVjk995sBF + 2 + To99YYKst
gXPqjlH0jUfEyDmexOj + hsp8Rc63kvkIx36VBa4ONRYFefGAhKDMigL2YAhc1UkG
tkGTuLmlCGwIV6lviDZD3RJf5375VFnaHv7eXfwQxCwE + BxG3CURrjfxjaxMTmMP
yAG2rhDp5oTUEvqDYNbko5UxYOmrSjvF4FzXwqerElXJUkUzSh0pp7RxHB / 1lCxD
s7D1F1hlgFQuNIkBIgQQAQIADAUCTrzZHAUDABJ1AAAKCRCXELibyletfMUpB / 4S
07dREULIBnA1D6qr3fHsQJNZqbAuyDlvgGGLWzoyEDs + 1JMFFlaa + EeLIo1386GU
2DammDC23p3IB79uQhJeD2Z1TcVg4cA64SfF / CHca5coeRSrdAiudzU / cgLGtXIP
/ OaFamXgdMxAhloLFbSHPCZkyb00phVa8 + xeIVDrK1HByZsNIXy / SSK8U26S2PVZ
2o14fWvKbJ1Aga8N6DuWY / D8P2mi3RAbiuZgfzkmKL5idH / wSKfnFKdTgJzssdCc
1jZEGVk5rFYcWOrJARHeP / tsnb / UxKBEsNtO7e3N2e / rLVnEykVIO066hz7xZK / V
NBSpx3k3qj4XPK41IHy2iQEiBBABAgAMBQJOzqO8BQMAEnUAAAoJEJcQuJvKV618
2twH / 0IzjXLxN45nvIfEjC75a + i9ZSLlqR8lsHL4GpEScFKI0a0lT4IVAIY2RKG +
MAs2eHm0UfKuwGs5jluRZ9RqKrc61sY0XQV9 / 7znY9Db16ghX04JjknOKs / fPi87
rvKkB / QxJWS8qbb / erRmW + cPNjbRxTFPS5JIwFWHA16ieFEpvdAgKV6nfvJVTq1r
jPDcnIA9CJN2SmUFx9Qx3SRc6ITbam1hjFnY6sCh6AUhxLI2f1mq1xH9PqEy42Um
68prRqTyJ7Iox1g / UDDkeeUcAg7T1viTz7uXpS3Wrq4zzo4yOpaJfLDR3pI5g2Zk
SNGTMo6aySE4OABt8i1Pc1Pm6AmJASIEEAECAAwFAk7yPFYFAwASdQAACgkQlxC4
m8pXrXzXiAf9FrXe0lgcPM + tYOWMLhv5gXJi2VUBaLxpyRXm / kJcmxInKq1GCd3y
D4 / FLHNu3ZcCz / uklPAbZXWI0O6ewq0LWsRtklmJjWiedH + hGyaTv95VklojRIBd
8nBaJ6M98rljMBHTFwWvjQFVf4FLRJQZqHlvjcCkq2Dd9BWJpGXvr / gpKkmMJYNK
/ ftfZRcChb35NI19WRpOhj9u808OPcqKVvZBcPwFGV5cEBzmAC94J7JcD8 + S8Ik8
iUJMQGGL3QcmZOBozovh86hj7KTSEBHlLXl832z89H1hLeuLbnXoGLv3zeUFSxkv
1h35LhZLqIMDQRXLuUzxGHMBpLhPyGWRJ4kBIgQQAQIADAUCTwQJFwUDABJ1AAAK
CRCXELibyletfABvB / 9Cy69cjOqLGywITs3Cpg // 40jmdhSAVxilJivP6J5bubFH
DJlVTx541Dv5h4hTG2BQuueQ4q1VCpSGW + rHcdhPyvmZGRz1rxdQQGh1Dv0Bod2c
3PJVSYPSrRSwCZJkJHOtVRBdjK4mkZb5aFTza + Tor9kxzj4FcXVd4KAS + hHQHYHc
Ar8tt2eOLzqdEFTULeGiSoNn + PVzvzdfhndphK + 8F2jfQ2UKuc01O7k0Yn9xZVx0
OG6fE1gStzLv7C5amWLRd8 + XH + MN0G8MgNglpBoExsEMMlPBYSUHa6lxpdMNMuib
rIyVncE9X8QOhImt8K0sNn / EdbuldJNGYbDLt7O4iQEiBBABAgAMBQJPFdTcBQMA
EnUAAAoJEJcQuJvKV6184owH + WZ / uLpezXnSxigeH1sig72QEXMrNd5DVHCJdig3
博+ K5YmmN710 / m5z + 63XKUEWpd6 / knajObgckThzWftNeK1SSFQGPmoYZP9EZnSU
7L + / dSUpExbj842G5LYagrCyMGtlxRywWEmbi72TKS / JOK0jLiOdvVy + PHrZSu0D
TVQ7cJh1BmPsbz7zzxjmcI5l + 7B7K7RHZHq45nDLoIabwDacj7BXvBK0Ajqz4QyJ
GQUjXC7q + 88I + ptPvOXlE5nI / NbiCJOMI6d / bWN1KwYrC80fZuFaznfQFcPyUaDw
yRaun + K3kEji2wXecq + yMmLUEp01TKsUeOL50HD6hHH07W + JASIEEAECAAwFAk85
bQsFAwASdQAACgkQlxC4m8pXrXwKPQgAlkbUsTr7nkq + haOk0jKpaHWEbRMEGMrB
I3F7E + RDO6V / 8y4Jtn04EYDc8GgZMBah + mOgeINq3y8jRMYV5jVtZXv2MWYFUcjM
kVBKeqhi / pGEjmUdmdt3DlPv3Z + fMTMRmAocI981iY / go8PVPg / + nrR6cFK2xxnO
R8TacikJBFeSfkkORg1tDzjjYv1B5ZIEkpplepl5ahJBBq7cpYhTdY6Yk0Sz0J8w
EdffLSaNxrRuWLrRhWzZU7p9bFzfb / 7OHc21dJnB7wKv5VvtgE + jiQw9tOKaf5hc
SgRYuF6heu + B25gc5Uu88lo409mZ7oxQ6hDCn7JHvzh0rhmSN + Kid4kBIgQQAQIA
DAUCT0qQrQUDABJ1AAAKCRCXELibyletfC9UB / 4o2ggJYM0CLxEpP0GU8UKOh3 + /
zm1DN7Qe4kY2iCtF1plKHQaTgt5FlgRCFaiXcVv7WzGz / FnmxonR1leLl + kfRlwy
PPnoI / AWPCy / NO4Cl5KnjsSmsdDUpObwZ4KYsdilZR7ViJu2swdAIgnXBUwrlRJR
7CK4TAKrTeonRgVSrVx8Vt // 8 / cYj73CLq8oY / KK0iHiQrSwo44uyhdiFIAssjyX
N6 / 2E + w0zgvPexNSNNROHQ8pjbq + NTY6GwKIGsaej3UTRwQ7psvKXz8y7xdzmOAr
/ khGvxB5gjkx02pimjeia8v66aH6rbnojJMAovNUS4EHdHnulv4rovC8Kf9iiQEi
BBABAgAMBQJPVdsaBQMAEnUAAAoJEJcQuJvKV618vVEIALFXPBzcAO1SnQarBLzy
YMVZZumPvSXKnUHAO + 6kjApXPJ + qFRdUaSNshZxVKY9Zryblu4ol / fLUTt0CliSD
IxD6L4GXEm4VYYCl4lPO3bVsJnGITLFwQGHM27EmjVoTiD8Ch7kPq2EXr3dMRgzj
PDZ + 6aHGSUfOdLTPXufDvW83bEWGaRVuTJKw + wIrcuRqQ + ucWJgJGwcE4zeHjZad
Jx1XUm1X + BbI73uiQussyjhhQVVNU7QEdrjyuscaZ / H38wjUwNbylxDPB4I8quC1
knQ0wSHr7gKpM + E9nhiS14poRqU18u78 / sJ2MUPXnQA6533IC238 / LP8JgqB + ​​BIQ
BTSJASIEEAECAAwFAk9ng3cFAwASdQAACgkQlxC4m8pXrXxQRAf / UZlkkpFJj1om
9hIRz7gS + l7YvTaKSzpo + TBcx3C7aqKJpir6TlMK9cb9HGTHo2Xp1N3FtQL72NvO
6CcJpBURbvSyb4i0hrm / YcbUC4Y3eajWhkRS3iVfGNFbc / rHthViz0r6Y5lhXX16
aVkDv5CIFWaF3BiUK0FnHrZiy4FPacUXCwEjv3uf8MpxV5oEmo8Vs1h4TL3obyUz
qrImFrEMYE / 12lkE8iR5KWCaF8eFyl56HL3PPl90JMQBXzhwsFoWCPuwjfM5w6sW
LL // zynwxtlJ9CRz9c2vK6aJ8DRu3OfBKN1iiEcNEynksDnNXErn5xXKz3p5pYdq
e9BLzUQCDYkBIgQQAQIADAUCT3inRgUDABJ1AAAKCRCXELibyletfGMKCADJ97qk
geBntQ + tZtKSFyXznAugYQmbzJld8U6eGSQnQkM40Vd62UZLdA8MjlWKS8y4A4L2
0cI14zs5tKG9Q72BxQOw5xkxlLASw1 / 8WeYEbw7ZA + SPG // q9v3kIkru3sv64mMA
enZtxsykexRGyCumxLjzlAcL1drWJGUYE2Kl6uzQS7jb + 3PNBloQvz6nb3YRZ + CG
Ly9D41SIK + fpnV8r4iqhu7r4LmAQ7Q1DF9aoGaYvn2 + xLGyWHxJAUet4xkMNOLp6
k9RF1nbNe4I / sqeCB25CZhCTEvHdjSGTD2yJR5jfoWkwO9w8DZG1Q9WrWqki4hSB
l0cmcvO34pC1SJYziQEiBBABAgAMBQJPinQFBQMAEnUAAAoJEJcQuJvKV618CFEI
AJp5BbcV7 + JBMRSvkoUcAWDoJSP2ug9zGw5FB8J90PDefKWCKs5Tjayf2TvM5ntq
5DE9SGaXbloIwa74FoZlgqlhMZ4AtY9Br + oyPJ5S844wpAmWMFc6NnEPFaHQkQ + B
dJYpRVNd9lzagJP261P3S + S9T2UeHVdOJBgWIq9Mbs4lnZzWsnZfQ4Lsz0aPqe48
tkU8hw + nflby994qIwNOlk / U + I / lJbNz5zDY91oscXTRl2jV1qBgKYwwCXxyB3j9
fyVpRl + 7QnqbTWcCICVFL + uuYpP0HjdoKNqhzEguAUQQLOB9msPTXfa2hG + 32ZYg
5pzI5V7GCHq0KO6u5Ctj3TGJASIEEAECAAwFAk + cQEEFAwASdQAACgkQlxC4m8pX
rXzi7AgAx8wJzNdD7UlgdKmrAK // YqH7arSssb33Xf45sVHDpUVA454DXeBrZpi +
zEuo03o5BhAuf38cwfbkV6jN1mC2N0FZfpy4v7RxHKLYr7tr6r + DRn1L1giX5ybx
CgY0fLAxkwscWUKGKABWxkz9b / beEXaO2rMt + 7DBUdpAOP5FNRQ8WLRWBcMGQiaT
S4YcNDAiNkrSP8CMLQP + 04hQjahxwCgBnksylciqz3Y5 / MreybNnTOrdjVDsF0Oe
t0uLOiWXUZV1FfaGIdb / oBQLg + e1B74p5 + q3aF8YI97qAZpPa1qiQzWIDX8LX9QX
EFyZ3mvqzGrxkFoocXleNPgWT8fRuokBIgQQAQIADAUCT64N / QUDABJ1AAAKCRCX
ELibyletfDOGCACKfcjQlSxrWlEUrYYZpoBP7DE + YdlIGumt5l6vBmxmt / 5OEhqr
+ dWwuoiyC5tm9CvJbuZup8anWfFzTTJmPRPsmE4z7Ek + 3CNMVM2wIynsLOt1pRFK
4 / 5RNjRLbwI6EtoCQfpLcZJ // SB56sK4DoFKH28Ok4cplESPnoMqA3QafdSEA / FL
qvZV / iPgtTz7vjQkMgrXAIUM4fvKe3iXkAExGXtmgdXHVFoKmHrxJ2DTSvM7 / 19Z
jGJeu2MhIKHyqEmCk6hLjxyCE5pAH59KlbAQOP1bS28xlRskBApm2wN + LOZWzC62
HhEReQ50inCGuuubK0PqUQnyYc + lUFxrFpcliQEiBBABAgAMBQJPv9lVBQMAEnUA
AAoJEJcQuJvKV618AzgH / iRFFCi4qjvoqji1fi7yNPZVOMMO2H13Ks + AfcjRtHuV
aa30u50ND7TH + XQe6yerTapLh3aAm / sNP99aTxIuwRSlyKEoDs93 + XVSgRqPBgbF
/ vxv0ykok3p6L9DxFO / w5cL8JrBhMZoJrEkIBFkwN8tWlcXPRFQvcdBYv3M3DTZU
QY + UHnOxHvSzsl + LJ0S9Xcd9C5bvYfabmYJvG5eRS3pj1L / y3a6yw6hvY + JtnQAk
t05TdeHMIgQH / zb8V9wxDzmE0un8LyoC2Jx5TpikQsJSejwK6b3coxVBlngku6 + C
qDAimObZLw6H9xYYIK0FoJs7j5bQZEwUO7OLBgjcMOqJASIEEAECAAwFAk / Rpc8F
AwASdQAACgkQlxC4m8pXrXw49Qf / TdNbun2htQ + cRWarszOx8BLEiW / x6PVyUQpZ
纳伏/ 0qvhKzlJUjM9hQPcA0AsOjhqtCN6Cy8KXbK / TvPm9D / Nk6HWwD1PomzrJVFk2
ywGFIuTR + lluKSp7mzm5ym0wJs5cPq731Im31RUQU8ndjLrq9YOf5FVL8NqmcOAU
4E8d68BbmVCQC5MMr0901FKwKznShfpy7VYN25 / BASj8dhnynBYQErqToOJB6Cnd
JhdTlbfR4SirqAYZZg3XeqGhByytEHE1x7FMWWFYhdNtsnAVhYBbWqAzBs8lF9Jd
Mhaf0VQU / 4z10gVrRtXLR / ixrCi + P4cM / fOQkqd6pwqWkaXt6okBIgQQAQIADAUC
T + NxIAUDABJ1AAAKCRCXELibyletfFBBCAC6 + 0TUJDcNaqOxOG1KViY6KYg9NCL8
pwNK + RKNK / N1V + WGJQH7qDMwRoOn3yogrHax4xIeOWiILrvHK0O6drS1DjsymIhR
Sm2XbE / 8pYmEbuJ9vHh3b / FTChmSAO7dDjSKdWD3dvaY8lSsuDDqPdTX8FzOfrXC
M22C / YPg7oUG2A5svE1b + yismP4KmVNWAepEuPZcnEMPFgop3haHg9X2 + MJ / btDB
Yr6p9kAgIY17nigtNTNjtI0dMLu43aIzedCYHqOlNHiB049jkJs54fMGBjF9qPtc
m0k44xyKd1 / JXWMdNUmtwKsChAXJS3YOciMgIx6tqYUTndrP4I6q1rfriQEiBBAB
AgAMBQJP9T1VBQMAEnUAAAoJEJcQuJvKV618J9wIAI1lId9SMbEHF6PKXRe154lE
pap5imMU / lGTj + 9ZcXmlf8o2PoMMmb3 / E1K + EZUaeSBoOmjS8C2gwd5XFwRrlwAD
RLK / pG5XsL4h5wmN2fj1ororrJXvqH427PLRQK9yzdwG4 + 9HTBOxjoS8qZT9plyK
AJZzAydAMqyseRHgNo0vMwlgrs4ojo + GcFGQHrF3IaUjvVfUPOmIj7afopFdIZmI
GaSF0TXBzqcZ1chFv / eTBcIuIKRvlaDee5FgV7 + nLH2nKOARCLvV / + 8uDi2zbr83
Ip5x2tD3XuUZ0ZWxD0AQWcrLdmGb4lkxbGxvCtsaJHaLXWQ2m760RjIUcwVMEBKJ
ASIEEAECAAwFAlAGYWsFAwASdQAACgkQlxC4m8pXrXwyVAgAvuvEl6yuGkniWOlv
uHEusUv / + + 2GCBg6qV IEpVtbTCCgiFjYR5GasSp1gpZ5r4BocOlbGdjdJGHTpyK8
xD1i + 6qZWUYhNRg2POXUVzcNEl2hhouwPLOifcmTwAKU76TEv3L5STviL3hWgUR2
yEUZ3Ut0IGVV6uPER9jpR3qd6O3PeuFkwf + NaGTye4jioLAy3aYwtZCUXzvYmNLP
90K4y + 5yauZteLmNeq26miKC / NQu4snNFClPbGRjHD1ex9KDiAMttOgN4WEq7srT
rYgtT531WY4deHpNgoPlHPuAfC0H + S6YWuMbgfcb6dV + Rrd8Ij6zM3B / PcjmsYUf
OPdPtIkBIgQQAQIADAUCUBgtfQUDABJ1AAAKCRCXELibyletfAm3CACQlw21Lfeg
d8RmIITsfnFG / sfM3MvZcjVfEAtsY3fTK9NiyU0B3yX0PU3ei37qEW + 50BzqiStf
5VhNvLfbZR + yPou7o2MAP31mq3Uc6grpTV64BRIkCmRWg40WMjNI1hv7AN / 0atgj
ATYQXgnEw7mfFb0XZtMTD6cmrz / A9nTPVgZDxzopOMgCCC1ZK4Vpq9FKdCYUaHpX
3sqnDf + gpVIHkTCMgWLYQOeX5Nl + fgnq6JppaQ3ySZRUDr + uFUs0uvDRvI / CN + UR
ri92wdDnczjFumKvz / cLJAg5TG2Jv1Jx3wecALsVqQ3gL7f7vr1OMaqhI5FEBqdN
29L9cZe / ZmkriQEiBBIBCgAMBQJVoNxyBYMHhh + AAAoJEEoz7NUmyPxLD1EH / 2EH
7A4 + 8A1lPLy2L9xcNt2bifLfFP2pEjcG6ulBoMKpHvuTCgtX6ZPdHpM7uUOje / F1
CCN0IPB533U1NIoWIKndwNUJjughtoRM + caMUdYyc4kQm29Se6hMPDfyswXE5Bwe
PmoOm4xWPVOH / cVN04zyLuxdlQZNQF / nJg6PMsz4w5z + K6NGGm24NEPcc72iv + 6R
UC / RY / 7v5cVu4hO5 + r104mmNV5yLecQF13cHy2JlngIHXPSlxTZbeJX7qqxE7TQh
5nviSPgdk89oB5jFSx4g1efXiwtLlP7lbDlxHduomyQuH9yqmPZMbkJt9uZDc8Zz
MYsDDwlc7BIe5bGKfjqJAhwEEAECAAYFAlSanFIACgkQdzHqU52lcqLdvg // CAEP
qdN5VTKWEoDFjDS4I6t8 + 0KzdDWDacVFwKJ8RAo1M2SklDxnIvnzysZd2VHp5Pq7
i4LYCZo5lDkertQ6LwaQxc4X6myKY4LTA652ObFqsSfgh9kW + aJBBAyeahPQ8CDD
+ Yl23 + MY5wTsj4qt7KffNzy78vLbYnVnvRQ3 / CboVix0SRzg0I3Oi7n3B0lihvXy
5goy9ikjzZevejMEfjfeRCgoryy9j5RvHH9PF3fJVtUtHCS4f + kxLmbQJ1XqNDVD
hlFzjz8oUzz / 8YXy3im5MY7Zuq4P4wWiI7rkIFMjTYSpz / evxkVlkR74qOngT2pY
VHLyJkqwh56i0aXcjMZiuu2cymUt2LB9IsaMyWBNJjXr2doRGMAfjuR5ZaittmML
yZwix9mWVk7tkwlIxmT / IW6Np0qMhDZcWYqPRpf7 + MqY3ZYMK4552b8aDMjhXrnO
OwLsz + UI4bZa1r9dguIWIt2C2b5C1RQ9AsQBPwg7h5P + HhRuFAuDKK + vgV8FRuzR
JeKkFqwB4y0Nv7BzKbFKmP + V + / + krRv / Dyz9Bz / jyAQgw02u1tPupH9BGhlRyluN
yCJFTSNj7G + OLU0 / l4XNph5OOC7sy + AMZcsL / GST / TXCizRcCuApNTPDaenACpbv
g8OoIzmNWhh4LXbAUHCKmY // hEw9PvTZA1xKHgyJAhwEEgECAAYFAlJYsKQACgkQ
oirk60MpxUV2XQ // B2 / uvThkkbeOegusDC4AZfjnL / V3mgk4iYy4AC9hum0R9oNl
XDR51P1TEw9mC1btHj + 7m7Iq1a5ke5wIC7ENZiilr0yPqeWgL5 + LC98dz / L85hqA
wIoGeOfMhrlaVbAZEj4yQTAJDA35vZHVsQmp87il0m + fZX04OBLXBzw86EoAAZ7Q
EoH4qFcT9k1T363tvNnIm3mEvkQ5WjE1R9uchJa1g7hdlNQlVkjFmPZrJK9fl4z5
6Dto89Po4Sge48jDH0pias4HATYHsxW819nz5jZzGcxLnFRRR5iITVZi9qzsHP7N
bUh3qxuWCHS9xziXpOcSZY848xXw63Y5jDJfpzupzu / KHj6CzXYJUEEqp9MluoGb
/ BCCEPzdZ0ovyxFutM / BRcc6DvE6sTDF / UES21ROqfuwtJ6qJYWX + lBIgyCJvj4o
RdbzxUleePuzqCzmwrIXtoOKW0Rlj4SCeF9yCwUMBTGW5 / nCLmN4dwf1KW2RP2Eg
4ERbuUy7QnwRP5UCl + 0ISZJyYUISfg8fmPIdQsetUK9Cj + Q5jpB2GXwELXWnIK6h
K / 6jXp + EGEXSqdIE53vAFe7LwfHiP / D5M71D2h62sdIOmUm3lm7xMOnM5tKlBiV +
4jJSUmriCT62zo710 + 6iLGqmUUYlEll6Ppvo8yuanXkYRCFJpSSP7VP0bBqIZgQT
EQIAJgUCTnc9dgIbIwUJEPPzpwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIxx
jTtQcuH1Ut4AoIKjhdf70899d + 7JFq3LD7zeeyI0AJ9Z + YyE1HZSnzYi73brScil
bIV6sbQ7TXlTUUwgUGFja2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkg
PGJ1aWxkQG15c3FsLmNvbT6IbwQwEQIALwUCTnc9rSgdIGJ1aWxkQG15c3FsLmNv
bSB3aWxsIHN0b3Agd29ya2luZyBzb29uAAoJEIxxjTtQcuH1tT0An3EMrSjEkUv2
9OX05JkLiVfQr0DPAJwKtL1ycnLPv15pGMvSzav8JyWN3IhlBBMRAgAdBQJHrJS0
BQkNMFioBQsHCgMEAxUDAgMWAgECF4AAEgkQjHGNO1By4fUHZUdQRwABAa6SAJ9 /
PgZQSPNeQ6LvVVzCALEBJOBt7QCffgs + vWP18JutdZc7XiawgAN9vmmITAQTEQIA
DAUCPj6j0QWDCWYAuwAKCRBJUOEqsnKR8iThAJ9ZsR4o37dNGyl77nEqP6RAlJqa
YgCeNTPTEVY + VXHR / yjfyo0bVurRxT2ITAQTEQIADAUCPkKCAwWDCWIiiQAKCRC2
9c1NxrokP5aRAKCIaaegaMyiPKenmmm8xeTJSR + fKQCgrv0TqHyvCRINmi6LPucx
GKwfy7KIRgQQEQIABgUCP6zjrwAKCRCvxSNIeIN0D / aWAKDbUiEgwwAFNh2n8gGJ
SW / 8lAuISgCdHMzLAS26NDP8T2iejsfUOR5sNriIRgQQEQIABgUCP7RDdwAKCRCF
LQ + rMHNOZsbDAJ0WoPV + tWILtZG3wYqg5LuHM03faQCeKuVvCmdPtro06xDzeeTX
VrZ14 + GIRgQQEQIABgUCQ1uz6gAKCRCL2C5vMLlLXH90AJ0QsqhdAqTAk3SBnO2w
zuSOwiDIUwCdFExsdDtXf1cL3Q4ilo + OTdrTW2CIRgQTEQIABgUCRPEzJgAKCRD2
ScT0YJNTDApxAKCJtqT9LCHFYfWKNGGBgKjka0zi9wCcCG3MvnvBzDUqDVebudUZ
61Sont + ITAQQEQIADAUCQYHLAQWDBiLZiwAKCRAYWdAfZ3uh7EKNAJwPywk0Nz + Z
Lybw4YNQ7H1UxZycaQCePVhY4P5CHGjeYj9SX2gQCE2SNx + ITAQQEQIADAUCQYHL
NAWDBiLZWAAKCRCBwvfr4hO2kiIjAJ0VU1VQHzF7yYVeg + bh31nng9OOkwCeJI8D
9mx8neg4wspqvgXRA8 + t2saITAQQEQIADAUCQYHLYgWDBiLZKgAKCRBrcOzZXcP0
cwmqAJsFjOvkY9c5eA / zyMrOZ1uPB6pd4QCdGyzgbYb / eoPu6FMvVI9PVIeNZReI
TAQQEQIADAUCQdCTJAWDBdQRaAAKCRB9JcoKwSmnwmJVAKCG9a + Q + qjCzDzDtZKx
5NzDW1 + W + QCeL68seX8OoiXLQuRlifmPMrV2m9 + ITAQQEQIADAUCQitbugWDBXlI
0gAKCRDmG6SJFeu5q / MTAKCTMvlCQtLKlzD0sYdwVLHXJrRUvgCffmdeS6aDpwIn
U0 / yvYjg1xlYiuqITAQSEQIADAUCQCpZOgWDB3pLUgAKCRA8oR80lPr4YSZcAJwP
4DncDk4YzvDvnRbXW6SriJn1yQCdEy + d0CqfdhM7HGUs + PZQ9mJKBKqITAQSEQIA
DAUCQD36ugWDB2ap0gAKCRDy11xj45xlnLLfAKC0NzCVqrbTDRw25cUss14RRoUV
PACeLpEc3zSahJUB0NNGTNlpwlTczlCITAQSEQIADAUCQQ4KhAWDBpaaCAAKCRA5
yiv0PWqKX / zdAJ4hNn3AijtcAyMLrLhlZQvib551mwCgw6FEhGLjZ + as0W681luc
wZ6PzW + ITAQSEQIADAUCQoClNAWDBSP / WAAKCRAEDcCFfIOfqOMkAJwPUDhS1eTz
gnXclDKgf353LbjvXgCeLCWyyj / 2d0gIk6SqzaPl2UcWrqiITAQTEQIADAUCPk1N
hAWDCVdXCAAKCRAtu3a / rdTJMwUMAKCVPkbk1Up / kyPrlsVKU / Nv3bOTZACfW5za
HX38jDCuxsjIr / 084n4kw / uITAQTEQIADAUCQdeAdgWDBc0kFgAKCRBm79vIzYL9
PJ + 8AJ9d7rvGJIcHzTCSYVnaStv6jP + AEACeNHa5yltqieRBCCcLcacGqYK81omI
TAQTEQIADAUCQhiBDgWDBYwjfgAKCRB2wQMcojFuoaDuAJ9CLYdysef7IsW42UfW
hI6HjxkzSgCfeEpXS4hEmmGicdpRiJQ / W21aB0GIZQQTEQIAHQULBwoDBAMVAwID
FgIBAheABQJLcC / KBQkQ8 / OnABIHZUdQRwABAQkQjHGNO1By4fWw2wCeJilgEarL
8eEyfDdYTyRdqE45HkoAnjFSZY8Zg / iXeErHI0r04BRukNVgiHsEMBECADsFAkJ3
NfU0HQBPb3BzLi4uIHNob3VsZCBoYXZlIGJlZW4gbG9jYWwhIEknbSAqc28qIHN0
dXBpZC4uLgAKCRA5yiv0PWqKX + 9HAJ0WjTx / rqgouK4QCrOV / 2IOU + jMQQCfYSC8
JgsIIeN8aiyuStTdYrk0VWCIjwQwEQIATwUCRW8Av0gdAFNob3VsZCBoYXZlIGJl
ZW4gYSBsb2NhbCBzaWduYXR1cmUsIG9yIHNvbWV0aGluZyAtIFdURiB3YXMgSSB0
aGlua2luZz8ACgkQOcor9D1qil + G + wCfcFWoo5qUl4XTE9K8tH3Q + xGWeYYAnjii
KxjtOXc0ls + BlqXxbfZ9uqBsiQIiBBABAgAMBQJBgcuFBYMGItkHAAoJEKrj5s5m
oURoqC8QAIISudocbJRhrTAROOPoMsReyp46Jdp3iL1oFDGcPfkZSBwWh8L + cJjh
dycIwwSeZ1D2h9S5Tc4EnoE0khsS6wBpuAuih5s // coRqIIiLKEdhTmNqulkCH5m
imCzc5zXWZDW0hpLr2InGsZMuh2QCwAkB4RTBM + r18cUXMLV4YHKyjIVaDhsiPP /
MKUj6rJNsUDmDq1GiJdOjySjtCFjYADlQYSD7zcd1vpqQLThnZBESvEoCqumEfOP
xemNU6xAB0CL + pUpB40pE6Un6Krr5h6yZxYZ / N5vzt0Y3B5UUMkgYDSpjbulNvaU
TFiOxEU3gJvXc1 + h0BsxM7FwBZnuMA8LEA + UdQb76YcyuFBcROhmcEUTiducLu84
E2BZ2NSBdymRQKSinhvXsEWlH6Txm1gtJLynYsvPi4B4JxKbb + awnFPusL8W + GFZ
jbygeKdyqzYgKj3M79R3geaY7Q75Kxl1UogiOKcbI5VZvg47OQCWeeERnejqEAdx
EQiwGA / ARhVOP / 1l0LQA7jg2P1xTtrBqqC2ufDB + V + jhXaCXxstKSW1lTbv / b0d6
454UaOUV7RisN39pE2zFvJvY7bwfiwbUJVmYLm4rWJAEOJLIDtDRtt2h8JahDObm
3CWkpadjw57S5v1c / MN + xV9yTgVx5YUfC / 788L1HNKXfeVDq8zbAiQIiBBMBAgAM
BQJCnwocBYMFBZpwAAoJENjCCglaJFfPIT4P / 25zvPp8ixqV85igs3rRqMBtBsj +
5EoEW6DJnlGhoi26yf1nasC2frVasWG7i4JIm0U3WfLZERGDjR / nqlOCEqsP5gS3
43N7r4UpDkBsYh0WxH / ZtST5llFK3zd7XgtxvqKL98l / OSgijH2W2SJ9DGpjtO + T
iegq7igtJzw7Vax9z / LQH2xhRQKZR9yernwMSYaJ72i9SyWbK3k0 + e95fGnlR5pF
zlGq320rYHgD7v9yoQ2t1klsAxK6e3b7Z + RiJG6cAU8o8F0kGxjWzF4v8D1op7S +
IoRdB0Bap01ko0KLyt3 + G4 / 33 / 2UxsW50BtfqcvYNJvU4bZns1YSqAgDOOanBhg8
Ip5XPlDxH6J / 3997n5JNj / nk5ojfd8nYfe / 5TjflWNiput6tZ7frEki1wl6pTNbv
V9C1eLUJMSXfDZyHtUXmiP9DKNpsucCUeBKWRKLqnsHLkLYydsIeUJ8 + ciKc + EWH
FxEY + Ml72cXAaz5BuW9L8KHNzZZfez / ZJabiARQpFfjOwAnmhzJ9r ++ TEKRLEr96
taUI9 / 8nVPvT6LnBpcM38Td6dJ639YvuH3ilAqmPPw50YvglIEe4BUYD5r52Seqc
8XQowouGOuBX4vs7zgWFuYA / s9ebfGaIw + uJd / 56Xl9ll6q5CghqB / yt1EceFEnF
CAjQc2SeRo6qzx22iEYEEBECAAYFAkSAbycACgkQCywYeUxD5vWDcACfQsVk / XGI
ITFyFVQ3IR / 3Wt7zqBMAoNhso / cX8VUfs2BzxPvvGS3y + 5Q9iEYEEBECAAYFAkUw
ntcACgkQOI4l6LNBlYkyFgCbBcw5gIii0RTDJsdNiuJDcu / NPqEAniSq9iTaLjgF
HZbaizUU8arsVCB5iEYEEBECAAYFAkWho2sACgkQu9u2hBuwKr6bjwCfa7ZK6O + X
mT08Sysg4DEoZnK4L9UAoLWgHuYg35wbZYx + ZUTh98diGU / miF0EExECAB0FAj4 +
owwFCQlmAYAFCwcKAwQDFQMCAxYCAQIXgAAKCRCMcY07UHLh9XGOAJ4pVME15 / DG
rUDohtGv2z8a7yv4AgCeKIp0jWUWE525QocBWms7ezxd6syIXQQTEQIAHQUCR6yU
zwUJDTBYqAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQcuH1dCoAoLC6RtsD9K3N
7NOxcp3PYOzH2oqzAKCFHn0jSqxk7E8by3sh + Ay8yVv0BYhdBBMRAgAdBQsHCgME
AxUDAgMWAgECF4AFAkequSEFCQ0ufRUACgkQjHGNO1By4fUdtwCfRNcueXikBMy7
tE2BbfwEyTLBTFAAnifQGbkmcARVS7nqauGhe1ED / vdgiF0EExECAB0FCwcKAwQD
FQMCAxYCAQIXgAUCS3AuZQUJEPPyWQAKCRCMcY07UHLh9aA + AKCHDkOBKBrGb8tO
g9BIub3LFhMvHQCeIOOot1hHHUlsTIXAUrD8 + ubIeZaJARwEEgECAAYFAkvCIgMA
CgkQ3PTrHsNvDi8eQgf / dSx0R9Klozz8iK79w00NOsdoJY0Na0NTFmTbqHg30XJo
G62cXYgc3 + TJnd + pYhYi5gyBixF / L8k / kPVPzX9W0YfwChZDsfTw0iDVmGxOswiN
jzSo0lhWq86 / nEL30Khl9AhCC1XFNRw8WZYq9Z1qUXHHJ2rDARaedvpKHOjzRY0N
dx6R2zNyHDx2mlfCQ9wDchWEuJdAv0uHrQ0HV9 + xq7lW / Q3L / V5AuU0tiowyAbBL
PPYrB6x9vt2ZcXS7BOy8SfQ1i8W2QDQ / Toork4YwBiv6WCW / ociy7paAoPOWV / NF
2S6hDispeecbk7wqpbUj5klDmwrlgB / jmoAXWEnbsYkBIgQQAQIADAUCSSpooAUD
ABJ1AAAKCRCXELibyletfFOMCACpP + OVZ7lH / CNY + 373c4FnSI0 / S5PXS0ABgdd4
BFWRFWKrWBeXBGc8sZfHOzVEwkzV96iyHbpddeAOAkEA4OVPW1MMFCmlHxi2s9 / N
JrSrTPVfQOH5fR9hn7Hbpq / ETw0IoX1FKo7vndMnHZnFEnI + PDXLcdMYQgljYzhT
xER4vYY0UKu8ekSshUy4zOX7XSJxwqPUvps8qs / TvojIF + vDJvgFYHVkgvS + shp8
哦/ exg9vKETBlgU87Jgsqn / SN2LrR / Jhl0aLd0G0iQ + / wHmVYdQUMFaCZwk / BKNa
XPzmGZEUZ3RNbYa19Mo7hcE3js76nh5YMxFvxbTggVu4kdFkiQEiBBABAgAMBQJK
M06IBQMAEnUAAAoJEJcQuJvKV618F4gH / innejIHffGMk8jYix4ZZT7pW6ApyoI +
N9Iy85H4L + 8rVQrtcTHyq0VkcN3wPSwtfZszUF / 0qP6P8sLJNJ1BtrHxLORYjJPm
gveeyHPzA2oJl6imqWUTiW822fyjY / azwhvZFzxmvbFJ + r5N / Z57 + Ia4t9LTSqTN
HzMUYaXKDaAqzZeK7P0E6XUaaeygbjWjBLQ1O0ezozAy + KK / gXApmDCGFuHSFe7Z
mgtFcbXLM2XFQpMUooETD2R8MUsd + xnQsff / k6pQOLxi + jUEsWSr / iqmvlk6gZ4D
pemBjuhcXYlxJYjUaX9Zmn5s + ofF4GFxRqXoY7l9Z + tCM9AX37lm6S + JASIEEAEC
AAwFAkpEcgoFAwASdQAACgkQlxC4m8pXrXz2mgf / RQkpmMM + 5r8znx2TpRAGHi5w
ktvdFxlvPaOBWE28NDwTrpcoMqo9kzAiuvEQjVNihbP21wR3kvnQ84rTAH0mlC2I
uyybggpqwzOUl + Wi0o + vk8ZA0A0dStWRN8uqneCsd1XnqDe1rvqC4 / 9yY223tLmA
kPvz54ka2vX9GdJ3kxMWewhrVQSLCktQpygU0dujGTDqJtnk0WcBhVF9T87lv3W2
eGdPielzHU5trXezmGFj21d56G5ZFK8co7RrTt4qdznt80glh1BTGmhLlzjMPLTe
dcMusm3D1QB9ITogcG94ghSf9tEKmmRJ6OnnWM5Kn9KcL63E5oj2 / lY9H54wSYkB
IgQQAQIADAUCSlY + RwUDABJ1AAAKCRCXELibyletfOOQB / 0dyJBiBjgf + 8d3yNID
pDktLhZYw8crIjPBVdOgX12xaUYBTGcQITRVHSggzffDA5BQXeUuWhpL4QB0uz1c
EPPwSMiWiXlBtwF5q6RVf3PZGJ9fmFuTkPRO7SruZeVDo9WP8HjbQtOLukYf566e
grzAYR9p74UgWftpDtmrqrRTobiuvsFBxosbeRCvEQCrN0n + p5D9hCVB88tUPHnO
WA4mlduAFZDxQWTApKQ92frHiBqy + M1JFezz2OM3fYN + Dqo / Cb7ZwOAA / 2dbwS7o
y4sXEHbfWonjskgPQwFYB23tsFUuM4uZwVEbJg + bveglDsDStbDlfgArXSL / 0 + AK
lFcHiQEiBBABAgAMBQJKaAqEBQMAEnUAAAoJEJcQuJvKV618rH0H / iCciD4U6YZN
JBj0GN7 / Xt851t9FWocmcaC + qtuXnkFhplXkxZVOCU4VBMs4GBoqfIvagbBTyfV4
迪+ W8Uxr + / 1jiu3l / HvoFxwdwNkGG6zNBhWSjdwQpGwPvh5ryV1OfLX / mgQgdDmx
vqz5 + kFDUj4m7uLaeuU2j1T0lR4zU0yAsbt7J3hwfqJCXHOc9bm5nvJwMrSm + SDC
TP5HjUlwHr9mTe8xuZvj6sO / w0P4AqIMxjC9W7pT9q0ofG2KSTwt7wFbh05sbG4U
QYOJe4 + Soh3 + KjAa1c0cvmIh4cKX9qfCWwhhdeNfh1A9VTHhnl5zTv / UjvnQtjhl
H / Fq1eBSKcSJASIEEAECAAwFAkp5LgoFAwASdQAACgkQlxC4m8pXrXwY6wgAg3f8
76L3qDZTYlFAWs3pXBl8GsUr1DEkTlEDZMZKDM3wPmhaWBR1hMA3y6p3aaCUyJIJ
BEneXzgyU9uqCxXpC78d5qc3xs / JD / SswzNYuvuzLYOw5wN5L31SLmQTQ8KqE0uo
RynBmtDCQ4M2UKifSnv + 0 + 3mPh85LVAS481GNpL + VVfCYtKesWNu40 + 98Yg6L9NG
WwRTfsQbcdokZo44Jz7Y7f81ObC4r / X1DgPj2 + d4AU / plzDcdrbINOyprs + 7340e
cnaGO4Lsgd19b1CvcgJgltRquu3kRvd + Ero2RYpDv6GVK8Ea0Lto4 + B / Ae8cLXAh
QnaWQCEWmw + AU4Jbz4kBIgQQAQIADAUCSo5fvQUDABJ1AAAKCRCXELibyletfA08
B / 9w8yJdc8K + k07U30wR / RUg3Yb2lBDygmy091mVsyB0RGixBDXEPOXBqGKAXiV1
QSMAXM2VKRsuKahY2HFkPbyhZtjbdTa7Pr / bSnPvRhAh9GNWvvRg2Kp3qXDdjv9x
ywEghKVxcEIVXtNRvpbqRoKmHzIExvUQck5DM1VwfREeYIoxgs4035WADhVMdngQ
S2Gt8P2WaU / p8EZhFGg6X8KtOlD68zGboaJe0hj2VDc +的Jc + KdjRfE3fW5IToid / O
DkUaIW6tB3WkXb0g6D / 2hrEJbX3headChHKSB8eQdOR9bcCJDhhU8csd501qmrhC
ctmvlpeWQZdIQdk6sABPWeeCiQEiBBABAgAMBQJKoBJHBQMAEnUAAAoJEJcQuJvK
V618Ml8H / 1D88 /克/ p9fSVor4Wu5WlMbg8zEAik3BIxQruEFWda6nART6M9E7e + P1
++ UHZsWYs6l9ROpWxRLG1Yy9jLec2Y3nUtb20m65p + IVeKR2a9PHW35WZDV9dOYP
GZabKkO1clLeWLVgp9LRjZ + AeRG + ljHqsULXro1dwewLTB / gg9I2vgNv6dKxyKak
纳米/ GrqZLATAq2KoaE / U / 6lzRFZIzZnLtjZh8X7 + NS + V8v9IiY4ntrpkrbvFk30U6
WJp79oBIWwnW / 84RbxutRoEwSar / TLwVRkcZyRXeJTapbnLGnQ / lDO1o1d7 + Vbjd
Q / SG / cKHHf7NthCwkQNsCnHL0f51gZCJASIEEAECAAwFAkqoEAAFAwASdQAACgkQ
lxC4m8pXrXwE / AF / XD4R / A5R6Ir / nCvKwCTKJmalajssuAcLEa2pMnFZYO / 8rzLO
+ Gp8p0qFH9C4LFwA0NvR5q6X / swuROf4zxljSvNcdlQVaAfJ2ZDEgJ5GXzsPplrv
SAI9jS3LL7fSWDZgKuUe0a4qx7A0NgyGMUYGhP + QlRFa8vWEBI9fANd / 0mMqAeBV
qQyOH0X1FiW1Ca2Jn4NKfuMy9GEvRddVIbB1LvoNVtXPNzeeKMyNb9Jdx1MFWssy
COBP2DayJKTmjvqPEc / YOjOowoN5sJ / jn4mVSTvvlTooLiReSs6GSCAjMVxN7eYS
/ Oyq6Iu1JDcJvmB8N2WixAZtAVgF8OA7CWXKVYkBIgQQAQIADAUCSrnHiQUDABJ1
AAAKCRCXELibyletfPChB / 9uECti1dZeNuFsd0 / RuGyRUVlrrhJE6WCcOrLO9par
rPbewbKBmjSzB0MygJXGvcC06mPNuquJ7 / WpxKsFmfg4vJBPlADFKtgRUy9BLzjC
eotWchPHFBVW9ftPbaQViSUu7d89NLjDDM5xrh80puDIApxoQLDoIrh3T1kpZx56
jSWv0gelFUMbXAzmqkJSyL4Xdh1aqzgUbREd7Xf2ICzuh0sV6V7c / AwWtjWEGEsA
HZaiQDywZwbC18GwrMLiAzGWb / AScFDQRCZKJDjL + Ql8YT6z + ZMVr8gb7CIU5PKY
dhiIf2UVTQwLAoW7lNRCQQAqcGjK3IMIz7SO / yk4HmVUiQEiBBABAgAMBQJK3gjG
BQMAEnUAAAoJEJcQuJvKV618jkEH + wb0Zv9z7xQgpLMowVuBFQVu8 / z7P5ASumyB
PUO3 + 0JVxSHBhlCKQK7n11m1fhuGt2fCxXhSU6LzXj36rsKRY53lGZ9QhvqFUtQH
3Xb2IQLIJC4UKjG2jSSCdcuA / x98bwp2v7O03rn7ndCS16CwXnRV3geQoNipRKMS
DajKPpZv1RiZm8pMKqEb8WSw352xWoOcxuffjlsOEwvJ85SEGCAZ9tmIlkZOc7Ai
QONDvii9b8AYhQ60RIQC0HP2ASSmK0V92VeFPxHmAygdDQgZNVtbVxgnnt7oTNEu
VRXNY + z4OfBArp7R + cTsvijDRZY4kML1n22hUybwoxUEvjqZV2 + JASIEEAECAAwF
AkrvOlQFAwASdQAACgkQlxC4m8pXrXxrPAgArXiNgZirNuBhfNCXlkzkCHLx5wnV
e4SmTpbWzTwWw7 + qk7d4l9hlWtdImISORINzo7f4ShSUzJX2GciNaXhaHRo7 + y5O
Zbu82jQb09aQQj / nibKYuqxqUrobTEm + DuYz3JUQZm2PsPcHLS8mX9cxvrJUncPG
nXEV0DRaq71SGWDprtkvBbp6i38aY3sIhYgz8wM5m1szKDtjywmBYcFehIdozt9z
hm7wZshzRWQX1 + RF / pIsnk + OzBIa34crSemTnacbV / B7278z2XAyziPNFuqz0xu +
iltOmYmayfNWAmumuw9NcuwWMlth6Mc2HLrpo0ZBheJ6iuDMPsHnwqdB / 4kBIgQQ
AQIADAUCSwBd2gUDABJ1AAAKCRCXELibyletfP6tB / 4m1w0BtlkJgtS6E + B / NS14
z4A4PGors + N + MYm05qzvi + ENDF / sytCmVcKeimrtvDcfoDtKAFFvJjcYXfnJdGWm
Pu0SJMRL5KKCirAKwZmU / saxOgoB5QLNw + DHPteJ3w9GmWlGxIqG1r15WC5duzBC
y3FsnjJYG3jaLnHOO9yXXb5h0kUTORfUKdvAr1gxF2KoatZWqGoaPPnHoqb88rjt
zk8I7gDqoXnzh8wLxa0ZYvfTC / McxdWTrwXLft + krmMQ18iIZEne2hvVLNJVuluU
oiWLeHA8iNCQ4W4WTdLc1mCnCjGTMX / MN41uLH0C9Ka4R6wEaqj4lPDk1B / 1TV + Q
iQEiBBABAgAMBQJLEYGrBQMAEnUAAAoJEJcQuJvKV618naIH / 2t9aH5mBTKBN6fU
qhrf79vIsjtI / QNS5qisBISZMX3 / 1 / 0Gu6WnxkPSfdCUJMWCjMcnVj7KU2wxTHHG
VpAStd9r2afUNxRyqZwzwyytktuZok0XngAEDYDDBS3ssu2R4uWLCsC2ysXEqO / 5
tI5YrTWJZrfeIphTaYP5hxrMujvqy3kEwKKbiMz91cDeiLS + YCBcalj5n / 1dMYf7
8U8C6ieurxAg / L8h6x25VM4Ilx4MmG2T8QGtkkUXd + FD / KYWmf0LE5LLPknf0Hhw
oVslPXeinp4FsHK / 5wzviv4YZpzuTqs9NlKcMsa4IuuPOB0FDf0pn + OFQbEg9QwY
2gCozK + JASIEEAECAAwFAksjTdQFAwASdQAACgkQlxC4m8pXrXwlogf / XBGbXRVX
LMaRN4SczOjwT3 / tUCriTkb3v + zKjRG90zFhYAccjn7w + 7jKQicjq6quQG1EH2X4
/ Su6ps1lDLqGHHhiJW3ZhxQScLZmhdAYsh2qG4GP / UW3QjXG7c61t + H3olvWg2cr
wqCxxFZAgkAAkr9xcHWFZJEQeXoob6cCZObaUnHSANdmC6s5lUxXYa2bmL7Q3UB4
4KCzDvAfbPZKJOw9k0qb3lc11zx + vGdyZFbm4R0 + 3LPp / vT0b3GlSbbF9lU1GOXh
VaphrgFFa76dmjfHCkPplXAkK1VSIU / aPGAefduTFMdlSZpdMtJ5AULjGcszBDlR
pLlPxvqVa0ZpgIkBIgQQAQIADAUCSycmkgUDABJ1AAAKCRCXELibyletfHlNCACp
1YespiHfQt2alcscE5zgfETEHHic8Ai6pNkU9HT4TeWcFHEDe5QqfYcpjLrQvBXS
kSvxEittbyRdv + E + j5Z + HyHjiG8nAQBL6qy9eHqQE4 + d7gYs6DTk7sG9ZMYphREb
ltzD + F4hVCQdLT8LNr0eVFN7ehqECScDaCG8 / Qyti + 1 / 0M902 /炔+ mz0ilOiUdWJ
9x6LPaIINtb1gsYDEylLjwGIZmI0r5Kh9wYoV4vnNezFbxO1uRiW0B7iaPjIEsbt
OOKp7wx2aX + DM3N9F3BtaIY8XnzcnomNm83SNsgmgrZljpQltUnNqIhNM8DupQ + I
WOV5gtl6pTC7CgeVTVyRiQEiBBABAgAMBQJLOGXuBQMAEnUAAAoJEJcQuJvKV618
ll4IAKJ9mm4jb0c8fe9 + uDI8eCJRbzNbVXm8zWzpA8GUtQAakwxoKv332QP1Wa1P
ODNI / e3EMhsSREOZJJv79YqGxGRBTE9Kb / VjM34nas4XSnXKW28XWhKyIw + XwQAi
nY2swFHh + 83Htr / mwTdJfS2aEYl2zboBvd / JZCdhOGU2GH737S / 3uEczoKkfVQ / w的
OTM8X1xWwlYWqx23k / DsGcuDs9lA2g7Mx7DSqBtVjaTkn9h0zATzXLDkmP4SAUVj
cZ83WDpFre5WnizZjdXlBMM5OCexp5WpmzyHLTnaBFK4jEmnsk5C2Rnoyp8Ivz6g
Ecg1tRbEXijRw ++ d2TFYlJwLKtiJASIEEAECAAwFAktKMicFAwASdQAACgkQlxC4
m8pXrXxqHQgAuYY5scKrh0m / GS9EYnyC9494lOlO6iytU0CpE6oBC31M3hfX / DBJ
UbcS5szZNU + 2CPYo4ujQLZ7suN7 + tTjG6pZFfMevajT9 + JSL + NPMF8RLdLOVYmbl
TmSQGNO + XGEYaKYH5oZIeIW5AKCgi2ozkdFlBBLAx7Kqo / FyybhkURFEcvEyVmgf
3KLV7IIiX / fYLfoCMCJ / Lcm9 / llSFB1n8Nvg66Xd533DKoHjueD3jyaNAVlo2mq /
SIAV ++ kntvOiB3GDK5pfwHZ78WWiCpsWZpE5gzAnzJ1Y0WEigRo0PVLu3cLO0jLG
23D + H / CbfZ8rkajHJeCDQF7YVmP0t0nYpYkBIgQQAQIADAUCS1v + ZgUDABJ1AAAK
CRCXELibyletfNS / CACqt2TkB86mjqM + cJ74 + dWBvJ2aFuURuxzm95i9Q / W / hU08
2iMbC3 + 0k2oD8CrTOe61P + 3oRyLjv / UEDUNzLncNe2YsA9JeV + 4hvPwH5Vp3Om13
089fCKZUbqslXNKkHiWYU + zAaZJXEuGRmRz0HbQIeAMOWF4oa226uo1e4ws1Jhc +
F3E / ApCRyFBqBUdL05hapQLditYpsBjIdiBGpjzidMLE2wX2W4ZpAdN0U6BIyIqR
mTPjbSkvzS9kSWFmfhQgnBDKEYJpVZgE1sN52rYC1sDeGeiuKxlzjVov9MMhYMWa
Zo3R5o3F2iIM / BK6FbC252lf / Mhu3ICuXujNBZNYiQEiBBABAgAMBQJLbSH4BQMA
EnUAAAoJEJcQuJvKV618kd0IAJLLwDH6gvgAlBFklQJXqQxUdcSOOVMAWtlHgWOy
ozjgomZZBkRL8dtCDr9YBMcj5czcQ3qpmLJdppXhKB + kJV2iUXfDMSFXwJ4wLfIs
8FNnXw8H5U01oBkGH / Ku6ngL9Vwt + MjYHtCWkw9QueUKZnDudX9qIzLAIt + mwSTu
A6 + fY4VWIg40AA0v3exaQM55YR / UhlKunpGG9o8Qkq77dMEbTMpOmBoLbOMRB3Dd
MAvVU6G2l6Pcb7KobVCuOBnb6batXARV / G8sw + nzfJ16fr / KobZT2A6m + Jrqk4dl
F14ljLbz16O5JGUPAryN2G2ddBdSAy7dtFSVhWWiWC9n88q5Ag0EPj6jHRAIAO /小时
iX8WzHWOMLJT54x / axeDdqn1rBDf5cWmaCWHN2ujNNlgpx5emoU9v7QStsNUCOGB
bXkeO4Ar7YG + jtSR33zqNh3y5kQ0YkY3dQ0wh6nsl + wh4XIIY / 3TUZVtmdJeUBRH
JlfVNFYad2hX1guFI37Ny1PoZAFsxO82g + XB / Se8r / + sbmVcONdcdIeFKrE3FjLt
IjNQcxC6l9Q2Oy8KDxG / zvUZG3 + H5i3tdRMyGgmuD6gEV0GXOHYUopzLeit1 + AA0
bCk36Mwbu + BeOw / CJW3 + b0mB27hOaf9aCA855IP6fJFvtxcblq8nHIqhU3Dc9tec
SL9 / S1xZ5S8ylG / xeRsAAwUH / i8KqmvAhq0X7DgCcYputwh37cuZlHOa1Ep07JRm
BCDgkdQXkGrsj2Wzw7Aw / TGdWWkmn2pxb8BRui5cfcZFO7c6vryi6FpJuLucX975
+ eVY50ndWkPXkJ1HF4i + HJwRqE2zliN / RHMs4LJcwXQvvjD43EE3AO6eiVFbD + QA
AdxUFoOeLblKNBHPG7DPG9xL + Ni5rkE + TXShxsB7F0z7ZdJJZOG0JODmox7IstQT
GoaU9u41oyZTIiXPiFidJoIZCh7fdurP8pn3X + R5HUNXMr7M + ba8lSNxce / F3kmH
0L7rsKqdh9d / aVxhJINJ + inVDnrXWVoXu9GBjT8Nco1iU9SIVAQYEQIADAUCTnc9
7QUJE / sBuAASB2VHUEcAAQEJEIxxjTtQcuH1FJsAmwWK9vmwRJ / y9gTnJ8PWf0BV
roUTAKClYAhZuX2nUNwH4vlEJQHDqYa5yQ ==
= ghXk
-----结束PGP公共钥匙块-----

要将构建密钥导入到您的个人公共GPG密钥环中,请使用 gpg --import 例如,如果已将密钥保存在已命名的文件中 mysql_pubkey.asc ,则import命令如下所示:

外壳> gpg --import mysql_pubkey.asc
gpg:key 5072E1F5:公钥“MySQL Release Engineering
<mysql-build@oss.oracle.com>“已导入
gpg:处理总数:1
gpg:已导入:1
gpg:找不到最终可靠的密钥

您还可以使用公钥ID从公钥服务器下载密钥 5072E1F5

shell> gpg --recv-keys 5072E1F5
gpg:从hkp服务器keys.gnupg.net请求密钥5072E1F5
gpg:key 5072E1F5:“MySQL Release Engineering <mysql-build@oss.oracle.com>”
1个新用户ID
gpg:key 5072E1F5:“MySQL Release Engineering <mysql-build@oss.oracle.com>”
53个新签名
gpg:找不到最终可靠的密钥
gpg:处理总数:1
gpg:新用户ID:1
gpg:新签名:53

如果要将密钥导入RPM配置以验证RPM安装包,则应该能够直接导入密钥:

外壳> rpm --import mysql_pubkey.asc

如果遇到问题或需要RPM特定信息,请参见 第2.1.3.4节“使用RPM进行签名检查”

下载并导入公共构建密钥后,下载所需的MySQL软件包和相应的签名,该签名也可从下载页面获得。 签名文件与具有 .asc 扩展 名的分发文件具有相同的名称, 如下表中的示例所示。

表2.1源文件的MySQL包和签名文件

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

确保两个文件都存储在同一目录中,然后运行以下命令以验证分发文件的签名:

外壳> gpg --verify package_name.asc

如果下载的包有效,您将看到类似于以下内容的“好签名”:

外壳> gpg --verify mysql-standard-8.0.18-linux-i686.tar.gz.asc
gpg:Signature made Tue 01 Feb 2011 02:38:30 AM CST使用DSA密钥ID 5072E1F5
gpg:来自“MySQL Release Engineering <mysql-build@oss.oracle.com>”的好签名

Good signature 与我们网站上列出的签名相比, 消息表明文件签名有效。 但您可能也会看到警告,如下所示:

外壳> gpg --verify mysql-standard-8.0.18-linux-i686.tar.gz.asc
gpg:签名于2013年1月23日星期三02:25:45使用DSA密钥ID 5072E1F5
gpg:检查trustdb
gpg:找不到最终可靠的密钥
gpg:来自“MySQL Release Engineering <mysql-build@oss.oracle.com>”的好签名
gpg:警告:此密钥未通过可信签名认证!
gpg:没有迹象表明签名属于所有者。
主键指纹:A4A9 4068 76FC BD3C 4567 70C8 8C71 8D3B 5072 E1F5

这是正常的,因为它们取决于您的设置和配置。 以下是对这些警告的解释:

  • gpg:找不到最终可信赖的密钥 :这意味着您或您的信任网不会“最终信任”特定密钥,这对于验证文件签名是可以的。

  • 警告:此密钥未通过可信签名认证! 没有迹象表明签名属于所有者。 :这是指您相信自己拥有真正的公钥的信任程度。 这是个人决定。 理想情况下,MySQL开发人员会亲自向您提供密钥,但更常见的是,您下载了密钥。 下载是否被篡改? 可能不是,但这个决定取决于你。 建立信任网是信任它们的一种方法。

有关如何使用公钥的更多信息,请参阅GPG文档。

2.1.3.3使用Gpg4win进行签名检查

第2.1.3.2,“签名检查使用GnuPG” 部分介绍如何使用GPG验证MySQL的下载。 该指南也适用于Microsoft Windows,但另一种选择是使用像 Gpg4win 这样的GUI工具 您可以使用不同的工具,但我们的示例基于Gpg4win,并利用其捆绑的 Kleopatra GUI。

下载并安装Gpg4win,然后加载Kleopatra。 该对话框应类似于:

图2.1 Kleopatra:初始屏幕

Shows the default Kleopatra screen. The top menu includes "File", "View", "Certificates", "Tools", "Settings", "Window", and "Help.". Underneath the top menu is a horizontal action bar with available buttons to "Import Certificates", "Redisplay", and "Lookup Certificates on Server". Greyed out buttons are "Export Certificates" and "Stop Operation". Underneath is a search box titled "Find". Underneath that are three tabs: "My Certificates", "Trusted Certificates", and "Other Certificates" with the "My Certificates" tab selected. "My Certificates" contains six columns: "Name", "E-Mail", "Valid From", "Valid Until", "Details", and "Key-ID". There are no example values.

接下来,添加MySQL Release Engineering证书。 通过单击 “服务器上的 文件 查找证书” 来执行此操作 在搜索框中键入“Mysql Release Engineering”,然后按“ 搜索”

图2.2 Kleopatra:服务器向导上的查找证书:查找证书

Shows a search input field titled "Find" with "mysql release engineering" entered. The one result contains the following values: Name=MySQL Release Engineering, E-Mail=mysql-build@oss.oracle.com, Valid From=2003-02-03, Valid Until="", Details=OpenPGP, Fingerprint=5072E1F5, and Key-ID=5072E1F5. Available action buttons are: Search, Select All, Deselect All, Details, Import, and Close.

选择“MySQL Release Engineering”证书。 指纹和密钥ID必须为“5072E1F5”,或选择 详细信息... 以确认证书有效。 现在,通过单击“ 导入” 将其 导入 将显示导入对话框,选择“ 确定” ,此证书现在将列在“ 导入的证书” 选项卡下。

接下来,配置证书的信任级别。 选择我们的证书,然后从主菜单中选择 证书 更改所有者信任...... 我们建议选择 我认为支票 对我们的证书 非常准确 ,否则您可能无法验证我们的签名。 选择 我认为检查非常准确 以启用“完全信任”,然后按 确定

图2.3 Kleopatra:MySQL发布工程的更改信任级别

A list of trust options are displayed, the options include "I don't know (unknown trust)", "I do NOT trust them (never trust)", "I believe checks are casual (marginal trust)", "I believe checks are very accurate (full trust)", and "This is my certificate (ultimate trust)". The "I believe checks are very accurate (full trust)" option is selected.

接下来,验证下载的MySQL包文件。 这需要打包文件和签名的文件。 签名文件必须与打包文件具有相同的名称,但具有附加的 .asc 扩展名,如下表中的示例所示。 签名链接到每个MySQL产品的下载页面。 您必须 .asc 使用此签名 创建 文件。

表2.2用于Microsoft Windows的MySQL安装程序的MySQL包和签名文件

文件类型 文件名
分发文件 mysql-installer-community-8.0.18.msi
签名文件 mysql-installer-community-8.0.18.msi.asc

确保两个文件都存储在同一目录中,然后运行以下命令以验证分发文件的签名。 将signature( .asc )文件 拖放 到Kleopatra中,或从 File Decrypt / Verify Files ... 加载对话框 ,然后选择 .msi .asc 文件。

图2.4 Kleopatra:Decrypt和Verify Files对话框

Shows available decrypt and verify options to perform. A MySQL Installer MSI file is used in the example where the .asc file is listed as "Input file" and the .msi file is listed under "Signed Data". The "Input file is detached signature" option's checkbox is checked. A "Input file is an archive; unpack with:" option is shown but greyed out. Below is the "Create all output files in a single folder" option checkbox that is checked, and an "Output folder" input field with "C:/docs" entered as an example. The available buttons are "Back" (greyed out), "Decrypt/Verify", and "Cancel."

单击“ 解密/验证” 以检查文件。 两个最常见的结果将如下所示,虽然黄色警告看起来有问题,但以下表示文件检查成功通过。 您现在可以运行此安装程序。

图2.5 Kleopatra:解密和验证结果对话框:所有操作都已完成

结果窗口的黄色部分显示“没有足够的信息来检查签名有效性”和“签名的有效性无法验证”。 还显示了关键信息,例如KeyID和电子邮件地址,日期上的密钥签名,还显示了ASC文件的名称。

看到红色“签名错误”错误表示文件无效。 如果看到此错误,请不要执行MSI文件。

图2.6 Kleopatra:解密和验证结果对话框:错误

结果窗口的红色部分显示“无效签名”,“使用未知证书签名”,“签名错误”,并显示ASC文件的名称。

第2.1.3.2,“签名检查使用GnuPG” 部分解释了为什么你可能不会看到一个绿色的 Good signature 结果。

2.1.3.4使用RPM进行签名检查

对于RPM软件包,没有单独的签名。 RPM软件包具有内置GPG签名和MD5校验和。 您可以通过运行以下命令来验证包:

外壳> rpm --checksig package_name.rpm

例:

外壳> rpm --checksig MySQL-server-8.0.18-0.linux_glibc2.5.i386.rpm
MySQL-server-8.0.18-0.linux_glibc2.5.i386.rpm:md5 gpg OK
注意

如果您使用的是RPM 4.1并且它抱怨 (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) ,即使您已将MySQL公共构建密钥导入到您自己的GPG密钥环中,您仍需要先将密钥导入RPM密钥环。 RPM 4.1不再使用您的个人GPG密钥环(或GPG本身)。 相反,RPM维护一个单独的密钥环,因为它是一个系统范围的应用程序,而用户的GPG公钥环是一个用户特定的文件。 要将MySQL公钥导入RPM密钥环,首先获取密钥,然后使用 rpm --import 导入密钥。 例如:

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

或者, rpm 还支持直接从URL加载密钥,您可以使用此手册页:

外壳> rpm --import https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html

如果需要获取MySQL公钥,请参见 第2.1.3.2节“使用GnuPG进行签名检查”

2.1.4安装布局

不同安装类型(例如,本机程序包,二进制tarball和源代码压缩包)的安装布局不同,这可能会在管理不同系统或使用不同安装源时导致混淆。 各个布局在相应的安装类型或平台章节中给出,如下所述。 请注意,Oracle以外的供应商的安装布局可能与这些布局不同。

2.1.5编译器特定的构建特征

在某些情况下,用于构建MySQL的编译器会影响可用的功能。 本节中的注释适用于Oracle Corporation提供的二进制发行版或您从源代码编译自己。

icc (英特尔C ++编译器)构建

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

  • 不包括SSL支持。

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

Oracle提供了一组MySQL的二进制发行版。 这些包括 用于许多平台 的压缩 tar 文件(具有 .tar.xz 扩展名的 文件 形式的通用二进制分发 ,以及用于所选平台的特定于平台的包格式的二进制文件。

本节介绍 在Unix / Linux平台上 从压缩的 tar 文件二进制发行版 安装MySQL 有关其他特定于平台的二进制包格式,请参阅本手册中其他特定于平台的部分。 例如,对于Windows发行版,请参见 第2.3节“在Microsoft Windows上安装MySQL” 有关 如何以 不同的分发格式获取MySQL, 请参见 第2.1.2节“如何获取MySQL”

MySQL压缩的 tar 文件二进制发行版具有表单的名称 ,其中 是数字(例如 ),并 指示分发所针对的操作系统的类型(例如, )。 mysql-VERSION-OS.tar.xz VERSION 8.0.18 OS pc-linux-i686 winx64

还有一个 用于Linux通用二进制发行 版的MySQL压缩 tar 文件 最小安装 版本,该 文件具有表单的名称 最小安装分发不包括调试二进制文件,并且剥离了调试符号,使其明显小于常规二进制分发。 如果您选择安装最小安装分发,请记住在随后的说明中调整文件名格式的差异。 mysql-VERSION-OS-minimal.tar.xz

警告
  • 如果您以前使用操作系统本机程序包管理系统(如Yum或APT)安装了MySQL,则使用本机二进制文件安装时可能会遇到问题。 确保您之前的MySQL安装已完全删除(使用您的包管理系统),并且还删除了任何其他文件,例如旧版本的数据文件。 您也应该检查配置文件,如 /etc/my.cnf /etc/mysql 目录,并删除它们。

    有关使用官方MySQL软件包替换第三方软件包的信息,请参阅相关的 APT指南 Yum指南

  • MySQL依赖于 libaio 库。 如果未在本地安装此库,则数据目录初始化和后续服务器启动步骤将失败。 如有必要,请使用适当的包管理器进行安装。 例如,在基于Yum的系统上:

    shell> yum search libaio  #搜索信息
    shell> yum install libaio#install library
    

    或者,在基于APT的系统上:

    shell> apt-cache search libaio#搜索信息
    shell> apt-get install libaio1#install library
    

要安装压缩的 tar 文件二进制分发版,请在您选择的安装位置(通常 /usr/local/mysql )将 其解压缩 这将创建下表中显示的目录。

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

目录 目录的内容
bin mysqld 服务器,客户端和实用程序
docs 信息格式的MySQL手册
man Unix手册页
include 包含(标题)文件
lib 图书馆
share 用于数据库安装的错误消息,字典和SQL
support-files 其他支持文件

mysqld 二进制文件的 调试版本 可用作 mysqld-debug 要从源代码分发中编译自己的MySQL调试版,请使用相应的配置选项来启用调试支持。 请参见 第2.9节“从源安装MySQL”

要安装和使用MySQL二进制分发版,命令序列如下所示:

shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> 
shell> 
shell> 
shell> 
shell> 
shell> 
shell> 
shell> 
shell>tar xvf /path/to/mysql-VERSION-OS.tar.xzln -s full-path-to-mysql-VERSION-OS mysqlcd mysqlmkdir mysql-fileschown mysql:mysql mysql-fileschmod 750 mysql-filesbin/mysqld --initialize --user=mysqlbin/mysql_ssl_rsa_setupbin/mysqld_safe --user=mysql &
#Next命令是可选的
外壳> cp support-files/mysql.server /etc/init.d/mysql.server
注意

此过程假定您具有 root (管理员)对系统的访问权限。 或者,您可以使用 sudo (Linux)或 pfexec (Solaris)命令为 每个命令添加前缀

mysql-files 目录提供了一个方便的位置,可用作 secure_file_priv 系统变量 的值 ,从而将导入和导出操作限制为特定目录。 请参见 第5.1.8节“服务器系统变量”

下面是用于安装二进制分发的前面描述的更详细版本。

创建一个mysql用户和组

如果您的系统还没有用于运行 mysqld 的用户和组 ,则可能需要创建它们。 以下命令添加 mysql 组和 mysql 用户。 您可能想要调用用户并将其他内容分组而不是 mysql 如果是这样,请在以下说明中替换相应的名称。 useradd groupadd 的语法 在不同版本的Unix / Linux上可能略有不同,或者它们可能有不同的名称,如 adduser addgroup

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

由于仅出于所有权目的而不是登录目的而要求用户,因此 useradd 命令使用 -r -s /bin/false 选项来创建对服务器主机没有登录权限的用户。 如果您的 useradd 不支持它们, 请忽略这些选项

获取并解压缩分发

选择要在其下解压缩分发的目录并将位置更改为该目录。 这里的示例解压缩下的分发 /usr/local 因此,这些说明假定您有权创建文件和目录 /usr/local 如果该目录受保护,则必须执行安装 root

外壳> cd /usr/local

使用 第2.1.2节“如何获取MySQL”中 的说明获取分发文件 对于给定的版本,所有平台的二进制发行版都是从相同的MySQL源代码分发构建的。

解压缩分发包,从而创建安装目录。 如果它有 选项支持, tar 可以解压缩并解压缩发行版 z

外壳> tar xvf /path/to/mysql-VERSION-OS.tar.xz

焦油 命令创建的目录 mysql-VERSION-OS

要从压缩的 tar 文件二进制分发版 安装MySQL ,您的系统必须具有GNU XZ Utils 来解压缩分发版并使用合理的 tar 来解压缩它。

注意

在MySQL Server 8.0.12中,压缩算法从Gzip更改为XZ; 并且通用二进制文件的文件扩展名从.tar.gz更改为.tar.xz。

已知 GNU tar 可以工作。 某些操作系统提供 的标准 tar 无法解析MySQL发行版中的长文件名。 您应该下载并安装GNU tar ,或者如果可用,请使用预安装的GNU tar版本。 通常这可以作为 gnutar gtar GNU或自由软件目录中的 tar 使用,例如 /usr/sfw/bin /usr/local/bin GNU tar 可从 http://www.gnu.org/software/tar/获得

如果您的 tar 不支持该 xz 格式,则使用 xz 命令解压缩分发和 tar 以解压缩它。 使用 以下替代命令 替换前面的 tar 命令以解压缩并提取分发:

外壳> xz -dc /path/to/mysql-VERSION-OS.tar.xz | tar x

接下来,创建一个指向 tar 创建的安装目录的符号链接

外壳> ln -s full-path-to-mysql-VERSION-OS mysql

ln 命令创建指向安装目录的符号链接。 这使您可以更轻松地引用它 /usr/local/mysql 为了避免在使用MySQL时始终键入客户端程序的路径名,可以将 /usr/local/mysql/bin 目录 添加 PATH 变量中:

外壳> export PATH=$PATH:/usr/local/mysql/bin

执行安装后设置

安装过程的其余部分涉及设置分发所有权和访问权限,初始化数据目录,启动MySQL服务器以及设置配置文件。 有关说明,请参见 第2.10节“安装后设置和测试”

2.3在Microsoft Windows上安装MySQL

重要

MySQL 8.0 Server要求Microsoft Visual C ++ 2015 Redistributable Package在Windows平台上运行。 在安装服务器之前,用户应确保已在系统上安装该软件包。 该软件包可从 Microsoft下载中心获得 此外,MySQL调试二进制文件需要安装Visual Studio 2015。

MySQL仅适用于Microsoft Windows 64位操作系统。 有关支持的Windows平台信息,请参阅 https://www.mysql.com/support/supportedplatforms/database.html

在Microsoft Windows上安装MySQL有不同的方法。

MySQL安装程序方法

最简单和推荐的方法是下载MySQL Installer(适用于Windows),并让它安装和配置特定版本的MySQL Server,如下所示:

  1. https://dev.mysql.com/downloads/installer/ 下载MySQL安装程序 并执行它。

    注意

    与标准的MySQL安装程序不同,较小的“网络社区”版本不捆绑任何MySQL应用程序,但会下载您选择安装的MySQL产品。

  2. 确定用于初始安装MySQL产品的安装类型。 例如:

    • Developer Default :提供一种安装类型,其中包括MySQL Server的选定版本以及与MySQL开发相关的其他MySQL工具,例如MySQL Workbench。

    • 仅限服务器 :为没有其他产品的所选MySQL服务器版本提供设置。

    • 自定义 :允许您选择任何版本的MySQL服务器和其他MySQL产品。

  3. 安装服务器实例(和产品),然后通过首先为服务器实例选择以下可用性级别之一来开始服务器配置:

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

      将服务器实例配置为在没有高可用性的情况下运行。

    • InnoDB集群

      提供基于MySQL Group Replication的两个配置选项:

      • 在本地主机上的沙箱InnoDB集群中配置多个服务器实例(仅用于测试)。

      • 创建一个新的InnoDB集群并配置一个种子实例或将新的服务器实例添加到现有的InnoDB集群。

  4. 按照屏幕上的说明完成配置过程。 有关每个步骤的更多信息,请参见 第2.3.3.3.1节“使用MySQL Installer进行MySQL服务器配置”

MySQL现已安装。 如果您将MySQL配置为服务,则每次重新启动系统时Windows都会自动启动MySQL服务器。 此外,此过程会在本地主机上安装MySQL Installer应用程序,稍后您可以使用该应用程序升级或重新配置MySQL服务器。

注意

如果您在系统上安装了MySQL Workbench,请考虑使用它来检查新的MySQL服务器连接。 默认情况下,程序在安装MySQL后自动启动。

其他安装信息

可以将MySQL作为标准应用程序或Windows服务运行。 通过使用服务,您可以通过标准Windows服务管理工具监视和控制服务器的操作。 有关更多信息,请参见 第2.3.5.8节“将MySQL作为Windows服务启动”

为了适应该 RESTART 语句,MySQL服务器在作为服务或独立运行时分叉,以使监视进程能够监督服务器进程。 在这种情况下,您将观察到两个 mysqld 进程。 如果 RESTART 不需要功能,则可以使用该 --no-monitor 选项 启动服务器 请参见 第13.7.7.8节“RESTART语法”

通常,您应该使用具有管理员权限的帐户在Windows上安装MySQL。 否则,您可能会遇到某些操作的问题,例如编辑 PATH 环境变量或访问 服务控制管理器 安装后,不需要使用具有管理员权限的用户执行MySQL。

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

除了MySQL Server软件包之外,您可能还需要或希望其他组件在您的应用程序或开发环境中使用MySQL。 这些包括但不限于:

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

    注意

    MySQL Installer将为您安装和配置Connector / ODBC。

  • 要将MySQL服务器与.NET应用程序一起使用,必须具有Connector / NET驱动程序。 有关更多信息,包括安装和配置说明,请参阅 MySQL Connector / NET Developer Guide

    注意

    MySQL Installer将为您安装和配置MySQL Connector / NET。

适用于Windows的MySQL发行版可以从 https://dev.mysql.com/downloads/ 下载 请参见 第2.1.2节“如何获取MySQL”

MySQL for Windows有几种分发格式,详见此处。 一般来说,您应该使用MySQL Installer。 它包含比旧版MSI更多的功能和MySQL产品,比压缩文件更易于使用,并且您无需其他工具即可启动并运行MySQL。 MySQL安装程序自动安装MySQL服务器和其他MySQL产品,创建选项文件,启动服务器,并使您能够创建默认用户帐户。 有关选择包的更多信息,请参见 第2.3.2节“选择安装包”

MySQL上的Windows注意事项

  • 大桌支持

    如果需要大小超过4GB的表,请在NTFS或更新的文件系统上安装MySQL。 不要忘记使用 MAX_ROWS AVG_ROW_LENGTH 创建表时。 请参见 第13.1.20节“CREATE TABLE语法”

  • MySQL和病毒检查软件

    包含MySQL数据和临时表的目录上的病毒扫描软件(如Norton / Symantec Anti-Virus)可能会导致MySQL的性能和病毒扫描软件错误识别包含垃圾邮件的文件内容等问题。 这是由于病毒扫描软件使用的指纹识别机制,以及MySQL快速更新不同文件的方式,这可能被识别为潜在的安全风险。

    安装MySQL Server后,建议您在 datadir 用于存储MySQL表数据 的主目录( 上禁用病毒扫描 病毒扫描软件通常内置一个系统,可以忽略特定的目录。

    此外,默认情况下,MySQL会在标准Windows临时目录中创建临时文件。 要防止临时文件也被扫描,请为MySQL临时文件配置单独的临时目录,并将此目录添加到病毒扫描例外列表中。 为此,请将 tmpdir 参数 的配置选项添加 my.ini 配置文件中。 有关更多信息,请参见 第2.3.5.2节“创建选项文件”

2.3.1 Microsoft Windows上的MySQL安装布局

对于Windows上的MySQL 8.0,默认安装目录 C:\Program Files\MySQL\MySQL Server 8.0 用于使用MySQL Installer执行的安装。 如果您使用ZIP存档方法安装MySQL,您可能更喜欢安装 C:\mysql 但是,子目录的布局保持不变。

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

表2.4 Microsoft Windows的默认MySQL安装布局

目录 目录的内容 笔记
bin mysqld 服务器,客户端和实用程序
%PROGRAMDATA%\MySQL\MySQL Server 8.0\ 日志文件,数据库 Windows系统变量 %PROGRAMDATA% 默认为 C:\ProgramData
docs 发布文档 使用MySQL Installer,使用该 Modify 操作选择此可选文件夹。
include 包含(标题)文件
lib 图书馆
share 其他支持文件,包括错误消息,字符集文件,示例配置文件,用于数据库安装的SQL

2.3.2选择安装包

对于MySQL 8.0,在Windows上安装MySQL时有多种安装包格式可供选择。 本节中描述的包格式为:

程序数据库(PDB)文件(文件扩展名为 pdb )可在出现问题时提供有关调试MySQL安装的信息。 这些文件包含在MySQL的ZIP Archive分发版(但不包括MSI发行版)中。

MySQL安装程序

该软件包具有类似于 mysql-installer-community-8.0.18.0.msi 的文件名 mysql-installer-commercial-8.0.18.0.msi ,并利用MSI自动安装MySQL服务器和其他产品。 MySQL Installer将下载并应用更新到自身以及每个已安装的产品。 它还配置已安装的MySQL服务器(包括沙箱InnoDB集群测试设置)和MySQL路由器。 建议大多数用户使用MySQL Installer。

MySQL Installer可以安装和管理(添加,修改,升级和删除)许多其他MySQL产品,包括:

  • 应用程序 - MySQL Workbench,用于Visual Studio的MySQL,用于Excel的MySQL,用于MySQL Shell和MySQL路由器(请参阅 https://dev.mysql.com/doc/mysql-compat-matrix/en/

  • 连接器 - MySQL Connector / C,MySQL Connector / C ++,MySQL Connector / NET,Connector / ODBC,MySQL Connector / Python,MySQL Connector / J,MySQL Connector / Node.js

  • 文档 - MySQL手册(PDF格式),示例和示例

MySQL Installer在所有MySQL支持的Windows版本上运行(请参阅 https://www.mysql.com/support/supportedplatforms/database.html )。

注意

由于MySQL Installer不是Microsoft Windows的本机组件,并且依赖于.NET,因此它不适用于最小的安装选项,如Windows Server的Server Core版本。

有关如何使用MySQL Installer安装MySQL的说明,请参见 第2.3.3节“用于Windows的MySQL安装程序”

MySQL noinstall ZIP Archives

这些软件包包含完整MySQL Server安装包中的文件,但GUI除外。 此格式不包括自动安装程序,必须手动安装和配置。

noinstall ZIP档案被分成两个单独的压缩文件。 主包名为 这包含在系统上使用MySQL所需的组件。 可选的MySQL测试套件,MySQL基准套件和调试二进制文件/信息组件(包括PDB文件)位于一个名为的单独压缩文件中 mysql-VERSION-winx64.zip mysql-VERSION-winx64-debug-test.zip

如果您选择安装 noinstall ZIP存档,请参见 第2.3.5节“使用 noinstall ZIP存档 在Microsoft Windows上安装MySQL

MySQL Docker镜像

有关在Windows平台上使用Oracle提供的MySQL Docker映像的信息,请参见 第2.5.6.3节“使用Docker在Windows和其他非Linux平台上部署MySQL”

警告

Oracle提供的MySQL Docker映像专为Linux平台构建。 其他平台不受支持,从Oracle运行MySQL Docker镜像的用户自行承担风险。

2.3.3适用于Windows的MySQL安装程序

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

  • MySQL服务器

    MySQL Installer可以同时在同一主机上安装和管理多个独立的MySQL服务器实例。 例如,MySQL Installer可以在同一主机上安装,配置和升级MySQL 5.6,MySQL 5.7和MySQL 8.0的单独实例。 MySQL Installer不允许主版本号和次版本号之间的服务器升级,但允许在版本系列中进行升级(例如5.7.18到5.7.19)。

    注意

    MySQL Installer无法 在同一主机上安装MySQL服务器的 Community Commercial (标准版和企业版)版本。 如果您需要在同一主机上同时发布这两个版本,请考虑使用 ZIP存档 分发来安装其中一个版本。

  • MySQL应用程序

    MySQL Workbench,MySQL Shell,MySQL路由器,用于Visual Studio的MySQL,用于Excel的MySQL,MySQL通知程序和MySQL实用程序。

  • MySQL连接器

    MySQL Connector / NET,MySQL Connector / Python,MySQL Connector / ODBC,MySQL Connector / J,MySQL Connector / C和MySQL Connector / C ++。

    注意

    要安装MySQL Connector / Node.js,请参阅 https://dev.mysql.com/downloads/connector/nodejs/ Connector / Node.js不提供 .msi 与MySQL Installer一起使用 文件。

  • 文档和示例

    MySQL参考手册(按版本)PDF格式和MySQL数据库样本(按版本)。

安装要求

MySQL Installer需要Microsoft .NET Framework 4.5.2或更高版本。 如果主机上未安装此版本,则可以通过访问 Microsoft网站 下载该版本

MySQL安装程序社区发布

https://dev.mysql.com/downloads/installer/ 下载软件, 以安装适用于Windows的所有MySQL产品的Community版本。 选择以下MySQL Installer程序包选项之一:

  • Web :仅包含MySQL安装程序和配置文件。 Web包仅下载您选择安装的MySQL产品,但每次下载都需要Internet连接。 该文件的大小约为2 MB; 该文件的名称的形式为 ,其中 是MySQL服务器的版本号,如8.0和 是包号,它从0开始。 mysql-installer-community-web-VERSION.N.msi VERSION N

  • 完整或当前捆绑包 :捆绑所有适用于Windows的MySQL产品(包括MySQL服务器)。 的文件大小为300 MB,该名称的形式为 ,其中 是MySQL服务器的版本号,如8.0和 是包号,它从0开始。 mysql-installer-community-VERSION.N.msi VERSION N

MySQL安装程序商业版

https://edelivery.oracle.com/ 下载软件 以安装适用于Windows的MySQL产品的商业(标准版或企业版)版本。 商业版本包括社区版本中的所有当前和以前的GA版本(不包括开发里程碑版本),还包括以下产品:

  • 工作台SE / EE

  • MySQL企业备份

  • MySQL企业防火墙

Commercial版本与My Oracle Support(MOS)帐户集成。 有关知识库内容和修补程序,请参阅 My Oracle Support

2.3.3.1 MySQL安装程序初始设置

当您第一次下载MySQL安装程序时,安装向导将指导您完成MySQL产品的初始安装。 如下图所示,初始设置是整个过程中的一次性活动。 MySQL安装程序在初始设置期间检测主机上安装的现有MySQL产品,并将它们添加到要管理的产品列表中。

图2.7 MySQL安装程序流程概述

MySQL安装程序进程。 非重复步骤:下载MySQL安装程序;  执行初始设置。 重复步骤:安装产品(下载产品,运行.msi文件,配置和安装完成);  管理产品并更新MySQL Installer目录。

MySQL安装程序在初始设置期间将配置文件(稍后描述)提取到主机的硬盘驱动器。 虽然MySQL Installer是一个32位应用程序,但它可以安装32位和64位二进制文​​件。

初始设置会在 MySQL 下的“开始”菜单中添加一个链接 单击 开始 所有程序 MySQL MySQL安装程序 以打开MySQL安装程序。

MySQL安装程序许可和支持身份验证

MySQL安装程序要求您在安装新的MySQL软件包之前接受许可协议。 接受协议条款后,您可以添加,更新,重新配置和删除您下载的MySQL Installer版本提供的所有产品和功能。

对于Commercial版本,在安装捆绑的MySQL产品时输入My Oracle Support(MOS)凭据是可选的,但在选择MySQL Installer必须下载的非捆绑MySQL产品时需要您的凭据。 非捆绑产品是 .msi 在初始设置后使用MySQL Installer下载的 任何 文件。 您的凭据必须与您在Oracle中注册的用户名和密码相匹配,才能访问支持站点。

选择安装类型

在初始设置期间,系统会提示您选择要在主机上安装的MySQL产品。 一种替代方法是使用符合您的设置要求的预定安装类型。 默认情况下,GA和预发布产品都包含在下载和安装中,包括 Developer Default Client only Full setup类型。 选择 仅安装GA产品 选项以限制产品集仅在使用这些安装类型时包含GA产品。

选择以下安装类型之一仅确定初始安装,并且不会限制您以后安装或更新Windows产品的能力:

  • 开发人员默认值 :安装以下与MySQL合作开发应用程序的产品:

  • 仅限服务器 :仅安装MySQL服务器。 此安装类型安装您下载MySQL安装程序时选择的通用可用性(GA)或开发版本服务器。 它使用默认安装和数据路径。

  • 仅限客户端 :仅安装最新的MySQL应用程序和MySQL连接器。 此安装类型与类型类似 Developer Default ,不同之处在于它不包括MySQL服务器或通常与服务器捆绑在一起的客户端程序,例如 mysql mysqladmin

  • 完整 :安装所有可用的MySQL产品。

  • 自定义自 定义安装类型使您可以从中筛选和选择单个MySQL产品 MySQL安装程序目录中

    使用 Custom 安装类型进行安装:

    • 通常下载位置无法提供的产品或产品版本。 该目录包含所有产品版本,包括预发布(或开发)与GA之间的其他版本。

    • 使用备用安装路径,数据路径或两者的MySQL服务器实例。 有关如何调整路径的说明,请参见 第2.3.3.2节“使用MySQL安装程序设置备用服务器路径”

    • 同一主机上同时有两个或多个MySQL服务器版本(例如,5.6,5.7和8.0)。

    • 产品和功能的特定组合不作为预定安装类型提供。 例如,您可以安装单个产品,例如MySQL Workbench,而不是安装Windows的所有客户端应用程序。

路径冲突

当主机上已存在要安装的产品的默认安装或数据文件夹(MySQL服务器所需)时,向导将显示“ 路径冲突” 步骤以识别每个冲突,并使您能够采取措施以避免在现有文件夹中包含文件被新安装覆盖。 只有在MySQL Installer检测到冲突时,才会在初始设置中看到此步骤。

要解决路径冲突,请执行以下操作之一:

  • 从列表中选择产品以显示冲突选项。 警告符号表示哪个路径存在冲突。 使用“浏览”按钮选择新路径,然后单击“ 下一步”

  • 如果适用,请 单击“上 一步” 以选择其他安装类型或产品版本。 通过 Custom 设置类型,您可以选择单个产品版本。

  • 单击“ 下一步” 忽略冲突并覆盖现有文件夹中的文件。

  • 删除现有产品。 单击“ 取消” 以停止初始设置并关闭MySQL安装程序。 从“开始”菜单再次打开MySQL安装程序,并使用 仪表板中 的“删除”操作从主机中删除已安装的产品

检查要求

MySQL Installer使用 package-rules.xml 文件中的 条目 来确定是否在主机上安装了每个产品的必备软件。 当需求检查失败时,MySQL安装程序会显示“ 检查要求” 步骤以帮助您更新主机。 下图标识并描述了此步骤的关键区域。

图2.8检查要求

下载并安装任何要求之前的MySQL安装程序检查要求。

检查要求元素的描述
  1. 显示初始设置中的当前步骤。 此列表中的步骤可能会略有不同,具体取决于主机上已安装的产品,必备软件的可用性以及要在主机上安装的产品。

  2. 按产品列出所有待处理的安装要求,并指示状态如下:

    • 状态” 中的空白 表示MySQL Installer可以尝试下载并安装所需的软件。

    • 状态” 中的 手动 ”一词 表示您必须手动满足要求。 选择列表中的每个产品以查看其要求详细信息。

  3. 详细描述要求以帮助您完成每个手动解决方案。 如果可能,提供下载URL。 下载并安装所需软件后,单击“ 检查” 以验证是否已满足要求。

  4. 提供以下设置操作以继续:

    • 返回 - 返回上一步。 此操作使您可以选择不同的设置类型。

    • 执行 - 让MySQL安装程序尝试下载并安装所有项目所需的软件,而无需手动状态。 手动要求由您解决,并通过单击 检查 进行验证

    • 下一步 - 不执行自动应用要求的请求,并继续安装,不包括未通过检查要求步骤的产品。

    • 取消 - 停止安装MySQL产品。 由于已安装MySQL Installer,因此从“开始”菜单打开MySQL Installer并 从仪表板中 单击“ 添加” 时,将再次开始初始设置 有关可用管理操作的说明,请参阅 产品目录

MySQL安装程序配置文件

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

注意

更新或卸载MySQL Installer时,既不会更改也不会删除已安装的MySQL产品。

表2.5 MySQL安装程序配置文件

文件或文件夹 描述 文件夹层次结构
MySQL Installer for Windows 此文件夹包含运行MySQL Installer和 MySQLInstallerConsole.exe 所需的所有文件 ,这是一个具有类似功能的命令行程序。 C:\Program Files (x86)
Templates Templates 文件夹为每个版本的MySQL服务器都有一个文件。 模板文件包含用于动态计算某些值的键和公式。 C:\ProgramData\MySQL\MySQL Installer for Windows\Manifest
package-rules.xml

此文件包含要安装的每个产品的先决条件。

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

products 文件(或产品目录)中包含的所有可以下载的产品列表。

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

Product Cache 文件夹包含 .msi 与完整软件包捆绑在一起或之后下载的 所有独立 文件。

C:\ProgramData\MySQL\MySQL Installer for Windows

2.3.3.2使用MySQL安装程序设置备用服务器路径

您可以在安装MySQL服务器时更改默认安装路径,数据路径或两者。 安装服务器后,如果不删除并重新安装服务器实例,则无法更改路径。

更改MySQL服务器的路径

  1. 确定要更改的MySQL服务器并显示“ 高级选项” 链接。

    1. 通过执行以下操作之一 导航到“ 选择产品和功能” 步骤:

      1. 如果这是 MySQL Installer 初始设置 ,请选择 Custom 安装类型,然后单击“ 下一步”

      2. 如果已安装MySQL Installer,请从“开始”菜单启动它,然后 从仪表板中 单击“ 添加 ”。

    2. 单击“ 编辑” 以在 可用 产品中显示的产品列表上应用筛选器 (请参阅 查找要安装的产品

    3. 选择服务器实例后,使用箭头将所选服务器移动 到要安装 产品/功能 列表。

    4. 单击服务器以选择它。 选择服务器时,将 显示 高级选项” 链接。 有关详细信息,请参见下图。

  2. 单击“ 高级选项” 以打开一个对话框,您可以在其中输入备用路径名称。 验证路径名后,单击“ 下一步” 继续配置步骤。

    图2.9更改MySQL服务器路径

    内容在周围文本中描述。

2.3.3.3 MySQL安装程序的安装工作流程

MySQL Installer提供了一个类似向导的工具来安装和配置Windows的新MySQL产品。 与仅运行一次的初始设置不同,每次下载或安装新产品时,MySQL安装程序都会调用该向导。 对于首次安装,初始设置的步骤直接进入安装步骤。

注意

对执行MySQL Installer的用户授予对所有生成文件的完全权限,例如 my.ini 这并不适用于文件和目录的特定产品,如MySQL服务器数据目录 %ProgramData% 是所拥有 SYSTEM

在主机上安装和配置的产品遵循可能需要在各个步骤中输入的一般模式。 MySQL Installer使用以下工作流程将所有选定的产品加载到一起:

  • 产品下载。  如果您安装了完整(非Web)MySQL Installer程序包, .msi Product Cache 在初始设置期间 所有 文件都已加载到该 文件夹,并且不会再次下载。 否则,单击“ 执行” 开始下载。 每个产品的状态从更改 Downloading Downloaded

  • 产品安装。  每个产品列表中的变化从状态 Ready to Install Installing ,最后到 Complete 在此过程中,单击“ 显示详细信息” 以查看安装操作。

    如果此时取消安装,则会安装产品,但尚未配置服务器(如果已安装)。 要重新启动服务器配置,请从“开始”菜单打开MySQL Installer,然后单击 仪表板中相应服务器旁边 的“ 重新配置” 链接。

  • 产品配置。  此步骤仅适用于MySQL服务器,MySQL路由器和示例。 列表中每个项目的状态应该表明 Ready to Configure

    单击“ 下一步” 以启动列表中所有项目的配置向导。 此步骤中显示的配置选项特定于您选择安装的数据库或路由器的版本。

    单击“ 执行” 以开始应用配置选项,或单击“上 一步” (重复)以返回到每个配置页。 单击 Finish 打开 MySQL Installer仪表板

  • 安装完成。  此步骤最终确定不需要配置的产品的安装。 它使您能够将日志复制到剪贴板并启动某些应用程序,例如MySQL Workbench和MySQL Shell。 单击 Finish 打开 MySQL Installer仪表板

2.3.3.3.1使用MySQL安装程序配置MySQL服务器

MySQL Installer执行MySQL服务器的初始配置。 例如:

  • 对于MySQL 8.0发行版系列,可以将服务器配置为作为独立数据库运行,作为单个主机上的沙箱InnoDB集群运行,或者在本地网络内创建生产InnoDB集群(请参阅 第2.3.3.3.1.1节,高可用性“ )。

  • 它创建 my.ini 用于配置MySQL服务器 的配置文件( )。 写入此文件的值受安装过程中所做选择的影响。 一些定义取决于主机。 例如,如果主机的内核少于三个,则启用query_cache。

    注意

    查询缓存在MySQL 5.7中已弃用,在MySQL 8.0(及更高版本)中已删除。

  • 默认情况下,会添加MySQL服务器的Windows服务。

  • 提供MySQL服务器的默认安装和数据路径。 有关如何更改默认路径的说明,请参见 第2.3.3.2节“使用MySQL安装程序设置备用服务器路径”

  • 它可以选择创建具有基于常规角色的可配置权限的MySQL服务器用户帐户,例如DB Administrator,DB Designer和Backup Admin。 它可选地创建一个 MysqlSys 以有限权限 命名的Windows用户 ,然后运行MySQL服务器。

    用户帐户也可以在MySQL Workbench中添加和配置。

  • 选中“ 显示高级选项” 可以设置其他“ 日志选项” 这包括为错误日志,常规日志,慢查询日志定义自定义文件路径(包括执行查询所需的秒数配置)和二进制日志。

在配置过程中,单击“ 下一步” 继续 下一步 ,或 单击 上一步” 返回 上一步。 单击“ 执行” 在最后一步 ”以应用服务器配置。

以下部分描述了适用于Windows上MySQL服务器的服务器配置选项。 您安装的服务器版本将确定您可以配置的步骤和选项。 配置MySQL服务器可能包括部分或全部步骤。

2.3.3.3.1.1高可用性

MySQL Installer使您能够使用MySQL Group Replication将MySQL Server作为独立实例或高可用性集群的成员进行安装,配置和部署。 在任何一种情况下,MySQL Installer都会将服务器(或服务器)的安装和配置限制为本地Windows主机。

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

    选择此选项可将一个MySQL实例配置为作为独立数据库服务器运行。 如果您打算稍后设置经典复制,然后将此服务器包含在自定义解决方案中,则此选项非常理想。 其余的配置步骤将在后面的部分中介绍,从 类型和网络开始

  • InnoDB集群

    选择此选项可创建或扩展基于MySQL Group Replication的InnoDB集群解决方案(请参见 第21.1节“InnoDB集群简介” )。 您可以配置(或重新配置)至少三个服务器实例,以在单台计算机上执行基本设置作为仅测试沙箱群集,或在本地网络中创建生产群集。

    InnoDB集群日志详细程度。  此配置步骤包括可调整日志,该日志在生产或沙箱集群中的每个服务器实例的配置期间捕获信息。 值为: MINIMAL MEDIUM (默认值)和 DEBUG 如果群集配置失败,请使用 MySQL Installer仪表板 中的“重新 配置” 操作 重新启动配置,然后将详细级别设置为 在下次尝试期间收集其他信息。 DEBUG

    MySQL Installer提供以下配置变体来部署InnoDB集群:

    • 设置仅用于测试的本地服务器群集

      选择“ 创建沙盒InnoDB集群以进行测试” 以启用此选项。 出现提示时,定义群集中的服务器沙箱实例数,为 root 用户 设置密码 ,并根据需要调整InnoDB群集日志详细级别。 有关配置的更详细说明,请参阅 使用MySQL安装程序部署Sandbox InnoDB群集 此设置需要MySQL 5.7.17或更高版本。

    • 创建或加入InnoDB集群

      要使用MySQL Installer设置高可用性InnoDB集群,您必须在本地网络上至少拥有三台计算机。 如果需要更高级的设置,请使用MySQL Shell配置群集中的部分或全部服务器实例。 有关如何执行本地网络群集设置的详细信息,请参阅 使用MySQL Installer设置InnoDB群集 此设置需要MySQL 8.0.0或更高版本。

    InnoDB集群旨在与MySQL Shell一起运行,使您可以执行高级集群管理,并使用MySQL路由器自动执行客户端应用程序和服务器实例之间的连接。 使用MySQL Installer在Windows上部署集群不需要MySQL Shell和MySQL Router。

使用MySQL安装程序部署Sandbox InnoDB群集

沙箱部署包括在同一台计算机上一起运行的多个服务器沙箱实例。 由于所有服务器实例都驻留在同一台计算机上,因此沙箱群集无法满足高可用性解决方案的要求。 相反,此部署选项模拟了一个环境,您可以从中探索与InnoDB集群管理相关的技术。

选择“ 创建沙盒InnoDB集群以进行测试”时 ,后续步骤会提示您选择由三个,五个,七个或九个MySQL服务器实例组成的集群。 与MySQL Installer提供的其他服务器设置不同,沙箱部署会跳过通常的服务器配置步骤(身份验证方法除外)。 命名的结果集群 sandboxCluster 可在为您配置的选定端口上使用。

注意

如果使用MySQL Shell手动为沙盒InnoDB集群设置了这些端口,MySQL Installer会在配置期间删除端口3310到3390。

每个沙箱实例都配置为作为进程(而不是Windows服务)运行。 重新启动计算机后,必须手动启动沙箱群集中的每个实例。

创建测试群集后,单击“ 摘要” 选项卡以查看适用于群集的特定端口。 要修改现有集群中的服务器实例数或调整日志记录级别,请使用 MySQL Installer仪表板中 重新配置 快速操作

警告

重新配置群集或升级沙箱群集中的服务器实例时,MySQL Installer会删除所有现有沙箱群集数据。

MySQL Installer将所有沙盒InnoDB集群配置条目存储在该 installer_config.xml 文件中。 默认情况下,MySQL Installer会 %userprofile%\MySQL\mysql-sandboxes 在本地主机上 创建沙箱实例

使用MySQL安装程序设置InnoDB集群

要创建单个InnoDB集群,请选择 InnoDB Cluster 作为高可用性选项,然后选择 Create a New InnoDB Cluster 调整日志详细级别(根据需要),然后单击“ 下一步” 以配置第一个服务器实例。 此设置过程涉及在多台计算机上安装和运行MySQL Installer。

通过提供以下配置信息来定义第一个服务器实例(或种子):

  • InnoDB群集名称:

    默认群集名称是 myCluster 如果要配置多个群集,请将默认名称替换为解决方案中有意义的名称。 字母数字字符,空格和下划线( _ )字符对此字段有效。 限制为40个字符。

  • 群集管理员用户名:

    默认的群集管理员名称是 ic 您可以跨多个群集重用相同的MySQL管理帐户。 稍后在配置其他服务器实例以加入群集时,系统将提示您输入此帐户名(和密码)。 限制为32个字符。

  • 群集管理员密码:

    输入群集管理员帐户的密码(最小长度为四个字符)。 MySQL安装程序将在您键入时评估MySQL密码的强度。 使用“ 重复密码” 字段确认密码。

  • 主机地址:

    从列表中选择本地主机的主机名或IP地址。 将其他服务器实例连接到群集时,系统将提示您通过主机名或IP地址标识种子实例。

  • 服务器ID:

    默认值为 1 需要此标识符才能在二进制日志中记录服务器实例的事件。 群集中每个服务器实例的ID必须是唯一的; 但是,您可以在不同的群集中重复使用相同的数字。 您在此字段中指定的服务器ID也会在“高级选项”步骤中稍后显示。 如果更改“高级选项”中的值,则InnoDB群集设置的编号也会更改。

单击“ 下一步” ,然后完成其余的配置步骤,这些步骤将在以下各节中介绍,从“ 类型”和“网络”开始 添加种子实例并创建群集后,需要更多实例才能获得完全容差。 此时,状态为 OK_NO_TOLERANCE

要将第二个和第三个服务器实例添加到群集,必须在本地网络内使用单独的计算机。 需要种子实例的一些配置详细信息才能完成连接操作。

启动MySQL Installer并在下一台计算机上安装服务器实例后,通过选择 InnoDB Cluster 作为高可用性选项 开始配置 ,然后选择 将本地MySQL服务器实例添加到InnoDB群集 调整 InnoDB Cluster Log Verbosity Level (根据需要),然后单击 Next

通过提供以下配置信息来定义加入服务器实例:

  • 种子实例地址:

    输入承载种子实例的计算机的主机名或IP地址。

  • 种子实例端口:

    默认值是 3306 ,这是经典MySQL的端口。 使用为种子实例配置的相同TCP端口。

  • 群集管理员用户名:

    默认的群集管理员名称是 ic 如果在配置种子实例时分配了其他名称,请输入备用群集管理员名称。

  • 群集管理员密码:

    输入分配给集群管理员帐户的密码。

  • 主机地址:

    从列表中选择本地主机的主机名或IP地址。

  • 服务器ID:

    默认值为 1 需要此标识符才能在二进制日志中记录服务器实例的事件。 群集中每个服务器实例的ID必须是唯一的; 但是,您可以在不同的群集中重复使用相同的数字。 您在此字段中指定的服务器ID也会在“高级选项”步骤中稍后显示。 如果更改“高级选项”中的值,则InnoDB群集设置的编号也会更改。

  • 测试连接

    使用此按钮可验证本地服务器实例与为群集定义的种子实例之间的连接。 需要有效连接才能继续。

单击“ 下一步” ,然后完成其余的配置步骤,这些步骤将在以下各节中介绍,从“ 类型”和“网络”开始

通过群集中的一个种子实例和第二个服务器实例,状态为 OK_NO_TOLERANCE 添加第三个服务器实例后,状态为 OK ,表示群集现在可以容忍一个实例的故障。

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

    选择描述您的设置的MySQL服务器配置类型。 此设置定义将分配给MySQL服务器实例的系统资源(内存)量。

    • 开发 :一台可以托管许多其他应用程序的机器,通常这是您的个人工作站。 此选项将MySQL配置为使用最少的内存。

    • 服务器 :此计算机上将运行其他几个应用程序,例如Web服务器。 此选项将MySQL配置为使用中等内存量。

    • Dedicated :专用于运行MySQL服务器的机器。 因为没有其他主要应用程序将在此服务器上运行,例如Web服务器,所以此选项将MySQL配置为使用大部分可用内存。

  • 连接

    连接选项控制如何与MySQL建立连接。 选项包括:

    • TCP / IP :您可以在此处启用TCP / IP网络,否则只允许本地主机连接。 还定义 端口 (用于经典MySQL协议), X协议端口 (用于MySQL作为文档存储),以及是否打开防火墙端口以进行网络访问。 如果端口号已在使用中,您将看到 默认值旁边 的信息图标( ),并且 在您提供新端口号之前 Next将 被禁用。

    • 命名管道 :启用并定义管道名称,类似于使用该 --enable-named-pipe 选项。 默认名称是 MySQL

    • 共享内存 :启用然后定义内存名称,类似于使用该 --shared-memory 选项。 默认名称是 MySQL

  • 高级配置

    选中“ 显示高级和日志选项” 以在后续步骤中设置自定义日志记录和高级选项。 “日志记录选项”步骤使您可以为错误日志,常规日志,慢速查询日志(包括执行查询所需的秒数配置)和二进制日志定义自定义文件路径。 “高级选项”步骤使您可以设置在复制拓扑中启用二进制日志记录时所需的唯一服务器ID。

  • MySQL企业防火墙(仅限企业版)

    默认情况下,选中 启用企业防火墙” 复选框。 有关安装后的说明,请参见 第6.4.7节“MySQL Enterprise Firewall”

2.3.3.3.1.3认证方法

身份验证方法 ,仅在MySQL 8.0.4或更高版本的安装或升级过程中的步骤是可见的。 它介绍了两种服务器端身份验证选项之间的选择。 您在下一步中创建的MySQL用户帐户将使用您在此步骤中选择的身份验证方法。

使用 libmysqlclient 8.0的 MySQL 8.0连接器和社区驱动程序 现在支持 mysql_native_password 默认的身份验证插件。 但是,如果您无法更新客户端和应用程序以支持此新身份验证方法,则可以将MySQL服务器配置 mysql_native_password 为用于旧身份验证。 有关此更改含义的更多信息,请参阅 caching_sha2_password作为首选身份验证插件

如果要安装或升级到MySQL 8.0.4或更高版本,请选择以下身份验证方法之一:

  • 使用强密码加密进行身份验证(推荐)

    MySQL 8.0支持基于改进的,更强大的基于SHA256的密码方法的新身份验证。 建议所有新的MySQL服务器安装都使用此方法。

    重要

    caching_sha2_password 服务器上进行验证插件需要连接器和客户端,当中添加对新的MySQL 8.0的默认身份验证支持的新版本。

  • 使用传统身份验证方法(保留MySQL 5.x兼容性)

    仅在以下情况下才应考虑使用旧的MySQL 5.x遗留身份验证方法:

    • 无法更新应用程序以使用MySQL 8.0连接器和驱动程序。

    • 重新编译现有应用程序是不可行的。

    • 尚未提供更新的特定于语言的连接器或驱动程序。

2.3.3.3.1.4账户和角色
  • Root帐户密码

    需要分配root密码,在执行其他MySQL Installer操作时将要求您输入密码。 在提供的框中重复密码时,将评估密码强度。 有关密码要求或状态的描述性信息,请 在出现时 将鼠标指针移到信息图标( )上。

  • MySQL用户帐户(可选)

    单击 添加用户 编辑用户 以使用预定义角色创建或修改MySQL用户帐户。 接下来,输入所需的帐户凭据:

    • 用户名: MySQL用户名最长可达32个字符。

    • 主机: localhost 选择 本地连接或 <All Hosts (%)> 需要与服务器的远程连接。

    • 角色: 每个预定义角色(例如 DB Admin )都配置有自己的一组权限。 例如, DB Admin 角色具有比 DB Designer 角色 更多的权限 角色” 下拉列表包含每个角色的说明。

    • 密码: 键入密码时执行密码强度评估。 必须确认密码。 MySQL允许空密码或空密码(被认为是不安全的)。

    仅限MySQL安装程序商业版:  用于Windows的MySQL企业版(商业产品)还支持在Windows上执行外部身份验证的身份验证方法。 Windows操作系统验证的帐户可以访问MySQL服务器而无需提供额外的密码。

    要创建使用Windows身份验证的新MySQL帐户,请输入用户名,然后为“ 主机” 和“ 角色” 选择一个值 单击 Windows 身份验证以启用该 authentication_windows 插件。 在Windows安全性令牌区域中,为可以使用MySQL用户名进行身份验证的每个Windows用户(或组)输入一个令牌。 MySQL帐户可以包括本地Windows用户和属于域的Windows用户的安全令牌。 多个安全性令牌由分号字符( ; 分隔 ,并对本地和域帐户使用以下格式:

    • 本地帐户

      输入简单的Windows用户名作为每个本地用户或组的安全令牌; 例如, finley;jeffrey;admin

    • 域帐户

      使用标准Windows语法( )或MySQL语法( )输入Windows域用户和组。 domain\domainuser domain\\domainuser

      对于域帐户,如果运行MySQL Installer的帐户缺少查询Active Directory的权限,则可能需要使用域中管理员的凭据。 如果是这种情况,请选择“ 验证Active Directory用户” 以激活域管理员凭据。

    Windows身份验证允许您在每次添加或修改令牌时测试所有安全令牌。 单击“ 测试安全性令牌” 以验证(或重新验证)每个令牌。 无效的令牌会生成描述性错误消息以及红色 X 图标和红色令牌文本。 当所有令牌解析为有效(绿色文本没有 X 图标)时,您可以单击“ 确定” 保存更改。

2.3.3.3.1.5 Windows服务

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

  • 将MySQL服务器配置为Windows服务 (默认选中)。

    选择默认配置选项后,您还可以选择以下选项:

    • 在系统启动时启动MySQL服务器

      选中(默认)时,服务启动类型设置为自动; 否则,启动类型设置为手动。

    • 以Windows身份运行Windows服务

      标准的系统帐户 (缺省值),该服务登录的网络服务。

      自定义用户” 选项必须具有登录Microsoft Windows即服务的权限。 为此用户配置所需权限之前,将禁用 下一步” 按钮。

      通过在“开始”菜单中搜索“本地安全策略”,在Windows中配置自定义用户帐户。 在“本地安全策略”窗口中,选择“ 本地策略” ,“ 用户权限分配” ,然后选择 “作为服务登录” 以打开属性对话框。 单击“ 添加用户或组” 以添加自定义用户,然后 在每个对话框中 单击“ 确定” 以保存更改。

  • 取消选择“Windows服务”选项

2。3。3。3。1。6日志选项

如果 在“ 类型和网络” 步骤 中选中 显示高级配置” 复选框, 则此步骤可用 要立即启用此步骤,请单击“上 一步” 返回“ 类型和网络” 步骤,然后选中复选框。

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

注意

MySQL 5.7及更高版本默认启用二进制日志。

2.3.3.3.1.7高级选项

如果 在“ 类型和网络” 步骤 中选中 显示高级配置” 复选框, 则此步骤可用 要立即启用此步骤,请单击“上 一步” 返回“ 类型和网络” 步骤,然后选中复选框。

高级配置选项包括:

  • 服务器ID

    设置复制拓扑中使用的唯一标识符。 如果启用了二进制日志记录,则必须指定服务器ID。 默认ID值取决于服务器版本。 有关更多信息,请参阅该 --server-id 选项 的说明

    小费

    如果为InnoDB集群的服务器实例指定了ID,则MySQL Installer会调整ID(显示在此页面上)以匹配先前的标识符。

  • 表名称案例

    您可以在服务器的初始配置和后续配置期间设置以下选项。 对于MySQL 8.0发行版系列,这些选项仅适用于服务器的初始配置。

    • 小写

      lower_case_table_names 选项值 设置 为1(默认值),其中表名以小写形式存储在磁盘上,并且比较不区分大小写。

    • 保留给定案例

      lower_case_table_names 选项值 设置 为2,其中表名称存储为给定但以小写形式进行比较。

2.3.3.3.1.8应用服务器配置

单击“ 执行” 时,所有配置设置都将应用于MySQL服务器 使用“ 配置步骤” 选项卡可以跟踪每个操作的进度; 成功时,每个图标从白色切换为绿色(带复选标记)。 否则,如果单个操作超时,则进程将停止并显示错误消息。 单击“ 日志” 选项卡以查看日志。

当安装成功完成并单击“ 完成”后 ,MySQL Installer和已安装的MySQL产品将添加到该 MySQL 下的Microsoft Windows“开始”菜单中 打开MySQL安装程序会加载 仪表板 ,其中列出已安装的MySQL产品,并且可以使用其他MySQL安装程序操作。

2.3.3.3.2使用MySQL安装程序配置MySQL路由器

MySQL Installer下载并安装一套工具,用于在Windows上开发和管理业务关键型应用程序。 该套件包括应用程序,连接器,文档和示例。

初始设置 期间 ,选择任何预定的安装类型,但 Server only 安装最新的GA版本的工具 除外 使用 Custom 安装类型安装单个工具或特定版本。 如果已在主机上安装了MySQL Installer,请使用 Add 操作从MySQL Installer仪表板中选择和安装工具。

MySQL路由器配置

MySQL Installer提供了一个配置向导,可以引导已安装的MySQL Router 8.0或更高版本的实例,以在MySQL应用程序和InnoDB集群之间路由流量。 配置后,MySQL Router作为本地Windows服务运行。 有关将MySQL路由器与InnoDB集群一起使用的详细信息,请参阅 MySQL InnoDB集群的路由

注意

初始安装后以及明确重新配置已安装的路由器时,系统会提示您配置MySQL路由器。 相反,升级操作不需要或提示您配置升级产品。

要配置MySQL路由器,请执行以下操作:

  1. 设置InnoDB集群。 有关如何使用MySQL Installer在本地主机上配置沙箱InnoDB集群的说明,请参见 第2.3.3.3.1.1节“高可用性”

    有关InnoDB群集的一般信息,请参阅 第21章 InnoDB群集

  2. 使用MySQL Installer,下载并安装MySQL路由器应用程序。 安装完成后,配置向导会提示您输入信息。 选中“ 为InnoDB集群配置MySQL路由器” 复选框以开始配置并提供以下配置值:

    • 主机名: InnoDB集群中主(种子)服务器的主机名( localhost 默认情况下)。

    • 端口: InnoDB集群中主(种子)服务器的端口号( 3310 默认情况下)。

    • 管理用户: 具有根级权限的管理用户。

    • 密码: 管理用户的密码。

    • 与InnoDB集群的经典MySQL协议连接

      读/写: 将第一个基本端口号设置为未使用的端口号(介于80和65532之间),向导将为您选择其余端口。

      下图显示了MySQL路由器配置页面的示例,其中第一个基本端口号指定为6446,其余端口由向导设置为6447,6448和6449。

    图2.10 MySQL路由器配置

    内容在周围文本中描述。

  3. 单击“ 下一步” ,然后 单击 执行” 以应用配置。 单击 Finish 关闭MySQL Installer或返回 MySQL Installer仪表板

使用MySQL路由器安装生产群集后,root帐户仅作为 root@localhost (本地) 存在于用户表中 ,而不是 root@% (远程)。 无论路由器或客户端位于何处,即使两者都与种子服务器位于同一主机上,服务器也会将通过路由器的任何连接视为远程,而非本地。 因此,使用本地主机(请参阅下面的示例)与服务器建立的连接不进行身份验证。

外壳> \c root@localhost:6446

2.3.3.4 MySQL安装程序产品目录和仪表板

本节介绍MySQL Installer产品目录和仪表板。

产品目录

产品目录存储发布的MySQL产品为Microsoft Windows可用来从下载的完整列表, MySQL的下载 默认情况下,当存在Internet连接时,MySQL Installer会每天更新目录。 您还可以从仪表板手动更新目录(稍后介绍)。

最新目录执行以下操作:

  • 填充“ 选择产品和功能”步骤 的“ 可用产品” 窗格。 选择以下选项时会出现此步骤:

    • Custom 该过程中的安装类型 初始设置

    • 仪表板中的 添加” 操作。

  • 标识仪表板中列出的已安装产品的产品更新何时可用。

该目录包括所有开发版本(预发布),一般版本(当前GA)和次要版本(其他版本)。 目录中的产品会有所不同,具体取决于您下载的MySQL Installer版本。

MySQL安装程序仪表板

MySQL安装程序仪表板是 初始安装 完成 后启动MySQL安装程序时看到的默认视图 如果在安装完成之前关闭了MySQL Installer,MySQL Installer会在显示仪表板之前恢复初始设置。

图2.11 MySQL安装程序仪表板元素

内容在周围文本中描述。

MySQL安装程序仪表板元素的说明
  1. MySQL Installer仪表板操作提供了适用于目录中列出的已安装产品或产品的各种操作。 要启动以下操作,请先单击操作链接,然后选择要管理的产品:

    • 添加 :此操作将打开“选择产品和功能”页面。 从那里,您可以过滤产品目录中的产品,选择一个或多个要下载的产品(根据需要),然后开始安装。 有关使用过滤器的提示,请参阅 查找要安装的产品

    • 修改 :使用此操作添加或删除与已安装产品关联的功能。 您可以修改的功能因产品而异。 程序快捷方式 复选框被选中,该产品将出现在下面的开始菜单 MySQL 组。

    • 升级 :此操作会加载“选择要升级的产品”页面,并使用所有升级候选项填充它。 已安装的产品可以具有多个升级版本,并且需要当前的产品目录。

      重要服务器升级条件:

      • MySQL Installer不允许主要版本或次要版本之间的服务器升级,但允许在发布系列中进行升级,例如从5.7.18升级到5.7.19。

      • 不支持里程碑版本(或从里程碑版本到GA版本)之间的升级。 里程碑版本中发生了重大的开发更改,您可能会遇到启动服务器的兼容性问题或问题。

      • 对于升级到MySQL 8.0.16服务器及更高版本,使用复选框可以跳过系统表的升级检查和处理,同时正常检查和处理数据字典表。 当跳过先前的服务器升级或将服务器配置为沙箱InnoDB集群时,MySQL Installer不会提示您使用该复选框。 此行为表示MySQL Server执行升级的方式发生了变化(请参见 第2.11.3节“MySQL升级过程升级的内容”) )它改变了MySQL Installer应用于配置过程的步骤顺序。

        如果选择 跳过系统表升级检查和处理。 (不推荐) ,MySQL Installer使用 --upgrade=MINIMAL 服务器选项 启动升级后的服务器,该 服务器选项仅升级数据字典。 如果停止然后在没有该 --upgrade=MINIMAL 选项的 情况下重新启动服务器 ,则服务器会根据需要自动升级系统表。

        升级配置(跳过系统表)完成后 ,“ 日志” 选项卡和日志文件中将 显示以下信息

        警告:升级MySQL服务器后跳过了系统表升级。
        服务器现在将使用--upgrade = MINIMAL选项启动,但随后每个都启动 
        服务器启动的时间,它将尝试升级系统表,除非 
        您修改Windows服务(命令行)以添加--upgrade = MINIMAL以绕过 
        升级。
        
        为获得最佳结果:在命令行上运行mysqld.exe --upgrade = FORCE进行升级
        手动系统表。
        

      要选择新产品版本:

      1. 单击 升级 确认“ 可升级产品” 窗格中 产品名称旁边的复选框 具有复选标记。 取消选择此时不打算升级的产品。

        注意

        对于同一发行版系列中的服务器里程碑版本,MySQL Installer取消选择服务器升级并显示警告以指示不支持升级,识别继续的风险,并提供手动执行逻辑升级的步骤摘要。 您可以自行承担重新选择服务器升级的风险。 有关如何使用里程碑版本执行逻辑升级的说明,请参阅 逻辑升级

      2. 单击列表中的产品以突出显示该产品。 此操作将 使用所选产品的每个可用版本的详细信息 填充“ 可升级版本” 窗格:版本号,发布日期以及 Changes 用于打开该版本的发行说明 链接。

      MySQL Installer在一个操作中升级所有选定的产品。 单击“ 显示详细信息” 以查看MySQL Installer执行的操作。

    • 删除 此操作将打开“删除产品”页面,并使用主机上安装的MySQL产品填充它。 选择要删除的MySQL产品(卸载),然后单击“ 执行” 以开始删除过程。

      要选择要删除的产品,请执行以下操作之一:

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

      • 选中“ 产品” 复选框以选择所有产品。

  2. 每个安装的服务器旁边的“快速操作”列中的 重新配置” 链接将加载服务器的当前配置值,然后循环执行所有配置步骤,以便更改选项和值。 完成后,MySQL Installer将停止服务器,应用配置更改,并为您重新启动服务器。 有关每个配置选项的说明,请参见 第2.3.3.3.1节“使用MySQL安装程序进行MySQL服务器配置”

    Samples and Examples 与特定MySQL服务器版本相关联的 安装 也可以重新配置以应用功能配置更改(如果有)。 您必须提供具有root权限的凭据才能重新配置这些项目。

  3. 目录 的链接,您可以手动下载MySQL的产品,最新的目录,然后进行整合与MySQL安装这些产品的变化。 目录下载操作不会对主机上已安装的产品执行升级。 相反,它会返回到仪表板,并在每个已安装的具有较新版本的产品的“版本”列中显示一个箭头图标。 使用 升级 操作安装较新的产品版本。

    您还可以使用“ 目录” 链接显示每个产品的当前更改历史记录,而无需下载新目录。 选中“此时 不要更新” 复选框以仅查看更改历史记录。

  4. MySQL Installer关于icon( )显示MySQL Installer的当前版本和MySQL的一般信息。 版本号位于“ 后退” 按钮 上方

    小费

    在报告MySQL Installer的问题时,请始终包含此版本号。

    单击双箭头( )以显示指向最新MySQL产品文档,博客,网络研讨会等的链接列表。

  5. MySQL安装程序选项图标( )包括以下选项卡:

    • 产品目录 :管理每日自动目录更新。 默认情况下,目录更新是在固定的小时安排的。 当新产品或产品版本可用时,MySQL Installer会将它们添加到目录中,然后 在仪表板中列出的已安装产品的版本号旁边 显示一个箭头图标( )。

      使用此选项可启用或禁用自动目录更新,并重置MySQL Installer自动更新目录的时间。 有关特定设置,请参阅 ManifestUpdate Windows任务计划程序中 指定 的任务。

    • 连接设置 :MySQL Installer执行的几项操作需要访问Internet。 此选项使您可以使用默认值来验证连接或使用其他URL,从列表中选择或手动添加的URL。 选择 手动” 选项后,可以添加新URL,并且可以移动或删除列表中的所有URL。 选择 自动” 选项后,MySQL安装程序会尝试连接到列表中的每个默认URL(按顺序),直到建立连接。 如果无法建立连接,则会引发错误。

找到要安装的产品

目录中的MySQL产品按类别列出:MySQL服务器,应用程序,MySQL连接器和文档。 默认情况下 ,“ 可用产品” 窗格中 仅显示最新的GA版本 如果您要查找产品的预发布版本或旧版本,则可能无法在默认列表中看到它。

要更改默认产品列表,请单击 仪表板上的“ 添加 ”以打开“选择产品和功能”页面,然后单击“ 编辑” 以打开筛选器对话框(请参见下图)。 修改产品值,然后单击“ 筛选”

图2.12过滤可用产品

按文本,类别,年龄,已下载和架构过滤。

重置以下一个或多个值以过滤可用产品列表:

  • 文字:按文字过滤。

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

  • 成熟度:当前捆绑包(最初仅显示完整包),预发布,当前GA或其他版本。

    注意

    当您选择预发布时间过滤器时,MySQL Installer的商业版本不会显示任何MySQL产品。 正在开发的产品仅可从MySQL Installer的Community版本获得。

  • 已经下载(默认情况下取消选中该复选框)。

  • 架构:任何(默认),32位或64位。

2.3.3.5 MySQLInstallerConsole参考

MySQLInstallerConsole.exe 提供与MySQL Installer类似的命令行功能。 它在最初执行MySQL Installer时安装,然后在 MySQL Installer 目录中 可用 通常,它位于 C:\Program Files (x86)\MySQL\MySQL Installer\ ,并且控制台必须以管理权限执行。

要使用,请通过选择“ 开始” ,“ 附件” 使用管理权限调用命令提示符 ,然后右键单击“ 命令提示符” 并选择 Run as administrator 从命令行,可以选择将目录更改为 MySQLInstallerConsole.exe 所在的位置:

C:\> cd Program Files (x86)\MySQL\MySQL Installer for Windows
C:\ Program Files(x86)\ MySQL \ MySQL Installer for Windows>MySQLInstallerConsole.exe help
===================开始初始化===================
MySQL Installer以社区模式运行

试图更新清单。
初始化产品要求
加载产品目录
检查产品目录片段
检查捆绑包中的产品包
分类产品目录
查找所有已安装的软件包。
您的商品目录最后更新日期是11/1/2016 4:10:38 PM
===================结束初始化===================

可以使用以下命令:

配置 - 配置一个或多个已安装的程序。
帮助 - 提供可用命令列表。
安装 - 安装和配置一个或多个可用的MySQL程序。
列表 - 提供列出所有可用产品的交互方式。
修改 - 修改已安装产品的功能。
删除 - 从系统中删除一个或多个产品。
状态 - 显示所有已安装产品的状态。
更新 - 更新当前产品目录。
升级 - 升级一个或多个已安装的程序。

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产品。 如果预发布产品可供选择,GA和预发布产品的同时安装时的值 -type 开关 Developer Client Full -only_ga_products 仅在使用这些安装类型时,才能 使用 开关将产品集限制为GA产品。

    开关和语法选项包括:

    • -only_ga_products :限制产品集仅包含GA产品。

    • -type=[SetupType] :安装一组预定义的软件。 “SetupType”可以是以下之一:

      注意

      只有在未安装其他MySQL产品的情况下,才能选择非自定义安装类型。

      • 开发人员 :安装完整的开发环境。

      • 服务器 :安装单个MySQL服务器

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

      • 完整 :安装一切

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

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

    • -silent :禁用确认提示。

    • [config block] :可以指定一个或多个配置块。 每个配置块都是以分号分隔的键值对列表。 块可以包括“config”或“user”类型键,其中“config”是默认类型(如果未定义)。

      包含冒号字符( : )的 配置块值 必须用双引号括起来。 例如, installdir="C:\MySQL\MySQL Server 8.0"

      每个产品只能定义一个“config”类型块。 应为应在产品安装期间创建的每个用户定义“用户”块。

      注意

      重新配置产品时,不支持添加用户。

    • [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] [...]

    修改或显示以前安装的MySQL产品的功能。

    • -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产品目录下载到您的系统。 成功后,下次执行MySQLInstaller或MySQLInstallerConsole时将应用下载目录。

    C:\> MySQLInstallerConsole update
    
    注意

    自动目录更新 GUI”选项从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 Notifier是一个工具,使您可以通过驻留在Microsoft Windows任务栏中的指示器来监视和调整本地和远程MySQL服务器实例的状态。 MySQL Notifier还通过其上下文菜单快速访问MySQL Workbench。

MySQL Notifier是使用MySQL Installer安装的。 它可以在Microsoft Windows启动时自动加载。

安装,下载和执行 MySQL安装程序 从应用程序中选择MySQL Notifier,继续安装。 有关 其他详细信息, 请参阅 MySQL Installer手册

有关详细说明MySQL Notifier每个版本中更改的说明,请参阅 MySQL Notifier发行说明

访问 MySQL Notifier论坛, 获取其他MySQL Notifier帮助和支持。

功能包括:

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

  • 自动检测(并添加)新的MySQL服务器服务。 这些列在“ 管理监视的项目”下 ,也可以配置。

  • 托盘图标会根据状态发生变化。 如果所有受监视的MySQL服务器实例都在运行,则它是一个右指向绿色三角形;如果至少有一个服务停止,则为红色正方形。 默认情况下,为每个服务启用 基于服务状态 选项 更新MySQL通知程序托盘图标 ,该选项指示此行为。

  • 链接到其他应用程序,如MySQL Workbench,MySQL Installer和MySQL Utilities。 例如,选择 Manage Instance 将为该特定实例加载MySQL Workbench Server Administration窗口。

  • 如果还安装了MySQL Workbench,则“ 管理实例” 和“ SQL编辑器” 选项可用于本地(但不是远程)MySQL实例。

  • 监视本地和远程MySQL实例。

2.3.4.1 MySQL通告程序用法

MySQL Notifier为在本地或远程计算机上监视的MySQL服务器提供可视状态信息。 任务栏中的MySQL通知程序图标会更改颜色以指示当前状态:正在运行或已停止。

MySQL Notifier自动在本地计算机上添加发现的MySQL服务。 默认情况下, 启用 自动添加名称包含 选项的 新服务并将其 设置为 mysql 相关通知选项包括在发现新服务或体验状态更改时收到通知,并且默认情况下也启用。 卸载服务会从MySQL Notifier中删除该服务。

单击Windows任务栏中的MySQL Notifier图标会显示MySQL Notifier主菜单,该菜单分别列出每个MySQL服务器并显示其当前状态。 您可以从菜单中启动,停止或重新启动每个MySQL服务器,如下图所示。 在本地安装MySQL Workbench时,“ 管理实例” 和“ SQL编辑器” 菜单项将启动该应用程序。

图2.13 MySQL通知程序服务实例菜单

内容在周围文本中描述。

操作” 菜单包括以下项目:

  • 管理受监控的项目

  • 启动MySQL安装程序 (仅在安装产品时。)

  • 检查更新 (仅在安装MySQL安装程序时。)

  • MySQL Utilities Shell (仅在安装产品时。)

  • 刷新状态

  • 选项

  • 关于

  • 关闭MySQL通知程序

当MySQL Notifier没有监控服务时 ,主菜单不显示“ 操作” 菜单。

MySQL通知程序选项

操作 选项 菜单提供了一组配置MySQL通知操作的选项。 选项分为以下类别: 常规选项 通知选项 MySQL服务器连接选项

单击“ 接受” 以启用所选选项,或 单击“取消” 忽略所有更改。 单击“ 重置为默认值” ,然后 单击“ 接受” 以应用默认选项值。

常规选项。  该组包括:

  • 使用彩色状态图标 :为MySQL通知程序的托盘启用彩色图标样式。 默认选中。

  • 在Windows启动时运行 :允许在Microsoft Windows启动时加载应用程序。 默认取消选中。

  • 自动检查更新,每 :检查MySQL的通知的新版本,并运行此检查每#周。 默认选择每四周更新一次。

  • 自动添加名称包含以下内容 新服务: 用于过滤服务的文本,并将其自动添加到运行MySQL Notifier的本地计算机的受监视列表以及已监视Windows服务的远程计算机上。 默认选择包含的名称 mysql

  • Ping每隔 监视MySQL服务器实例 :ping监视MySQL服务器实例的状态更改间隔(以秒为单位)。 如果受监视的远程实例列表很大,则可能需要更长的时间间隔。 默认为30秒。

通知选项。  该组包括:

  • 自动添加服务时通知我 :当新发现的服务添加到受监视服务列表时,显示来自任务栏的气球通知。 默认选中。

  • 服务更改状态时通知我 :当受监视的服务更改其状态时,显示来自任务栏的气球通知。 默认选中。

MySQL服务器连接选项。  该组包括:

  • 自动连接迁移延迟到: 当有连接要迁移到MySQL Workbench(如果已安装)时,此选项会将迁移推迟一小时,一天,一周,一个月或无限期。

管理受监控的项目

操作” ,“ 管理监视的项目” 菜单使您可以添加,配置和删除要监视的服务和MySQL实例。 管理项目” 窗口有两个选项卡:“ 服务” 和“ 实例”

服务标签。  当MySQL配置为本地服务时,MySQL Notifier会 自动 服务 添加到“ 服务” 选项卡。 打开 服务” 选项卡后,您可以选择以下适用于所有受监视服务的选项:

  • 状态更改时通知我

  • 根据服务状态更新MySQL通知程序托盘图标

下图显示“ 服务” 选项卡打开,并且选中了两个选项。 此选项卡显示服务名称,托管服务的计算机以及服务的当前状态。

图2.14 MySQL通告程序:管理服务

内容在周围文本中描述。

要停止监视服务,请从受监视服务列表中选择该服务,然后单击“ 删除”

单击 添加 ,然后 单击 Windows服务 以打开 添加服务 窗口。 要添加新服务,请从下拉列表中选择一台计算机,从列表中选择一项服务,然后单击“ 确定” 接受。 使用“ 过滤器” 字段减少列表中的服务集,或选择“ 仅显示与自动添加过滤器匹配的服务”? 从“ 选项” 菜单中 重用常规选项过滤器

可以选择各种Windows服务(包括MySQL),如下图所示。 除服务名称外,该列表还显示所选计算机的每个Windows服务的当前状态。

图2.15 MySQL通告程序:添加新服务

内容在周围文本中描述。

实例选项卡。  当MySQL配置为MySQL实例时,MySQL Notifier会 自动 实例 添加到 Instances 选项卡。 打开 实例” 选项卡后,您可以选择以下适用于每个受监视实例的选项:

  • 状态更改时通知我

  • 根据服务状态更新MySQL通知程序托盘图标

  • 每隔 [#] [秒|。 监视MySQL实例状态 分钟| 小时| 天 ]

下图显示了 Instances 选项卡打开并选择了两个选项。 在此示例中,监视实例状态设置为每两分钟一次。 此选项卡显示实例名称,数据库驱动程序以及实例的当前状态。

图2.16 MySQL通告程序:管理MySQL实例

内容在周围文本中描述。

要停止监视实例,请从受监视的MySQL实例列表中选择它,然后单击“ 删除”

单击 Add ,然后 单击 MySQL Instances 以打开 Monitor MySQL Server Instance 窗口。 使用 Filter 字段减少列表中的实例集,或者选择 Show MySQL instances is already monitoring? 仅显示受监控的项目。

(可选)您可以选择从MySQL Workbench到监视器的连接。 单击 Add New Connection (如下图所示)以创建新连接。

图2.17 MySQL通告程序:添加新实例

内容在周围文本中描述。

故障排除

有关此处未记录的问题,请访问 MySQL Notifier支持论坛 获取MySQL Notifier帮助和支持。

  • 问题 :尝试启动/停止/重新启动MySQL服务可能会生成类似于“服务 MySQL VERSION 未通过最新状态更改请求的消息”的错误消息“ 在Windows服务中找不到 服务 mysql VERSION ”。

    说明 :这是一个区分大小写的问题,因为 配置文件 中的 mysql 相比, 服务名称是 MySQL VERSION VERSION

    解决方案 :使用正确的信息更新MySQL Notifier配置文件,或者停止MySQL Notifier并删除此配置文件。 MySQL Notifier配置文件位于 变量 %APPDATA%\Oracle\MySQL Notifier\settings.config 所在的位置 %APPDATA% ,具体取决于您的系统。 典型位置是“C:\ Users \ YourUsername \ AppData \ Roaming \ Oracle \ MySQL Notifier \ settings.config”,这 YourUsername 是您的系统用户名。 在此文件中,在ServerList部分中,将ServerName值从小写更改为实际的服务名称。 例如,将 mysql VERSION 更改 MySQL VERSION ,保存,然后重新启动MySQL通知程序。 或者,停止MySQL Notifier,删除此文件,然后重启MySQL Notifier。

  • 问题 :为了监视远程Windows服务而连接到远程计算机时,“ 添加服务” 对话框并不总是显示Windows服务控制台中显示的所有服务。

    说明 :此行为由操作系统控制,并且在使用非域用户帐户时预期结果。 有关该行为的完整说明,请参阅 Microsoft 的“ 用户帐户控制”和WMI 文章。

    解决方案 :当远程计算机位于兼容域中时,建议使用域用户帐户通过WMI连接到远程计算机。 有关使用WMI的详细设置说明,请参见 第2.3.4.2节“在MySQL通知程序中设置远程监视”

    或者,当域用户帐户不可用时,Microsoft提供的安全性较低的解决方法应该谨慎实施。 有关详细信息,请参阅 Microsoft的 Windows Vista 知识库文章中 的用户帐户控制和远程限制 说明

2.3.4.2在MySQL通知程序中设置远程监控

MySQL Notifier使用Windows Management Instrumentation(WMI)来管理和监视远程计算机上的服务。 本节介绍它的工作原理以及如何设置系统以监控远程MySQL实例。

为了配置WMI,了解底层分布式组件对象模型(DCOM)体系结构正在执行WMI工作非常重要。 具体来说,MySQL Notifier在远程Microsoft Windows主机上使用异步通知查询作为.NET事件。 这些事件向运行MySQL Notifier的计算机发送异步回调,以便它知道远程计算机上的服务状态何时发生了变化。 与使用计时器的半同步通知或同步通知相比,异步通知提供了最佳性能。

如下图所示,异步通知要求远程计算机向客户端计算机发送回调(从而打开反向连接),因此必须正确配置Windows防火墙和DCOM设置才能使通信正常运行。 客户端(计算机A)包括一个不安全的应用程序( unsecapp.exe 在本例中),对远程计算机(计算机B)进行异步调用,并接收带有数据的回叫。

图2.18 MySQL通知程序分布式组件对象模型(DCOM)

内容在周围文本中描述。

异步WMI通知引发的大多数常见错误与阻止通信的Windows防火墙或未正确设置的DCOM / WMI设置有关。 有关解决方案的常见错误列表,请参阅 常见错误

要使WMI功能,需要执行以下步骤。 这些步骤分为两台机器。 运行MySQL通知程序(计算机A)的单台主计算机,以及正在监视的多台远程计算机(计算机B)。

运行MySQL通知程序的计算机(计算机A)
  1. 通过编辑 组策略编辑器 或使用 NETSH 以下命令 启用远程管理

    使用 组策略编辑器

    1. 单击“ 开始” ,单击 “运行” ,键入 GPEDIT.MSC ,然后单击“ 确定”

    2. 本地计算机策略 标题下,展开 计算机配置

    3. 展开 管理模板 ,然后 展开 网络 网络连接 ,然后展开 Windows防火墙

    4. 如果计算机在域中,则双击“ 域配置文件” ; 否则,双击 标准配置文件

    5. 双击“ Windows防火墙:允许入站远程管理例外” 以打开配置窗口。

    6. 选中“ 启用” 选项按钮,然后单击“ 确定”

    使用 NETSH 命令:

    注意

    从Microsoft Server 2008和Vista开始,“netsh firewall”命令已弃用,并替换为“netsh advfirewall firewall”。

    1. 打开具有管理权限的命令提示符窗口(可以右键单击“命令提示符”图标,然后选择 “以管理员身份运行” )。

    2. 执行以下命令:

      NETSH advfirewall防火墙设置服务RemoteAdmin启用
      
  2. 打开DCOM端口TCP 135:

    1. 打开具有管理权限的命令提示符窗口(可以右键单击“命令提示符”图标,然后选择 “以管理员身份运行” )。

    2. 执行以下命令:

      NETSH advfirewall防火墙添加规则名称= DCOM_TCP135协议= TCP localport = 135 dir = in action = allow
      
  3. 将包含回调( MySqlNotifier.exe 接收器的客户端应用程序添加 到Windows防火墙例外列表(使用Windows防火墙配置或 NETSH ):

    使用Windows防火墙配置:

    1. 在“控制面板”中,双击“ Windows防火墙”

    2. 在“Windows防火墙”窗口中,单击“ 通过Windows防火墙允许程序或功能”

    3. 在“允许的程序”窗口中,单击“ 更改设置”, 然后执行以下操作之一:

      • 如果 MySqlNotifier.exe 位于“允许的程序和功能”列表中,请确保检查计算机连接的网络类型(“专用”,“公共”或两者)。

      • 如果 MySqlNotifier.exe 不在列表中,请单击“ 允许其他程序”

        1. 在“ 添加程序” 窗口中,选择“ MySqlNotifier.exe 程序”列表中是否存在,否则单击“ 浏览” 并转到 MySqlNotifier.exe 已安装 的目录 以将其选中,然后单击“ 添加”

        2. 确保 MySqlNotifier.exe 检查计算机连接的网络类型(私人,公共或两者)。

    使用 NETSH 命令:

    1. 打开具有管理权限的命令提示符窗口(可以右键单击“命令提示符”图标,然后单击 “以管理员身份运行” )。

    2. 执行以下命令,在其中更改“ [YOUR_INSTALL_DIRECTORY] ”:

      NETSH advfirewall防火墙添加规则名称= MySqlNotifier程序= [YOUR_INSTALL_DIRECTORY] \ MySqlNotifier.exe action = allow dir = in
      
  4. 如果计算机B是计算机A的成员 WORKGROUP 或不在计算机A不受信任的域中,则回调连接(连接2)将创建为匿名连接。 授予匿名连接DCOM远程访问权限:

    1. 单击“ 开始” ,单击 “运行” ,键入 DCOMCNFG ,然后单击“ 确定”

    2. 在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“ 我的电脑” ,再单击“ 属性”

    3. 在“我的电脑属性”对话框中,单击“ COM安全” 选项卡。

    4. 在“访问权限”下,单击“ 编辑限制”

    5. 在“访问权限”对话框中, 在“组或用户名”框中 选择“ ANONYMOUS LOGON”名称 在“用户权限”下的“允许”列中,选择“ 远程访问” ,然后单击“ 确定”

监控远程计算机(计算机B)

如果登录到运行MySQL通知程序(计算机A)的计算机的用户帐户是远程计算机(计算机B)上的本地管理员,以便同一帐户是计算机B上的管理员,则可以跳到“允许远程管理“步骤。

设置DCOM安全性以允许非管理员用户远程访问计算机:

  1. 为用户或组授予“DCOM远程启动”和激活权限:

    1. 单击“ 开始” ,单击 “运行” ,键入 DCOMCNFG ,然后单击“ 确定”

    2. 在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“ 我的电脑” ,再单击“ 属性”

    3. 在“我的电脑属性”对话框中,单击“ COM安全” 选项卡。

    4. 在“启动和激活权限”下,单击“ 编辑限制”

    5. 在“ 启动和激活权限” 对话框中,如果您的名称或组未显示在“组或用户名”列表中,请按照以下步骤操作:

      1. 在“ 启动和激活权限” 对话框中,单击“ 添加”

      2. 在“选择用户或组”对话框中,在“ 输入要选择的对象名称” 框中添加您的名称和组 ,然后单击“ 确定”

    6. 在“ 启动和激活权限” 对话框中,在“组或用户名”框中选择您的用户和组。 在“用户权限”下的“允许”列中,选择“ 远程启动” ,选择“ 远程激活” ,然后单击“ 确定”

    授予DCOM远程访问权限:

    1. 单击“ 开始” ,单击 “运行” ,键入 DCOMCNFG ,然后单击“ 确定”

    2. 在“组件服务”对话框中,展开“组件服务”,展开“计算机”,然后右键单击“ 我的电脑” ,再单击“ 属性”

    3. 在“我的电脑属性”对话框中,单击“ COM安全” 选项卡。

    4. 在“访问权限”下,单击“ 编辑限制”

    5. 在“访问权限”对话框中, 在“组或用户名”框中 选择“ ANONYMOUS LOGON”名称 在“用户权限”下的“允许”列中,选择“ 远程访问” ,然后单击“ 确定”

  2. 允许非管理员用户访问特定的WMI名称空间:

    1. 在“控制面板”中,双击“ 管理工具”

    2. 在“管理工具”窗口中,双击“ 计算机管理”

    3. 在“计算机管理”窗口中,展开“ 服务和应用程序” 树。

    4. 右键单击“WMI控件”图标,然后选择“ 属性”

    5. 在“WMI控制属性”窗口中,单击“ 安全” 选项卡。

    6. 在Security选项卡中,选择命名空间,然后单击 Security Root / CIMV2是常用的命名空间。

    7. 找到相应的帐户,然后 在“权限”列表中 选中“ 远程启用 ”。

  3. 允许通过编辑 组策略编辑器 或使用 NETSH 以下命令 进行远程管理

    使用 组策略编辑器

    1. 单击“ 开始” ,单击 “运行” ,键入 GPEDIT.MSC ,然后单击“ 确定”

    2. 在“本地计算机策略”标题下,双击“ 计算机配置”

    3. 双击“ 管理模板” ,“ 网络” ,“ 网络连接” ,然后 双击“ Windows防火墙”

    4. 如果计算机在域中,则双击“ 域配置文件” ; 否则,双击 标准配置文件

    5. 单击“ Windows防火墙:允许入站远程管理例外”

    6. 在“操作”菜单上,选择“ 编辑” ,或双击上一步中的选择。

    7. 选中“已 启用” 单选按钮,然后单击“ 确定”

    使用 NETSH 命令:

    1. 打开具有管理权限的命令提示符窗口(可以右键单击“命令提示符”图标,然后单击 “以管理员身份运行” )。

    2. 执行以下命令:

      NETSH advfirewall防火墙设置服务RemoteAdmin启用
      
  4. 确认您登录的用户帐户使用的是 Name 值而不是 Full Name 值:

    1. 在“ 控制面板”中 ,双击“ 管理工具”

    2. 在“ 管理工具” 窗口中,双击“ 计算机管理”

    3. 在“ 计算机管理” 窗口中, 依次 展开“ 系统工具” 和“本地用户和组”

    4. 单击“ 用户” 节点,在右侧面板中找到您的用户,并确保它使用“ 名称” 值进行连接,而不是“ 全名” 值。

常见错误
  • 0x80070005

    • 未正确配置DCOM安全性(请参阅计算机B, Setting DCOM security... 步骤)。

    • 远程计算机(计算机B)是WORKGROUP的成员,或者位于客户端计算机(计算机A)不受信任的域中(请参阅计算机A, Grant Anonymous connections DCOM Remote Access permissions 步骤)。

  • 0x8007000E

    • 远程计算机(计算机B)是WORKGROUP的成员,或者位于客户端计算机(计算机A)不受信任的域中(请参阅计算机A, Grant Anonymous connections DCOM Remote Access permissions 步骤)。

  • 0x80041003

    • 未正确配置对远程WMI命名空间的访问(请参阅计算机B, Allowing non-administrator users access to a specific WMI namespace 步骤)。

  • 0x800706BA

    • DCOM端口未在客户端计算机(计算机A)防火墙上打开。 请参阅 Open the DCOM port TCP 135 计算机A 步骤。

    • 远程计算机(计算机B)无法访问,因为其网络位置设置为“公共”。 确保您可以通过Windows资源管理器访问它。

2.3.5使用 noinstall ZIP存档 在Microsoft Windows上安装MySQL

noinstall 软件包 安装的用户 可以使用本节中的说明手动安装MySQL。 从ZIP Archive包安装MySQL的过程如下:

  1. 将主存档解压缩到所需的安装目录

    可选 :如果您计划执行MySQL基准测试和测试套件,还可以提取调试测试存档

  2. 创建一个选项文件

  3. 选择MySQL服务器类型

  4. 初始化MySQL

  5. 启动MySQL服务器

  6. 保护默认用户帐户

此过程将在后面的章节中介绍。

2.3.5.1提取安装档案

要手动安装MySQL,请执行以下操作:

  1. 如果要从以前的版本 升级 ,请在开始升级过程之前 参阅 第2.11.10节“在Windows上升级MySQL”

  2. 确保以具有管理员权限的用户身份登录。

  3. 选择安装位置。 传统上,MySQL服务器安装在 C:\mysql 如果未安装MySQL C:\mysql ,则必须在启动期间或选项文件中指定安装目录的路径。 请参见 第2.3.5.2节“创建选项文件”

    注意

    MySQL安装程序安装MySQL C:\Program Files\MySQL

  4. 使用首选的文件压缩工具将安装存档解压缩到所选的安装位置。 某些工具可能会将存档提取到您选择的安装位置中的文件夹。 如果发生这种情况,您可以将子文件夹的内容移动到所选的安装位置。

2.3.5.2创建选项文件

如果在运行服务器时需要指定启动选项,可以在命令行中指明它们或将它们放在选项文件中。 对于每次服务器启动时使用的选项,您可能会发现使用选项文件指定MySQL配置最方便。 在以下情况下尤其如此:

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

  • 您需要调整服务器设置,例如内存,缓存或InnoDB配置信息。

当MySQL服务器在Windows上启动时,它会在多个位置查找选项文件,例如Windows目录 C:\ 和MySQL安装目录(有关位置的完整列表,请参见 第4.2.2.2节“使用选项文件” )。 Windows目录的名称通常类似于 C:\WINDOWS 您可以 WINDIR 使用以下命令 环境变量 的值确定其确切位置

C:\> echo %WINDIR%

MySQL首先在 my.ini 文件中 查找每个位置的选项 ,然后在 my.cnf 文件中查找。 但是,为避免混淆,最好只使用一个文件。 如果您的PC使用的引导加载程序 C: 不是引导驱动器,则唯一的选择是使用该 my.ini 文件。 无论您使用哪个选项文件,它都必须是纯文本文件。

注意

当使用MySQL安装程序安装MySQL服务器时,它将 my.ini 在默认位置 创建 ,并且执行MySQL安装程序的用户被授予对此新 my.ini 文件的 完全权限

换句话说,请确保MySQL Server用户有权读取该 my.ini 文件。

您还可以使用MySQL发行版中包含的示例选项文件; 请参见 第5.1.2节“服务器配置默认值”

可以使用任何文本编辑器(如记事本)创建和修改选项文件。 例如,如果安装了MySQL E:\mysql 并且数据目录位于 E:\mydata\data ,则可以创建一个包含一个 [mysqld] 部分 的选项文件, 以指定 basedir datadir 选项的

的[mysqld]
#set basedir到您的安装路径
BASEDIR = E:/ MySQL的
#set datadir到数据目录的位置
DATADIR = E:/ MYDATA /数据

使用(转发)斜杠而不是反斜杠在选项文件中指定Microsoft Windows路径名。 如果你使用反斜杠,请将它们加倍:

的[mysqld]
#set basedir到您的安装路径
BASEDIR = E:\\ MySQL的
#set datadir到数据目录的位置
DATADIR = E:\\ MYDATA \\数据

第4.2.2.2节“使用选项文件” 中给出了在选项文件值中使用反斜杠的规则

ZIP存档不包含 data 目录。 通过创建数据目录和填充在MySQL系统数据库中的表初始化MySQL安装,初始化MySQL的使用任一 --initialize --initialize-insecure 有关其他信息,请参见 第2.10.1节“初始化数据目录”

如果要在其他位置使用数据目录,则应将 data 目录 的全部内容复制 到新位置。 例如,如果要将其 E:\mydata 用作数据目录,则必须执行以下两项操作:

  1. 将整个 data 目录及其所有内容从默认位置(例如 C:\Program Files\MySQL\MySQL Server 8.0\data )移动到 E:\mydata

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

2.3.5.3选择MySQL服务器类型

下表显示了MySQL 8.0中Windows的可用服务器。

二进制 描述
mysqld的 具有命名管道支持的优化二进制文件
mysqld的调试 mysqld ,但编译完全调试和自动内存分配检查

所有上述二进制文件都针对现代英特尔处理器进行了优化,但应适用于任何英特尔i386级或更高级别的处理器。

分发中的每个服务器都支持同一组存储引擎。 SHOW ENGINES 语句显示给定服务器支持的引擎。

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

MySQL支持所有Windows平台上的TCP / IP。 如果使用该 --enable-named-pipe 选项 启动服务器,Windows上的MySQL服务器也支持命名管道 有必要明确使用此选项,因为某些用户在使用命名管道时遇到关闭MySQL服务器的问题。 默认情况下,无论平台如何都使用TCP / IP,因为在许多Windows配置中,命名管道比TCP / IP慢。

2.3.5.4初始化数据目录

如果使用 noinstall 软件包 安装MySQL ,则不包含任何数据目录。 要初始化数据目录,请使用 第2.10.1节“初始化数据目录”中的说明

2.3.5.5首次启动服务器

本节概述了启动MySQL服务器的过程。 以下部分提供了有关从命令行或Windows服务启动MySQL服务器的更具体信息。

这里的信息主要适用于您使用该 noinstall 版本 安装MySQL ,或者您希望手动配置和测试MySQL而不是使用MySQL安装程序。

这些部分中的示例假定MySQL安装在默认位置下 C:\Program Files\MySQL\MySQL Server 8.0 如果您在其他位置安装了MySQL,请调整示例中显示的路径名称。

客户有两种选择。 他们可以使用TCP / IP,或者如果服务器支持命名管道连接,他们可以使用命名管道。

如果使用该 --shared-memory 选项 启动服务器,MySQL for Windows也支持共享内存连接 客户端可以使用该 --protocol=MEMORY 选项 通过共享内存进行连接

有关要运行的服务器二进制文件的信息,请参见 第2.3.5.3节“选择MySQL服务器类型”

最好通过控制台窗口(或 DOS窗口 )中 的命令提示符进行测试 通过这种方式,您可以在窗口中显示服务器显示状态消息,以便于查看。 如果您的配置出现问题,这些消息可以让您更轻松地识别和修复任何问题。

注意

必须先初始化数据库,然后才能启动MySQL。 有关初始化过程的其他信息,请参见 第2.10.1节“初始化数据目录”

要启动服务器,请输入以下命令:

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

对于包含 InnoDB 支持 的服务器 ,您应该看到与启动时类似的消息(路径名称和大小可能不同):

InnoDB:第一个指定的数据文件c:\ ibdata \ ibdata1不存在:
InnoDB:要创建的新数据库!
InnoDB:将文件c:\ ibdata \ ibdata1的大小设置为209715200
InnoDB:数据库物理写入文件:等待...
InnoDB:日志文件c:\ iblogs \ ib_logfile0不存在:要创建的新文件
InnoDB:将日志文件c:\ iblogs \ ib_logfile0的大小设置为31457280
InnoDB:日志文件c:\ iblogs \ ib_logfile1不存在:要创建的新文件
InnoDB:将日志文件c:\ iblogs \ ib_logfile1的大小设置为31457280
InnoDB:日志文件c:\ iblogs \ ib_logfile2不存在:要创建的新文件
InnoDB:将日志文件c:\ iblogs \ ib_logfile2的大小设置为31457280
InnoDB:找不到Doublewrite缓冲区:创建新的
InnoDB:创建了Doublewrite缓冲区
InnoDB:创建外键约束系统表
InnoDB:创建外键约束系统表
011024 10:58:25 InnoDB:开始了

当服务器完成其启动序列时,您应该看到类似这样的内容,这表明服务器已准备好为客户端连接提供服务:

mysqld:准备连接
版本:'8.0.18'套接字:''端口:3306

服务器继续向控制台写入它产生的任何进一步诊断输出。 您可以打开一个新的控制台窗口,在该窗口中运行客户端程序。

如果省略该 --console 选项,则服务器会将诊断输出写入数据目录中的错误日志( C:\Program Files\MySQL\MySQL Server 8.0\data 默认情况下)。 错误日志是具有 .err 扩展名 的文件 ,可以使用该 --log-error 选项 进行设置

注意

root MySQL授权表中 的初始 帐户没有密码。 启动服务器后,应使用 第2.10.4节“保护初始MySQL帐户”中 的说明为其设置密码

2.3.5.6从Windows命令行启动MySQL

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

从命令行 启动 mysqld 服务器,您应该启动一个控制台窗口(或 DOS窗口 )并输入以下命令:

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授权系统中的默认管理帐户。

注意

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

如果 mysqld 没有启动,请检查错误日志以查看服务器是否在那里写了任何消息以指出问题的原因。 默认情况下,错误日志位于 C:\Program Files\MySQL\MySQL Server 8.0\data 目录中。 它是带有后缀的文件 .err ,或者可以通过传入 --log-error 选项 来指定 或者,您可以尝试使用该 --console 选项 启动服务器 ; 在这种情况下,服务器可以在屏幕上显示一些有助于解决问题的有用信息。

最后一个选项是 使用 选项 启动 mysqld 在这种情况下, mysqld 写入一个日志文件 ,其中应包含 mysqld 无法启动 的原因 请参见 第29.5.4节“DBUG包” --standalone --debug C:\mysqld.trace

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

2.3.5.7自定义MySQL工具的PATH

警告

PATH 手动 编辑系统时必须非常小心 ; 意外删除或修改现有 PATH 的任何部分 可能会使您出现故障甚至无法使用的系统。

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

  • 在Windows桌面上,右键单击“ 我的电脑” 图标,然后选择“ 属性”

  • 接下来, 从出现的“ 系统属性” 菜单中 选择“ 高级” 选项卡 ,然后单击“ 环境变量” 按钮。

  • 在“ 系统变量”下 ,选择“ 路径” ,然后单击“ 编辑” 按钮。 应出现 编辑系统变量” 对话框。

  • 将光标放在标记为“ 变量值” 的空间中出现的文本末尾 (使用 End 键确保光标位于此空间中文本的最末端。)然后输入MySQL bin 目录 的完整路径名 (例如, C:\Program Files\MySQL\MySQL Server 8.0\bin

    注意

    必须有一个分号将此路径与此字段中存在的任何值分隔开。

    依次关闭此对话框和每个对话框,单击“ 确定” 直到所有打开的对话框都被取消。 现在,新 PATH 值应该可用于您打开的任何新命令shell,允许您通过在DOS提示符下从系统上的任何目录键入其名称来调用任何MySQL可执行程序,而无需提供路径。 这包括服务器, mysql 客户端和所有MySQL命令行实用程序,如 mysqladmin mysqldump

如果在同一台计算机上运行多个MySQL服务器, 则不应将MySQL bin 目录 添加 到Windows PATH

2.3.5.8将MySQL作为Windows服务启动

在Windows上,运行MySQL的推荐方法是将其安装为Windows服务,以便MySQL在Windows启动和停止时自动启动和停止。 也可以使用 NET 命令或图形 服务 实用程序 从命令行控制作为服务安装的MySQL服务器 通常,要将MySQL安装为Windows服务,您应该使用具有管理员权限的帐户登录。

服务 实用程序(Windows的 服务控制管理器 )可以在Windows控制面板中找到。 为避免冲突,建议 在从命令行执行服务器安装或删除操作时 关闭“ 服务” 实用程序。

安装服务

在将MySQL作为Windows服务安装之前,应首先使用以下命令停止当前服务器的运行:

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

如果MySQL root 用户帐户有密码,则需要 使用该 选项 调用 mysqladmin -p 并在出现提示时提供密码。

此命令调用MySQL管理实用程序 mysqladmin 连接到服务器并告诉它关闭。 该命令以MySQL root 用户 身份连接,MySQL 用户是MySQL授权系统中的默认管理帐户。

注意

MySQL授权系统中的用户完全独立于Windows下的任何操作系统用户。

使用以下命令将服务器安装为服务:

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

service-installation命令不会启动服务器。 有关这方面的说明将在本节后面给出。

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

  • 在Windows桌面上,右键单击“ 我的电脑” 图标,然后选择“ 属性”

  • 接下来, 从出现的“ 系统属性” 菜单中 选择“ 高级” 选项卡 ,然后单击“ 环境变量” 按钮。

  • 在“ 系统变量”下 ,选择“ 路径” ,然后单击“ 编辑” 按钮。 应出现 编辑系统变量” 对话框。

  • 将光标放在标记为“ 变量值” 的空间中出现的文本末尾 (使用 End 键确保光标位于此空间中文本的最末端。)然后输入MySQL bin 目录 的完整路径名 (例如 C:\Program Files\MySQL\MySQL Server 8.0\bin ),并且应该有一个分号将此路径与此字段中存在的任何值。 通过单击“ 确定” 依次关闭此对话框和每个对话框 直到所有打开的对话都被驳回。 您现在应该可以通过在DOS提示符下从系统上的任何目录键入其名称来调用任何MySQL可执行程序,而无需提供路径。 这包括服务器, mysql 客户端和所有MySQL命令行实用程序,如 mysqladmin mysqldump

    如果在同一台计算机上运行多个MySQL服务器, 则不应将MySQL bin 目录 添加 到Windows PATH

警告

PATH 手动 编辑系统时必须非常小心 ; 意外删除或修改现有 PATH 的任何部分 可能会使您出现故障甚至无法使用的系统。

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

  • 您可以在 --install 选项 后面立即指定服务名称 默认服务名称是 MySQL

  • 如果给出了服务名称,则可以跟随一个选项。 按照惯例,这应该是 指定选项文件的名称,服务器在启动时应从中读取选项。 --defaults-file=file_name

    除了 --defaults-file 可能 之外,使用单一选项 但不鼓励。 --defaults-file 更灵活,因为它允许您通过将它们放在命名选项文件中来为服务器指定多个启动选项。

  • 您还可以 --local-service 在服务名称后面 指定一个 选项。 这会导致服务器使用 LocalService 具有有限系统权限 Windows帐户 运行 如果两个 --defaults-file --local-service 给出以下服务名称,他们可以在任何顺序。

对于作为Windows服务安装的MySQL服务器,以下规则确定服务器使用的服务名称和选项文件:

  • 如果service-installation命令 MySQL 在该 --install 选项 后面 未指定服务名称或缺省服务名称( ,则服务器将使用服务名称 MySQL 并从 [mysqld] 标准选项文件中 组中 读取选项

  • 如果service-installation命令指定了除 MySQL --install 选项 之外的服务名称 ,则服务器将使用该服务名称。 它从 [mysqld] 组和与标准选项文件中的服务同名的组中 读取选项 这使您可以将该 [mysqld] 组用于所有MySQL服务应使用的选项,以及具有服务名称的选项组,以供使用该服务名称安装的服务器使用。

  • 如果service-installation命令 --defaults-file 在服务名称后 指定了一个 选项,则服务器将以与上一项中所述相同的方式读取选项,但它仅从命名文件中读取选项并忽略标准选项文件。

作为一个更复杂的示例,请考虑以下命令:

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服务之前,请确保 运行该服务的操作系统用户 的用户变量 %TEMP% %TMP% (以及 %TMPDIR% 是否曾经设置过)指向用户具有写访问权限的文件夹。 。 运行MySQL服务的默认用户 LocalSystem ,并为它的默认值 %TEMP% %TMP% C:\Windows\Temp ,一个目录 LocalSystem 有写入默认访问。 但是,如果对该默认设置有任何更改(例如,对运行服务的用户或所提及的用户变量的更改,或者 --tmpdir 选项已用于将临时目录放在其他位置),MySQL服务可能无法运行,因为临时目录的写访问权限尚未授予适当的用户。

启动服务

将MySQL服务器实例作为服务安装后,Windows会在Windows启动时自动启动该服务。 该服务也可以立即从 Services 实用程序 启动,也可以 使用 sc start mysqld_service_name NET START mysqld_service_name 命令 启动 SC NET 命令不区分大小写。

当作为服务运行时, mysqld 无法访问控制台窗口,因此在那里看不到任何消息。 如果 mysqld 没有启动,请检查错误日志以查看服务器是否在那里写了任何消息以指出问题的原因。 错误日志位于MySQL数据目录中(例如, C:\Program Files\MySQL\MySQL Server 8.0\data )。 它是带有后缀的文件 .err

当MySQL服务器作为服务安装并且服务正在运行时,Windows会在Windows关闭时自动停止服务。 也可以使用 Services 实用程序, sc stop mysqld_service_name 命令, NET START mysqld_service_name 命令或 mysqladmin shutdown 命令 手动停止服务器

如果您不希望在引导过程中自动启动服务,则还可以选择将服务器安装为手动服务。 为此,请使用 --install-manual 选项而不是 --install 选项:

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

要删除作为服务安装的服务器,请先通过执行 SC STOP mysqld_service_name NET STOP将其停止运行 mysqld_service_name 然后使用 SC DELETE mysqld_service_name 删除它:

C:\> SC DELETE mysql

或者,使用 mysqld --remove 选项删除服务。

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

如果 mysqld 没有作为服务运行,您可以从命令行启动它。 有关说明,请参见 第2.3.5.6节“从Windows命令行启动MySQL”

如果在安装过程中遇到困难,请参见 第2.3.6节“Microsoft Windows MySQL服务器安装疑难解答”

有关停止或删除Windows服务的更多信息,请参见 第5.8.2.2节“将多个MySQL实例作为Windows服务启动”

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可能存在问题。 在这种情况下,启动 mysqld的 --skip-name-resolve 选项,只使用 localhost 在和IP地址 Host MySQL授权表的列。 (确保存在指定IP地址的帐户,否则您可能无法连接。)

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

如果已经设置了密码的 root 帐户,删除匿名帐户,或创建新的用户帐户,然后连接到MySQL服务器,你必须使用适当的 -u ,并 -p 选择与前面显示的命令。 请参见 第4.2.3节“连接到MySQL服务器”

有关 mysqlshow的 更多信息 ,请参见 第4.5.7节“ mysqlshow - 显示数据库,表和列信息”

2.3.6 Microsoft Windows MySQL服务器安装疑难解答

在第一次安装和运行MySQL时,您可能会遇到阻止MySQL服务器启动的某些错误。 本节帮助您诊断和纠正其中一些错误。

解决服务器问题时的第一个资源是 错误日志 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 作为服务 之后,从命令行 使用 SC START mysqld_service_name NET START mysqld_service_name 命令, 以查看有关启动MySQL服务器作为服务的任何错误消息。 请参见 第2.3.5.8节“将MySQL作为Windows服务启动”

以下示例显示了在安装MySQL和首次启动服务器时可能遇到的其他常见错误消息:

  • 如果MySQL服务器找不到 mysql 权限数据库或其他关键文件,则会显示以下消息:

    发生系统错误1067。
    致命错误:无法打开和锁定权限表:
    表'mysql.user'不存在
    

    当MySQL基础或数据目录安装在与默认位置( C:\Program Files\MySQL\MySQL Server 8.0 C:\Program Files\MySQL\MySQL Server 8.0\data 分别) 不同的位置时,通常会发生这些消息

    当MySQL升级并安装到新位置时,可能会出现这种情况,但配置文件未更新以反映新位置。 此外,旧的和新的配置文件可能会发生冲突。 升级MySQL时,请务必删除或重命名任何旧配置文件。

    如果您已将MySQL安装到其他目​​录 C:\Program Files\MySQL\MySQL Server 8.0 ,请确保MySQL服务器通过使用configuration( my.ini )文件 了解这一点 my.ini 通常, 文件放在Windows目录中 C:\WINDOWS 要从 WINDIR 环境变量 的值确定其确切位置,请 从命令提示符处发出以下命令:

    C:\> echo %WINDIR%
    

    您可以使用任何文本编辑器(如记事本)创建或修改选项文件。 例如,如果安装了MySQL E:\mysql 并且数据目录是 D:\MySQLdata ,则可以创建选项文件并设置一个 [mysqld] 部分以指定 basedir datadir 选项的

    的[mysqld]
    #set basedir到您的安装路径
    BASEDIR = E:/ MySQL的
    #set datadir到数据目录的位置
    DATADIR = d:/ MySQLdata
    

    使用(转发)斜杠而不是反斜杠在选项文件中指定Microsoft Windows路径名。 如果你使用反斜杠,请将它们加倍:

    的[mysqld]
    #set basedir到您的安装路径
    basedir = C:\\ Program Files \\ MySQL \\ MySQL Server 8.0
    #set datadir到数据目录的位置
    DATADIR = d:\\ MySQLdata
    

    第4.2.2.2节“使用选项文件” 中给出了在选项文件值中使用反斜杠的规则

    如果更改 datadir MySQL配置文件中 值,则必须在重新启动MySQL服务器之前移动现有MySQL数据目录的内容。

    请参见 第2.3.5.2节“创建选项文件”

  • 如果您在没有先停止并删除现有MySQL服务并使用MySQL安装程序安装MySQL的情况下重新安装或升级MySQL,您可能会看到以下错误:

    错误:无法为MySql创建Windows服务。错误:0
    

    当配置向导尝试安装服务并查找具有相同名称的现有服务时,会发生这种情况。

    此问题的一个解决方案是选择除 mysql 使用配置向导 之外的服务名称 这样可以正确安装新服务,但保留过时的服务。 虽然这是无害的,但最好删除不再使用的旧服务。

    要永久删除旧 mysql 服务,请在命令行上以具有管理权限的用户身份执行以下命令:

    C:\> SC DELETE mysql
    [SC] DeleteService SUCCESS
    

    如果该 SC 实用程序不适用于您的Windows版本,请 delsrv http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 下载该 实用程序 并使用该 delsrv mysql 语法。

2.3.7 Windows安装后程序

存在执行本节中描述的大多数任务的GUI工具,包括:

如有必要,初始化数据目录并创建MySQL授权表。 MySQL Installer执行的Windows安装操作会自动初始化数据目录。 要从ZIP Archive包安装,请按 第2.10.1节“初始化数据目录”中所述初始化数据目录

关于密码,如果您使用MySQL安装程序安装了MySQL,则可能已经为初始 root 帐户 分配了密码 (请参见 第2.3.3节“用于Windows的MySQL安装程序” 。)否则,请使用 第2.10.4节“保护初始MySQL帐户”中 给出的密码分配过程

在分配密码之前,您可能希望尝试运行某些客户端程序以确保可以连接到服务器并且它正常运行。 确保服务器正在运行(请参见 第2.3.5.5节“首次启动服务器” )。 您还可以设置在Windows启动时自动运行的MySQL服务(请参见 第2.3.5.8节“将MySQL作为Windows服务启动” )。

这些说明假定您当前的位置是MySQL安装目录,并且它有一个 bin 包含此处使用的MySQL程序 子目录。 如果不是这样,请相应地调整命令路径名。

如果您使用MySQL Installer安装MySQL(请参见 第2.3.3节“用于Windows的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程序,这样您就可以通过仅键入其名称而不是其路径名来运行程序。 请参见 第2.3.5.7节“自定义MySQL工具的PATH”

在服务器运行时,发出以下命令以验证您是否可以从服务器检索信息。 输出应类似于此处显示的输出。

使用 mysqlshow 查看存在哪些数据库:

C:\> bin\mysqlshow
+ -------------------- +
| 数据库|
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| sys |
+ -------------------- +

已安装数据库的列表可能有所不同,但始终至少包含 mysql information_schema

如果不存在正确的MySQL帐户,则 上述命令(以及其他MySQL程序(如 mysql )的 命令 )可能无效。 例如,程序可能会因错误而失败,或者您可能无法查看所有数据库。 如果使用MySQL Installer安装MySQL, root 则会使用您提供的密码自动创建用户。 在这种情况下,您应该使用 -u root -p 选项。 (如果您已经获得了初始MySQL帐户 -p ,则 必须使用这些选项。)然后 ,客户端程序会提示输入 root 密码。 例如:

C:\> bin\mysqlshow -u root -p
输入密码:(enter root password here)
+ -------------------- +
| 数据库|
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| sys |
+ -------------------- +

如果指定数据库名称, mysqlshow将 显示 数据库 中的表列表:

C:\> bin\mysqlshow mysql
数据库:mysql
+ --------------------------- +
| 表|
+ --------------------------- +
| columns_priv |
| 组件|
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| password_history |
| 插件|
| procs_priv |
| proxies_priv |
| role_edges |
| server_cost |
| 服务器|
| 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 |
| 用户|
+ --------------------------- +

使用 mysql 程序从 mysql 数据库中 的表中选择信息

C:\> bin\mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+ ------ + ----------- + ----------------------- +
| 用户| 主持人| 插件|
+ ------ + ----------- + ----------------------- +
| 根| localhost | caching_sha2_password |
+ ------ + ----------- + ----------------------- +

有关 mysql mysqlshow的 更多信息 ,请参见 第4.5.1节“ mysql - MySQL命令行客户端” 第4.5.7节“ mysqlshow - 显示数据库,表和列信息”

2.4在macOS上安装MySQL

有关MySQL服务器支持的macOS版本列表,请参阅 https://www.mysql.com/support/supportedplatforms/database.html

用于macOS的MySQL有多种不同的形式:

有关在macOS上使用MySQL的其他信息,请参见 第2.4.1节“在macOS上安装MySQL的一般说明”

2.4.1在macOS上安装MySQL的一般注意事项

您应该记住以下问题和注意事项:

  • 其他MySQL安装 :安装过程无法识别包管理器(如Homebrew)的MySQL安装。 安装和升级过程适用于我们提供的MySQL包。 如果存在其他安装,请考虑在执行此安装程序之前停止它们以避免端口冲突。

    Homebrew :例如,如果您使用Homebrew将MySQL Server安装到其默认位置,那么MySQL安装程序将安装到其他位置,并且不会从Homebrew升级版本。 在这种情况下,您最终会遇到多个MySQL安装,默认情况下会尝试使用相同的端口。 在运行此安装程序之前停止其他MySQL Server实例,例如执行 brew services stop mysql 以停止Homebrew的MySQL服务。

  • Launchd :安装了一个改变MySQL配置选项的launchd守护进程。 如果需要,请考虑编辑它,有关其他信息,请参阅下面的文档。 此外,macOS 10.10删除了启动项支持,支持launchd守护进程。 macOS System Preferences 下的可选MySQL首选项窗格 使用launchd守护程序。

  • 用户 :您可能需要(或想要)创建特定 mysql 用户以拥有MySQL目录和数据。 您可以通过 目录实用程序 执行此操作 mysql 用户应该已存在。 要在单用户模式下使用, _mysql 系统 /etc/passwd 文件中 应该已存在(注意下划线前缀) 条目

  • 数据 :由于MySQL软件包安装程序将MySQL内容安装到特定于版本和平台的目录中,因此您可以使用它来在版本之间升级和迁移数据库。 您需要将 data 目录从旧版本 复制 到新版本,或者指定另一个 datadir 值来设置数据目录的位置。 默认情况下,MySQL目录安装在 /usr/local/

  • 别名 :您可能希望在shell的资源文件中添加别名,以便更容易 从命令行 访问常用程序,如 mysql mysqladmin bash 的语法 是:

    别名mysql = / usr / local / mysql / bin / mysql
    别名mysqladmin = / usr / local / mysql / bin / mysqladmin
    

    对于 tcsh ,请使用:

    别名mysql / usr / local / mysql / bin / mysql
    别名mysqladmin / usr / local / mysql / bin / mysqladmin
    

    更好的是,添加 /usr/local/mysql/bin 到您的 PATH 环境变量。 您可以通过修改shell的相应启动文件来完成此操作。 有关更多信息,请参见 第4.2.1节“调用MySQL程序”

  • 删除 :从先前安装复制MySQL数据库文件并成功启动新服务器后,应考虑删除旧安装文件以节省磁盘空间。 此外,您还应删除旧版本的Package Receipt目录 /Library/Receipts/mysql-VERSION.pkg

  • 遗留问题 :在OS X 10.7之前,MySQL服务器与OS X Server捆绑在一起。

2.4.2使用本机软件包在macOS上安装MySQL

该软件包位于磁盘映像( .dmg )文件中,您首先需要通过在Finder中双击其图标来安装该文件。 然后它应该挂载图像并显示其内容。

注意

在继续安装之前,请确保通过 在命令行上 使用MySQL Manager应用程序(在macOS Server上),首选项窗格或 mysqladmin shutdown 来停止所有正在运行的MySQL服务器实例

要使用软件包安装程序安装MySQL:

  1. 下载 包含MySQL软件包安装程序 的disk image( .dmg )文件( 此处 提供社区版本 )。 双击该文件以装入磁盘映像并查看其内容。

    双击磁盘中的MySQL安装程序包。 它根据您下载的MySQL版本命名。 例如,对于MySQL服务器8.0.18,它可能会被命名 mysql-8.0.18-osx-10.13-x86_64.pkg

  2. 初始向导介绍屏幕引用要安装的MySQL服务器版本。 单击“ 继续” 开始安装。

    MySQL社区版显示了相关GNU通用公共许可证的副本。 单击 继续 ,然后 单击 同步 继续。

  3. 在“ 安装类型” 页面中,您可以单击“ 安装” 以使用所有默认值执行安装向导,单击“ 自定义” 以更改要安装的组件(MySQL服务器,MySQL测试,首选项窗格,启动支持 - 默认情况下启用除MySQL测试之外的所有组件) 。

    注意

    虽然 可以看到 更改安装位置” 选项,但无法更改安装位置。

    图2.19 MySQL软件包安装程序向导:安装类型

    内容在周围文本中描述。

    图2.20 MySQL软件包安装程序向导:自定义

    Customize显示三个包名称选项:MySQL Server,MySQL Test,Preference Pane和Launchd Support。 检查所有三个选项。

  4. 单击“ 安装” 以安装MySQL Server。 如果升级当前的MySQL Server安装,安装过程将在此处结束,否则请按照向导的新MySQL服务器安装的其他配置步骤进行操作。

  5. 成功安装新的MySQL服务器后,通过选择密码的默认加密类型,定义root密码以及启动(或禁用)MySQL服务器来完成配置步骤。

  6. 默认的MySQL 8.0密码机制是 caching_sha2_password (强),此步骤允许您将其更改为 mysql_native_password (Legacy)。

    图2.21 MySQL软件包安装程序向导:选择密码加密类型

    大多数内容都在周围的文字中描述。 安装程序将caching_sha2_password称为“使用强密码加密”,将mysql_native_password称为“使用旧密码加密”。

    选择传统的密码机制改变所产生的launchd文件设置 --default_authentication_plugin=mysql_native_password ProgramArguments 选择强密码加密未设置, --default_authentication_plugin 因为使用了默认的MySQL Server值,即 caching_sha2_password

  7. 为root用户定义密码,并在配置步骤完成后切​​换MySQL Server是否应该启动。

    图2.22 MySQL软件包安装程序向导:定义Root密码

    内容在周围文本中描述。

  8. 摘要 是最后一步,并引用了成功且完整的MySQL Server安装。 关闭 向导。

    图2.23 MySQL软件包安装程序向导:摘要

    显示安装成功,并包含指向MySQL手册,mysql.com和oracle.com的链接。

MySQL服务器现已安装。 如果您选择不启动MySQL,则使用命令行中的launchctl或使用MySQL首选项窗格单击“开始”启动MySQL。 有关其他信息,请参见 第2.4.3节“安装和使用MySQL启动守护程序” 第2.4.4节“安装和使用MySQL首选项窗格” 使用MySQL Preference Pane或launchd将MySQL配置为在启动时自动启动。

使用软件包安装程序进行安装时,文件将安装到 /usr/local 与安装版本和平台名称相匹配的 目录中 例如,安装程序文件 使用符号链接 安装MySQL 下表显示了此MySQL安装目录的布局。 mysql-8.0.18-osx10.13-x86_64.dmg /usr/local/mysql-8.0.18-osx10.13-x86_64/ /usr/local/mysql

表2.6 macOS上的MySQL安装布局

目录 目录的内容
bin mysqld 服务器,客户端和实用程序
data 日志文件,数据库, /usr/local/mysql/data/mysqld.local.err 默认错误日志 在哪里
docs 帮助文档,如发行说明和构建信息
include 包含(标题)文件
lib 图书馆
man Unix手册页
mysql-test MySQL测试套件(使用安装程序包(DMG)时,在安装过程中默认禁用'MySQL Test')
share 其他支持文件,包括错误消息,示例配置文件,用于数据库安装的SQL
support-files 脚本和示例配置文件
/tmp/mysql.sock MySQL Unix套接字的位置

2.4.3安装和使用MySQL启动守护进程

macOS使用启动守护程序自动启动,停止和管理MySQL等进程和应用程序。

默认情况下,macOS上的安装包(DMG)安装一个名为 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist contains的包含plist定义 的launchd文件 ,类似于:


<?xml version =“1.0”encoding =“UTF-8”?>
<!DOCTYPE plist PUBLIC“ -  // Apple Computer // DTD PLIST 1.0 // EN”“http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version =“1.0”>
<字典>
    <key> Label </ key> <string> com.oracle.oss.mysql.mysqld </ string>
    <key> ProcessType </ key> <string>交互式</ string>
    <key>已禁用</ key> <false />
    <key> RunAtLoad </ key> <true />
    <key> KeepAlive </ key> <true />
    <key> SessionCreate </ key> <true />
    <key> LaunchOnlyOnce </ key> <false />
    <key> UserName </ key> <string> _mysql </ string>
    <key> GroupName </ key> <string> _mysql </ string>
    <key> ExitTimeOut </ key> <integer> 600 </ integer>
    <key> Program </ key> <string> / usr / local / mysql / bin / mysqld </ string>
    <键> ProgramArguments </键>
        <阵列>
            <字符串>的/ usr /本地/ MySQL的/斌/ mysqld的</字符串>
            <字符串>  - 用户= _mysql </字符串>
            <字符串>  -  BASEDIR =的/ usr /本地/ MySQL的</字符串>
            <字符串>  -  DATADIR =的/ usr /本地/ MySQL的/数据</串>
            <字符串>  - 插件-DIR =的/ usr /本地/ MySQL的/ LIB /插件</字符串>
            <字符串>  - 对数误差=的/ usr /本地/ MySQL的/数据/ mysqld.local.err </字符串>
            <字符串>  -  PID文件=的/ usr /本地/ MySQL的/数据/ mysqld.local.pid </字符串>
            <字符串>  - 密钥环-文件的数据= / USR /本地/ MySQL的/钥匙圈/密钥环</字符串>
            <字符串>  - 早期插件负荷= keyring_file = keyring_file.so </字符串>
        </阵列>
    <key> WorkingDirectory </ key> <string> / usr / local / mysql </ string>
</字典>
</ plist中>

注意

一些用户报告说,添加plist DOCTYPE声明会导致launchd操作失败,尽管它通过了lint检查。 我们怀疑这是一个copy-n-paste错误。 包含上述代码段的文件的md5校验和是 d925f05f6d1b6ee5ce5451b596d6baed

要启用launchd服务,您可以:

  • 打开macOS系统首选项并选择MySQL首选项面板,然后执行 Start MySQL Server

    图2.24 MySQL偏好窗格:位置

    显示在MacOS系统偏好设置搜索框中输入的“MySQL”,以及左下角突出显示的“MySQL”图标。

    实例 页面包含一个选项,以启动或停止MySQL和 初始化数据库 重新创建 data/ 目录。 卸载 卸载MySQL Server以及可选的MySQL首选项面板和launchd信息。

    图2.25 MySQL偏好窗格:实例

    左侧显示由“Active Instance”,“Installed Instances”和“Data Directories”部分分隔的MySQL实例列表。 右侧显示“停止MySQL服务器”按钮,标题为“计算机启动时启动MySQL”的复选框,以及“初始化数据库”和“卸载”按钮。 几个字段引用8.0.11作为当前安装的MySQL版本。

  • 或者,手动加载launchd文件。

    shell> cd / Library / LaunchDaemons
    shell> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
            
  • 要将MySQL配置为在启动时自动启动,您可以:

    shell> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
    
注意

升级MySQL服务器时,launchd安装过程将删除使用MySQL服务器5.7.7及更低版本安装的旧启动项。

此外,升级将替换您现有的名为的launchd文件 com.oracle.oss.mysql.mysqld.plist

其他发布相关信息:

  • plist条目覆盖 my.cnf 条目,因为它们作为命令行参数传入。 有关传递程序选项的其他信息,请参见 第4.2.2节“指定程序选项”

  • 所述 ProgramArguments 部分定义了被传递到程序,这是命令行选项 mysqld 在此情况下的二进制。

  • 默认的plist定义是在考虑不太复杂的用例的情况下编写的。 对于更复杂的设置,您可能希望删除一些参数,而是依赖于MySQL配置文件,例如 my.cnf

  • 如果编辑plist文件,则在重新安装或升级MySQL时取消选中安装程序选项。 否则,您编辑的plist文件将被覆盖,并且所有编辑都将丢失。

因为默认的plist定义定义了几个 ProgramArguments ,所以您可以删除大多数这些参数,而是依赖 my.cnf MySQL配置文件来定义它们。 例如:


<?xml version =“1.0”encoding =“UTF-8”?>
<!DOCTYPE plist PUBLIC“ -  // Apple Computer // DTD PLIST 1.0 // EN”“http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version =“1.0”>
<字典>
    <key> Label </ key> <string> com.oracle.oss.mysql.mysqld </ string>
    <key> ProcessType </ key> <string>交互式</ string>
    <key>已禁用</ key> <false />
    <key> RunAtLoad </ key> <true />
    <key> KeepAlive </ key> <true />
    <key> SessionCreate </ key> <true />
    <key> LaunchOnlyOnce </ key> <false />
    <key> UserName </ key> <string> _mysql </ string>
    <key> GroupName </ key> <string> _mysql </ string>
    <key> ExitTimeOut </ key> <integer> 600 </ integer>
    <key> Program </ key> <string> / usr / local / mysql / bin / mysqld </ string>
    <键> ProgramArguments </键>
        <阵列>
            <字符串>的/ usr /本地/ MySQL的/斌/ mysqld的</字符串>
            <字符串>  - 用户= _mysql </字符串>
            <字符串>  -  BASEDIR =的/ usr /本地/ MySQL的</字符串>
            <字符串>  -  DATADIR =的/ usr /本地/ MySQL的/数据</串>
            <字符串>  - 插件-DIR =的/ usr /本地/ MySQL的/ LIB /插件</字符串>
            <字符串>  - 对数误差=的/ usr /本地/ MySQL的/数据/ mysqld.local.err </字符串>
            <字符串>  -  PID文件=的/ usr /本地/ MySQL的/数据/ mysqld.local.pid </字符串>
            <字符串>  - 密钥环-文件的数据= / USR /本地/ MySQL的/钥匙圈/密钥环</字符串>
            <字符串>  - 早期插件负荷= keyring_file = keyring_file.so </字符串>
        </阵列>
    <key> WorkingDirectory </ key> <string> / usr / local / mysql </ string>
</字典>
</ plist中>

   

在这种情况下, basedir datadir plugin_dir log_error pid_file keyring_file_data ,并  --early-plugin-load 选择从默认的plist去除 ProgramArguments 定义,你可能在定义 my.cnf 来代替。

2.4.4安装和使用MySQL首选项窗格

MySQL安装包包含一个MySQL首选项窗格,使您可以在启动MySQL安装期间启动,停止和控制自动启动。

此首选项窗格默认安装,并列在系统的“ 系统偏好设置” 窗口下。

图2.26 MySQL偏好窗格:位置

显示在MacOS系统偏好设置搜索框中输入的“MySQL”,以及左下角突出显示的“MySQL”图标。

MySQL首选项窗格安装有安装MySQL Server的相同DMG文件。 通常它与MySQL Server一起安装,但它也可以自己安装。

要安装MySQL首选项窗格:

  1. 完成安装MySQL服务器的过程,如 第2.4.2节“使用本机软件包在macOS上安装MySQL” 中的文档所述

  2. 单击 安装类型” 步骤中的“ 自定义 “Preference Pane”选项列在那里并默认启用; 确保没有取消选择。 可以选择或选择其他选项,例如MySQL Server。

    图2.27 MySQL软件包安装程序向导:自定义

    Customize显示三个包名称选项:MySQL Server,MySQL Test,Preference Pane和Launchd Support。 检查所有三个选项。

  3. 完成安装过程。

注意

MySQL首选项窗格仅启动和停止从已安装在默认位置的MySQL软件包安装中安装的MySQL安装。

安装MySQL首选项窗格后,您可以使用此首选项窗格控制MySQL服务器实例。

实例 页面包含一个选项,以启动和停止MySQL和 初始化数据库 重新创建 data/ 目录。 卸载 卸载MySQL Server以及可选的pain and launchd信息。

实例 页面包含一个选项,以启动或停止MySQL和 初始化数据库 重新创建 data/ 目录。 卸载 卸载MySQL Server以及可选的MySQL首选项面板和launchd信息。

图2.28 MySQL偏好窗格:实例

左侧显示由“Active Instance”,“Installed Instances”和“Data Directories”部分分隔的MySQL实例列表。 右侧显示“停止MySQL服务器”按钮,标题为“计算机启动时启动MySQL”的复选框,以及“初始化数据库”和“卸载”按钮。 几个字段引用8.0.11作为当前安装的MySQL版本。

配置 页面显示MySQL服务器选项,包括路径MySQL配置文件。

图2.29 MySQL偏好窗格:配置

内容在周围文本中描述。

MySQL首选项窗格显示MySQL服务器的当前状态, 如果服务器尚未运行并且 正在运行 (绿色) ,则显示已 停止 (红色) 服务器已启动。 首选项窗格还显示MySQL服务器是否已设置为自动启动的当前设置。

2.5在Linux上安装MySQL

Linux支持许多不同的安装MySQL的解决方案。 我们建议您使用Oracle提供的一个发行版,其中有几种安装方法可供使用:

表2.7 Linux安装方法和信息

类型 设置方法 附加信息
易于 启用 MySQL Apt存储库 文档
百胜 启用 MySQL Yum存储库 文档
zypper的 启用 MySQL SLES存储库 文档
RPM 下载 特定包 文档
DEB 下载 特定包 文档
通用 下载 通用包 文档
资源 源代码 编译 文档
搬运工人 使用Docker Hub for MySQL Community Edition; My Oracle Support 下载MySQL Enterprise Edition的Docker镜像 文档
Oracle坚不可摧的Linux网络 使用ULN频道 文档

作为替代方案,您可以使用系统上的软件包管理器自动从Linux发行版的本机软件存储库下载和安装带有软件包的MySQL。 这些本机包通常是当前可用版本的几个版本。 您通常也无法安装开发里程碑版本(DMR),因为这些版本通常不在本机存储库中提供。 有关使用本机程序包安装程序的更多信息,请参见 第2.5.7节“从本机软件存储库在Linux上安装MySQL”

注意

对于许多Linux安装,您需要设置MySQL以在计算机启动时自动启动。 许多本机程序包安装都会为您执行此操作,但对于源代码,二进制和RPM解决方案,您可能需要单独进行此设置。 所需的脚本 mysql.server 可以 support-files 在MySQL安装目录下的目录中 找到,也可以 在MySQL源代码树中找到。 您可以像 /etc/init.d/mysql 自动MySQL启动和关闭 一样安装它 请参见 第4.3.3节“ mysql.server - MySQL服务器启动脚本”

2.5.1使用MySQL Yum存储库在Linux上安装MySQL

适用于Oracle Linux,Red Hat Enterprise Linux,CentOS和Fedora MySQL Yum存储库 提供用于安装MySQL服务器,客户端,MySQL Workbench,MySQL Utilities,MySQL路由器,MySQL Shell,Connector / ODBC,Connector / Python等的RPM软件包。 (并非所有软件包都可用于所有发行版; 有关详细信息 ,请参阅 使用Yum安装其他MySQL产品和组件 )。

在你开始之前

作为一种流行的开源软件,MySQL以其原始或重新打包的形式广泛安装在许多系统上,来自各种来源,包括不同的软件下载站点,软件存储库等。 以下说明假定您的系统上尚未使用第三方分发的RPM软件包安装MySQL; 如果不是这种情况,请按照 第2.11.7节“使用MySQL Yum存储库升级MySQL” 使用MySQL Yum存储库 替换 MySQL 的第三方分发中 给出的说明进行操作

完全安装MySQL的步骤

按照以下步骤使用MySQL Yum存储库安装最新的GA版本的MySQL:

  1. 添加MySQL Yum存储库

    首先,将MySQL Yum存储库添加到系统的存储库列表中。 这是一次性操作,可以通过安装MySQL提供的RPM来执行。 跟着这些步骤:

    1. 转到 MySQL Developer Zone中 的下载MySQL Yum存储库页面( https://dev.mysql.com/downloads/repo/yum/ )。

    2. 选择并下载适用于您的平台的发行包。

    3. 使用以下命令安装下载的发行包,替换 platform-and-version-specific-package-name 为下载的RPM包的名称:

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

      对于基于EL6的系统,该命令采用以下形式:

      外壳> sudo yum localinstall mysql80-community-release-el6-{version-number}.noarch.rpm
      

      对于基于EL7的系统:

      外壳> sudo yum localinstall mysql80-community-release-el7-{version-number}.noarch.rpm
      

      对于Fedora 30:

      外壳> sudo dnf localinstall mysql80-community-release-fc30-{version-number}.noarch.rpm
      

      对于Fedora 29:

      外壳> sudo dnf localinstall mysql80-community-release-fc29-{version-number}.noarch.rpm
      

      对于Fedora 28:

      外壳> sudo dnf localinstall mysql80-community-release-fc28-{version-number}.noarch.rpm
      

      安装命令将MySQL Yum存储库添加到系统的存储库列表中,并下载GnuPG密钥以检查软件包的完整性。 有关 GnuPG密钥检查的详细信息 请参见 第2.1.3.2节“使用GnuPG 进行 签名检查”

      您可以通过以下命令检查MySQL Yum存储库是否已成功添加(对于启用了dnf的系统, 使用 dnf 替换 命令中的 yum ):

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

    注意

    一旦在您的系统上启用了MySQL Yum存储库, yum update 命令的 任何系统范围更新 (或 启用dnf的系统的 dnf升级 )都将升级系统上的MySQL软件包,并替换任何本机第三方软件包,如果Yum在MySQL Yum存储库中找到它们的替换; 请参见 第2.11.7节“使用MySQL Yum存储库升级MySQL” ,有关对系统可能产生的影响的讨论,请参阅 升级共享客户端库

  2. 选择发布系列

    使用MySQL Yum存储库时,默认选择安装最新的GA系列(当前为MySQL 8.0)。 如果这是您想要的,您可以跳到下一步, 安装MySQL

    在MySQL Yum存储库中,MySQL社区服务器的不同发行版系列托管在不同的子存储库中。 默认情况下启用最新GA系列(当前为MySQL 8.0)的子存储库,默认情况下禁用所有其他系列(例如,MySQL 8.0系列)的子存储库。 使用此命令查看MySQL Yum存储库中的所有子存储库,并查看哪些子存储库已启用或禁用(对于支持dnf的系统,请 使用 dnf 替换 命令中的 yum ):

    外壳> yum repolist all | grep mysql
    

    要从最新的GA系列安装最新版本,无需进行任何配置。 要从最新GA系列以外的特定系列安装最新版本,请在运行安装命令之前禁用最新GA系列的子存储库并启用特定系列的子存储库。 如果您的平台支持 yum-config-manager ,您可以通过发出这些命令来执行此操作,这些命令禁用5.7系列的子存储库并启用8.0系列的子存储库:

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

    对于支持dnf的平台:

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

    除了使用 yum-config-manager dnf config-manager 命令外,您还可以通过手动编辑 /etc/yum.repos.d/mysql-community.repo 文件 来选择发布系列 这是文件中发布系列的子存储库的典型条目:

    [mysql57社区]
    name = MySQL 5.7社区服务器
    baseURL时= HTTP://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
    启用= 1
    gpgcheck = 1
    gpgkey =文件:///等/ PKI / RPM-GPG / RPM-GPG-KEY-MySQL的
    

    找到要配置的子存储库的条目,然后编辑该 enabled 选项。 指定 enabled=0 禁用子存储库,或 enabled=1 启用子存储库。 例如,要安装MySQL 8.0,请确保您具有 enabled=0 MySQL 5.7的上述子存储库条目,并且具有 enabled=1 8.0系列的条目:

    #启用MySQL 8.0
    [mysql80社区]
    name = MySQL 8.0社区服务器
    baseURL时= HTTP://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
    启用= 1
    gpgcheck = 1
    gpgkey =文件:///等/ PKI / RPM-GPG / RPM-GPG-KEY-MySQL的
    

    您应该只在任何时候为一个发布系列启用子存储库。 当启用多个版本系列的子存储库时,Yum将使用最新的系列。

    通过运行以下命令并检查其输出来验证是否已启用和禁用了正确的子存储库(对于启用dnf的系统,请 使用 dnf 替换 命令中的 yum ):

    外壳> yum repolist enabled | grep mysql
    
  3. 安装MySQL

    通过以下命令安装MySQL(对于支持dnf的系统, 使用 dnf 替换 命令中的 yum ):

    外壳> sudo yum install mysql-community-server
    

    这将安装MySQL server( mysql-community-server )的包以及运行服务器所需组件的包,包括client( mysql-community-client )的 包,客户 端和服务器的常见错误消息和字符集( mysql-community-common )以及共享客户端库( mysql-community-libs ) 。

  4. 启动MySQL服务器

    使用以下命令启动MySQL服务器:

    外壳> sudo service mysqld start
    启动mysqld:[确定]
    

    您可以使用以下命令检查MySQL服务器的状态:

    外壳> sudo service mysqld status
    mysqld(pid 3066)正在运行。
    

在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。

  • SSL证书和密钥文件在数据目录中生成。

  • validate_password 已安装并已启用。

  • 'root'@'localhost 创建 一个超级用户帐户 设置超级用户的密码并将其存储在错误日志文件中。 要显示它,请使用以下命令:

    外壳> sudo grep 'temporary password' /var/log/mysqld.log
    

    通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改root密码:

    外壳> mysql -uroot -p 
    
    MySQL的> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
    
    注意

    validate_password 默认安装。 实现的默认密码策略 validate_password 要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。

有关安装后过程的更多信息,请参见 第2.10节“安装后设置和测试”

注意

基于EL7的平台的兼容性信息: 来自平台的本机软件存储库的以下RPM软件包与安装MySQL服务器的MySQL Yum存储库中的软件包不兼容。 使用MySQL Yum存储库安装MySQL后,您将无法安装这些软件包(反之亦然)。

  • Akonadi的MySQL的

使用Yum安装其他MySQL产品和组件

您可以使用Yum来安装和管理MySQL的各个组件。 其中一些组件托管在MySQL Yum存储库的子存储库中:例如,MySQL连接器可以在MySQL Connectors社区子存储库中找到,而MySQL Workbench可以在MySQL工具社区中找到。 您可以使用以下命令从MySQL Yum存储库列出适用于您的平台的所有MySQL组件的软件包(对于支持dnf的系统, 使用 dnf 替换 命令中的 yum ):

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

使用以下命令安装您选择的任何软件包,替换 package-name 为软件包的名称(对于支持dnf的系统,请 使用 dnf 替换 命令中的 yum ):

外壳> sudo yum install package-name

例如,要在Fedora上安装MySQL Workbench:

外壳> sudo dnf install mysql-workbench-community

要安装共享客户端库(对于支持dnf的系统,请 使用 dnf 替换 命令中的 yum ):

外壳> sudo yum install mysql-community-libs

平台特定说明

ARM支持

Oracle Linux 7支持ARM 64位(aarch64),需要Oracle Linux 7软件集合存储库(ol7_software_collections)。 例如,要安装服务器:

shell> yum-config-manager --enable ol7_software_collections
shell> yum install mysql-community-server
注意

从MySQL 8.0.12开始,Oracle Linux 7支持ARM 64位(aarch64)。

已知限制

8.0.12版本要求您 在执行 步骤 后执行 调整 libstdc ++ 7 路径 ln -s /opt/oracle/oracle-armtoolset-1/root/usr/lib64 /usr/lib64/gcc7 yum install

用Yum更新MySQL

除了安装,您还可以使用MySQL Yum存储库对MySQL产品和组件执行更新。 有关详细 信息, 请参见 第2.11.7节“使用MySQL Yum存储库升级MySQL”

2.5.2使用MySQL APT存储库在Linux上安装MySQL

MySQL APT存储库提供 deb 用于在以下Linux平台上安装和管理MySQL服务器,客户端和其他组件的软件包:

  • Debian 9

  • Ubuntu 16.04,17.10和18.04

有关使用MySQL APT存储库的说明,请参阅“使用MySQL APT存储库 快速指南”

2.5.3使用MySQL SLES存储库在Linux上安装MySQL

MySQL SLES存储库提供RPM软件包,用于在SUSE Enterprise Linux Server上安装和管理MySQL服务器,客户端和其他组件。

有关使用MySQL SLES存储库的说明,请参阅使用MySQL SLES存储库 的快速指南

2.5.4使用Oracle的RPM软件包在Linux上安装MySQL

在基于RPM的Linux发行版上安装MySQL的推荐方法是使用Oracle提供的RPM包。 对于社区版MySQL,有两个获取它们的来源:

注意

MySQL的RPM分布也由其他供应商提供。 请注意,它们可能与Oracle在功能,功能和约定(包括通信设置)中构建的不同,并且本手册中的安装说明不一定适用于它们。 应该咨询供应商的说明。

MySQL RPM包

表2.8 MySQL Community Edition的RPM包

包裹名字 摘要
mysql-community-client MySQL客户端应用程序和工具
mysql-community-common 服务器和客户端库的公共文件
mysql-community-devel 用于MySQL数据库客户端应用程序的开发头文件和库
mysql-community-embedded-compat MySQL服务器作为嵌入式库,兼容使用库18的应用程序
mysql-community-libs MySQL数据库客户端应用程序的共享库
mysql-community-libs-compat 以前的MySQL安装的共享兼容库
mysql-community-server 数据库服务器和相关工具
mysql-community-test MySQL服务器的测试套件
mysql-community 源代码RPM看起来类似于mysql-community-8.0.18-1.el7.src.rpm,具体取决于所选的操作系统

表2.9 MySQL企业版的RPM包

包裹名字 摘要
mysql-commercial-backup MySQL企业备份(在8.0.11中添加)
mysql-commercial-client MySQL客户端应用程序和工具
mysql-commercial-common 服务器和客户端库的公共文件
mysql-commercial-devel 用于MySQL数据库客户端应用程序的开发头文件和库
mysql-commercial-embedded-compat MySQL服务器作为嵌入式库,兼容使用库18的应用程序
mysql-commercial-libs MySQL数据库客户端应用程序的共享库
mysql-commercial-libs-compat 以前MySQL安装的共享兼容库; 库的版本与您正在使用的分发默认安装的库的版本匹配
mysql-commercial-server 数据库服务器和相关工具
mysql-commercial-test MySQL服务器的测试套件

RPM的全名具有以下语法:

packagename- version- distribution- arch.rpm

distribution arch 值表示Linux分发和的量,包建处理器类型。 有关分发标识符的列表,请参阅下表:

表2.10 MySQL Linux RPM包分发标识符

分配价值 有可能的使用
el6 el7 红帽企业Linux / Oracle Linux / CentOS 6或7
fc28 fc29 fc30 Fedora 28,29和30
sles12 SUSE Linux Enterprise Server 12

要查看RPM包中的所有文件(例如 mysql-community-server ),请使用以下命令:

外壳> rpm -qpl mysql-community-server-version-distribution-arch.rpm

本节其余部分的讨论仅适用于使用直接从Oracle下载的RPM软件包而不是通过MySQL存储库的安装过程。

某些包之间存在依赖关系。 如果您计划安装许多软件包,您可能希望下载RPM软件包 tar 文件,其中包含上面列出的所有RPM软件包,因此您无需单独下载它们。

在大多数情况下,你需要安装 mysql-community-server mysql-community-client mysql-community-libs mysql-community-common ,和 mysql-community-libs-compat 包获得的功能,标准的MySQL安装。 要执行此类标准的基本安装,请转到包含所有这些软件包的文件夹(最好不要包含其他具有相似名称的RPM软件包),然后发出以下命令:

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

zypper 替换 yum 用于SLES,用 dnf 替换 Fedora。

虽然这是很最好使用像一个高层次的包管理工具 百胜 安装的软件包,谁喜欢直接用户 命令可以更换 百胜安装 使用命令 RPM -Uvh 命令; 但是,使用 rpm -Uvh 会使安装过程更容易出错,因为安装过程可能会遇到潜在的依赖性问题。

要仅安装客户端程序,可以跳过 mysql-community-server 要安装的软件包列表; 发出以下命令:

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

zypper 替换 yum 用于SLES,用 dnf 替换 Fedora。

使用RPM软件包的MySQL标准安装会导致在系统目录下创建的文件和资源,如下表所示。

表2.11来自MySQL Developer Zone的Linux RPM软件包的MySQL安装布局

文件或资源 地点
客户端程序和脚本 /usr/bin
mysqld 服务器 /usr/sbin
配置文件 /etc/my.cnf
数据目录 /var/lib/mysql
错误日志文件

对于RHEL,Oracle Linux,CentOS或Fedora平台: /var/log/mysqld.log

对于SLES: /var/log/mysql/mysqld.log

的价值 secure_file_priv /var/lib/mysql-files
System V init脚本

对于RHEL,Oracle Linux,CentOS或Fedora平台: /etc/init.d/mysqld

对于SLES: /etc/init.d/mysql

系统服务

对于RHEL,Oracle Linux,CentOS或Fedora平台: mysqld

对于SLES: mysql

Pid文件 /var/run/mysql/mysqld.pid
插座 /var/lib/mysql/mysql.sock
密钥环目录 /var/lib/mysql-keyring
Unix手册页 /usr/share/man
包含(标题)文件 /usr/include/mysql
图书馆 /usr/lib/mysql
其他支持文件(例如,错误消息和字符集文件) /usr/share/mysql

安装还会创建一个名为的用户 mysql 和一个 mysql 在系统上 命名 的组

注意

使用较旧的软件包安装以前版本的MySQL可能会创建一个名为的配置文件 /usr/my.cnf 强烈建议您检查文件的内容并将所需的设置迁移到文件 /etc/my.cnf 文件中,然后删除 /usr/my.cnf

MySQL不会在安装过程结束时自动启动。 对于Red Hat Enterprise Linux,Oracle Linux,CentOS和Fedora系统,请使用以下命令启动MySQL:

外壳> systemctl start mysqld

对于SLES系统,命令相同,但服务名称不同:

外壳> systemctl start mysql

如果操作系统已启用systemd, 则应使用 标准 systemctl (或者 具有反转参数的 服务 )命令(如 停止 启动 状态 重新启动) 来管理MySQL服务器服务。 mysqld 默认情况下启用 服务,并在系统重新启动时启动。 请注意,某些事情在systemd平台上可能会有所不同:例如,更改数据目录的位置可能会导致问题。 有关 其他信息 请参见 第2.5.9节“使用systemd管理MySQL服务器”

在使用RPM软件包进行升级安装期间,如果MySQL服务器在升级时运行,则MySQL服务器停止,升级发生,MySQL服务器重新启动。 一个例外:如果版本在升级过程中也发生了变化(例如社区变为商业版,反之亦然),则MySQL服务器不会重新启动。

在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。

  • 在数据目录中生成SSL证书和密钥文件。

  • validate_password 已安装并已启用。

  • 'root'@'localhost' 创建 一个超级用户帐户 设置超级用户的密码并将其存储在错误日志文件中。 要显示它,请对RHEL,Oracle Linux,CentOS和Fedora系统使用以下命令:

    外壳> sudo grep 'temporary password' /var/log/mysqld.log
    

    对SLES系统使用以下命令:

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

    下一步是使用生成的临时密码登录并为超级用户帐户设置自定义密码:

外壳> mysql -uroot -p 
MySQL的> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
注意

validate_password 默认安装。 实现的默认密码策略 validate_password 要求密码包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。

如果在安装过程中出现问题,您可能会在错误日志文件中找到调试信息 /var/log/mysqld.log

对于某些Linux发行版,可能需要增加 mysqld 可用的文件描述符数量限制 请参见 第B.4.2.17节“找不到文件和类似错误”

从多个MySQL版本安装客户端库。  可以安装多个客户端库版本,例如,您希望保持与以前库链接的旧应用程序的兼容性。 要安装较旧的客户端库,请使用 rpm --oldpackage 选项 例如,要 MySQL 8.0 的EL6系统 上安装 ,请使用如下命令: mysql-community-libs-5.5 libmysqlclient.21

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

调试包。  使用 调试包 编译的MySQL Server的特殊变体 已包含在服务器RPM包中。 它执行调试和内存分配检查,并在服务器运行时生成跟踪文件。 要使用该调试版本,请启动MySQL /usr/sbin/mysqld-debug ,而不是将其作为服务启动或使用 /usr/sbin/mysqld 有关 可以使用的调试选项 请参见 第29.5.4节“DBUG包”

注意

调试版本的默认插件目录从 MySQL 8.0.4 更改 /usr/lib64/mysql/plugin /usr/lib64/mysql/plugin/debug 此前,有必要改变 plugin_dir ,以 /usr/lib64/mysql/plugin/debug 建立调试。

从源SRPM重建RPM。  源代码MySQL的SRPM包可供下载。 它们可以按原样用于使用标准 rpmbuild 工具链 重建MySQL RPM

2.5.5使用Oracle的Debian软件包在Linux上安装MySQL

Oracle提供Debian软件包,用于在Debian或类似Debian的Linux系统上安装MySQL。 这些包可通过两个不同渠道获得:

  • MySQL的APT库 这是在类似Debian的系统上安装MySQL的首选方法,因为它提供了一种安装和更新MySQL产品的简单方便的方法。 有关详细信息,请参见 第2.5.2节“使用MySQL APT存储库在Linux上安装MySQL”

  • MySQL的开发人员专区的下载区 有关详细信息,请参见 第2.1.2节“如何获取MySQL” 以下是有关Debian软件包的一些信息以及安装它们的说明:

    • MySQL Developer Zone提供了各种Debian软件包,用于在不同的Debian或Ubuntu平台上安装MySQL的不同组件(目前支持Debian 9和Ubuntu 16,17和18)。 首选方法是使用tarball包,其中包含MySQL基本设置所需的包。 tarball包的格式为 是MySQL版本, 是Linux发行版。 值指示构建程序包的处理器类型或系列,如下表所示: mysql-server_MVER-DVER_CPU.deb-bundle.tar MVER DVER CPU

      表2.12 MySQL Debian和Ubuntu安装包CPU标识符

      CPU 预期的处理器类型或系列
      i386 奔腾处理器或更好,32位
      amd64 64位x86处理器

    • 下载tarball后,使用以下命令将其解压缩:

      外壳> tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
      
    • libaio 如果您的系统上尚不存在 库,则 可能需要安装该 库:

      外壳> sudo apt-get install libaio1
      
    • 使用以下命令预配置MySQL服务器包:

      外壳> sudo dpkg-preconfigure mysql-community-server_*.deb
      

      系统将要求您为MySQL安装的root用户提供密码。 您可能还会被问到有关安装的其他问题。

      重要

      确保记住您设置的root密码。 想要稍后设置密码的用户可以 在对话框 中将 密码 字段留空,只需按 OK即可 ; 在这种情况下,使用 MySQL Socket Peer-Credential Authentication Plugin 对使用Unix套接字文件的连接 验证对 服务器的root访问权限 您可以稍后使用 mysql_secure_installation 设置root密码

    • 对于MySQL服务器的基本安装,请安装数据库公共文件包,客户端包,客户端元数据包,服务器包和服务器元数据包(按此顺序); 你可以用一个命令来做到这一点:

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

      包名 server-core 包中也有 client-core 包。 它们仅包含二进制文件,并由标准软件包自动安装。 自行安装它们不会导致MySQL设置正常运行。

      如果您被 dpkg 警告未满足的依赖项 ,您可以使用 apt-get 修复它们

      sudo apt-get -f install

      以下是系统上安装文件的位置:

      • 所有配置文件(如 my.cnf )都在 /etc/mysql

      • 所有二进制文件,库,标题等都在 /usr/bin /usr/sbin

      • 数据目录位于 /var/lib/mysql

注意

MySQL的Debian发行版也由其他供应商提供。 请注意,它们可能与Oracle在功能,功能和约定(包括通信设置)中构建的不同,并且本手册中的说明不一定适用于安装它们。 应该咨询供应商的说明。

2.5.6使用Docker在Linux上部署MySQL

Docker部署框架支持轻松安装和配置MySQL Server。 本节介绍如何使用MySQL Server Docker镜像。

在使用MySQL Server Docker映像之前,需要在系统上安装Docker。 有关 说明, 请参阅 安装Docker

重要

您需要运行 docker 命令 sudo 或创建 docker 用户组,然后向任何想要运行 docker 命令的 用户添加 详情请见 此处 由于Docker容器始终以root权限运行,因此您应该了解 Docker守护程序攻击面 并正确缓解相关风险。

2.5.6.1使用Docker部署MySQL服务器的基本步骤

警告

MySQL团队维护的MySQL Docker映像专为Linux平台构建。 其他平台不受支持,使用这些MySQL Docker镜像的用户自行承担风险。 有关 在非Linux操作系统上运行这些容器的一些已知限制, 请参阅 此处的讨论

下载MySQL服务器Docker镜像

不必在单独的步骤中下载服务器映像; 但是,在创建Docker容器之前执行此步骤可确保您的本地映像是最新的。 要下载MySQL Community Edition映像,请运行以下命令:

docker pull mysql/mysql-server:tag

tag 是你想拉的图像版本的标签(例如 5.5 5.6 5.7 8.0 ,或 latest )。 如果 省略, 则使用标签,并下载最新GA版本的MySQL社区服务器的图像。 请参阅 Docker Hub中mysql / mysql-server页面 上可用版本的标签列表 :tag latest

您可以使用以下命令列出下载的Docker镜像:

外壳> docker images
存储标签图像ID创建大小
mysql / mysql-server最新3157d7f55f8d 4周前241MB

如果要下载由MySQL企业版图像 的My Oracle Support 网站,请登录到您的Oracle帐户,从下载 补丁和更新 tar.zip 文件泊坞窗图像( ),将它解压缩,以获得内(压缩包 ),然后加载图像通过运行此命令: mysql-commercial-version_linux_x86_64_docker_tar.zip mysql-enterprise-server-version.tar

docker load -i mysql-enterprise-server-version.tar
启动MySQL服务器实例

要为MySQL服务器启动新的Docker容器,请使用以下命令:

docker run --name=container_name -d image_name:tag 

可以使用 docker images 命令 获取映像名称 ,如 下载MySQL服务器Docker映像中所述 --name 用于为服务器容器提供自定义名称 选项是可选的; 如果没有提供容器名称,则生成随机的名称。

例如,要为MySQL社区服务器启动新的Docker容器,请使用以下命令:

docker run --name=mysql1 -d mysql/mysql-server:8.0 

要使用从My Oracle Support下载的Docker镜像为MySQL Enterprise Server启动新的Docker容器,请使用以下命令:

docker run --name=mysql1 -d mysql/enterprise-server:8.0 

如果先前的 docker pull docker run 命令 未下载指定名称和标记的Docker镜像, 则现在下载该图像。 容器的初始化开始,当您运行 docker ps 命令 时,容器将显示在正在运行的容器列表中 例如:

外壳> docker ps
集装箱ID图像命令创建状态端口名称
a24888f0d6f4 mysql / mysql-server“/entrypoint.sh my ...”14秒前上升13秒(生命值:开始)3306 / tcp,33060 / tcp mysql1 

容器初始化可能需要一些时间。 当服务器准备好使用时, docker ps 命令 STATUS 输出中的容器 将更 改为 (health: starting) (healthy)

上面 -d docker run 命令中 使用 选项 使容器在后台运行。 使用此命令监视容器的输出:

docker logs mysql1

初始化完成后,命令的输出将包含为root用户生成的随机密码; 例如,使用以下命令检查密码:

shell> docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD:Axegh3kAJyDLaRuBemecis&EShOs

从Container内连接到MySQL服务器

服务器准备就绪后,您可以 在刚刚启动的MySQL Server容器中 运行 mysql 客户端,并将其连接到MySQL服务器。 使用 docker exec -it 命令在已启动 的Docker容器中 启动 mysql 客户端,如下所示:

docker exec -it mysql1 mysql -uroot -p

询问时,输入生成的root密码(请参阅 上面的 启动MySQL服务器实例 的最后一步, 了解如何查找密码)。 因为 MYSQL_ONETIME_PASSWORD 默认情况下 选项为true,所以在将 mysql 客户端 连接 到服务器之后,必须通过发出以下语句来重置服务器root密码:

MySQL的> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

password 用您选择的密码 替换 重置密码后,服务器即可使用。

容器外壳访问

要使用shell访问MySQL Server容器,请使用 docker exec -it 命令在容器内启动bash shell:

shell> docker exec -it mysql1 bash 
bash-4.2#

然后,您可以在容器内运行Linux命令。 例如,要查看容器内服务器数据目录中的内容,请使用以下命令:

庆典-4.2# ls /var/lib/mysql
auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql.sock.lock private_key.pem server-cert.pem sys
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql.sock performance_schema public_key.pem server-key.pem
停止和删除MySQL容器

要停止我们创建的MySQL Server容器,请使用以下命令:

docker stop mysql1

docker stop mysqld 进程 发送SIGTERM信号 ,以便正常关闭服务器。

另请注意,当容器的主进程( MySQL服务器容器中的 mysqld )停止时,Docker容器会自动停止。

要再次启动MySQL Server容器:

docker start mysql1

使用单个命令停止并重新启动MySQL Server容器:

docker restart mysql1

要删除MySQL容器,请先将其停止,然后使用 docker rm 命令:

docker stop mysql1
docker rm mysql1 

如果希望 同时删除 服务器数据目录 Docker卷 ,请将该 -v 选项 添加 docker rm 命令。

升级MySQL服务器容器
重要

按照以下步骤将MySQL 5.7的Docker安装升级到8.0:

  • 停止MySQL 5.7服务器( mysql57 在此示例中 为容器名称 ):

    docker stop mysql57
    
  • 下载MySQL 8.0 Server Docker镜像。 请参阅 下载MySQL服务器Docker镜像中的说明 ; 确保为MySQL 8.0使用正确的标记。

  • 启动一个新的MySQL 8.0 Docker容器( mysql80 在此示例中 命名 ),其中包含旧的服务器数据和配置(如果需要,可以进行适当的修改 - 参见 第2.11节“升级MySQL” ),这些 容器 已经保留在主机上(通过 绑定安装 在此例)。 对于MySQL社区服务器,请运行以下命令:

    docker run --name=mysql80 \
       --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
       --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \        
       -d mysql/mysql-server:8.0

    如果需要,请调整 mysql/mysql-server 到正确的存储库名称 - 例如,将其替换 mysql/enterprise-server 为从 My Oracle Support 下载的MySQL Enterprise Edition映像

  • 等待服务器完成启动。 您可以使用 docker ps 命令 检查服务器的状态 (请参阅 启动MySQL服务器实例 以了解如何执行此操作)。

  • 对于MySQL 8.0.15及更早版本: 在MySQL 8.0 Server容器中 运行 mysql_upgrade 实用程序(MySQL 8.0.16及更高版本不需要):

    docker exec -it mysql80 mysql_upgrade -uroot -p
    

    出现提示时,输入旧MySQL 5.7 Server的root密码。

  • 通过重新启动MySQL 8.0 Server容器完成升级:

    docker restart mysql80
    
有关使用Docker部署MySQL服务器的更多主题

有关使用Docker部署MySQL Server的更多主题,如服务器配置,持久化数据和配置,服务器错误日志和容器环境变量,请参见 第2.5.6.2节“使用Docker部署MySQL服务器的更多主题”

2.5.6.2使用Docker部署MySQL服务器的更多主题

注意

下面的大多数示例命令都 mysql/mysql-server 必须指定Docker镜像存储库(如 docker pull docker run 命令); 如果您的映像来自另一个存储库,请更改它 - 例如,将其替换 mysql/enterprise-server 为从 My Oracle Support 下载的MySQL Enterprise Edition映像

Docker的优化MySQL安装

MySQL的Docker镜像针对代码大小进行了优化,这意味着它们只包含预期与在Docker容器中运行MySQL实例的大多数用户相关的关键组件。 在以下方面,MySQL Docker安装与常见的非Docker安装不同:

  • 包含的二进制文件仅限于:

    • /usr/bin/my_print_defaults

    • /usr/bin/mysql

    • /usr/bin/mysql_config

    • /usr/bin/mysql_install_db

    • /usr/bin/mysql_tzinfo_to_sql

    • /usr/bin/mysql_upgrade

    • /usr/bin/mysqladmin

    • /usr/bin/mysqlcheck

    • /usr/bin/mysqldump

    • /usr/bin/mysqlpump

    • /usr/bin/mysqlbackup (仅适用于MySQL Enterprise Edition 8.0)

    • /usr/sbin/mysqld

  • 所有二进制文件都被删除; 它们不包含调试信息。

配置MySQL服务器

启动MySQL Docker容器时,可以通过 docker run 命令 将配置选项传递给服务器 例如:

docker run --name mysql1 -d mysql/mysql-server:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_col

该命令启动MySQL服务器 utf8mb4 作为默认字符集和 utf8mb4_col 数据库的默认排序规则。

配置MySQL服务器的另一种方法是准备配置文件并将其安装在容器内的服务器配置文件的位置。 有关 详细信息, 请参阅 持久数据和配置更改

持久化数据和配置更改

Docker容器原则上是短暂的,如果容器被删除或损坏,预计会丢失任何数据或配置(请参阅 此处的 讨论 )。 但是, Docker卷 提供了一种机制来保存在Docker容器中创建的数据。 在初始化时,MySQL Server容器为服务器数据目录创建一个Docker卷。 用于 在容器上 运行 docker inspect 命令 的JSON输出 有一个 Mount 键,其值提供有关数据目录卷的信息:

外壳> docker inspect mysql1 
...
 “坐骑”:[
            {
                “类型”:“音量”,
                “名称”:“4f2d463cfc4bdd4baebcb098c97d7da3337195ed2c6572bc0b89f7e845d27652”,
                “来源”:“/ var / lib / docker / volumes / 4f2d463cfc4bdd4baebcb098c97d7da3337195ed2c6572bc0b89f7e845d27652 / _data”,
                “目的地”:“/ var / lib / mysql”,
                “司机”:“本地”,
                “模式”:“”,
                “RW”:是的,
                “传播”:“”
            }
        ]
...

输出显示 /var/lib/docker/volumes/4f2d463cfc4bdd4baebcb098c97d7da3337195ed2c6572bc0b89f7e845d27652/_data 主机 文件夹 (主机上持有数据)已安装在 /var/lib/mysql 容器内的服务器数据目录中。

保留数据的另一种方法是 在创建容器时 使用该 选项 绑定安装 主机目录 --mount 可以使用相同的技术来持久保存服务器的配置。 以下命令创建MySQL Server容器并绑定安装数据目录和服务器配置文件:

docker run --name=mysql1 \
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \
-d mysql/mysql-server:tag 

命令安装 path-on-host-machine/my.cnf /etc/my.cnf (容器内部的服务器配置文件),并且 path-on-host-machine/datadir /var/lib/mysql (数据容器内的目录)。 必须满足以下条件才能使绑定安装正常工作:

  • 配置文件 path-on-host-machine/my.cnf 必须已存在,并且必须包含使用用户启动服务器的规范 mysql

    的[mysqld]
    用户= MySQL的

    您还可以在文件中包含其他服务器配置选项。

  • 数据目录 path-on-host-machine/datadir 必须已存在。 要进行服务器初始化,目录必须为空。 您还可以安装预先填充数据的目录并使用它启动服务器; 但是,您必须确保使用与创建数据的服务器相同的配置启动Docker容器,并在启动容器时装入所需的任何主机文件或目录。

运行其他初始化脚本

如果 在创建数据库后立即要在数据库上运行 任何 .sh .sql 脚本,则可以将它们放入主机目录,然后将目录 /docker-entrypoint-initdb.d/ 安装在容器内部。 例如:

docker run --name=mysql1 \
--mount type=bind,src=/path-on-host-machine/scripts/,dst=/docker-entrypoint-initdb.d/ \
-d mysql/mysql-server:tag
从另一个Docker容器中的应用程序连接到MySQL

通过设置Docker网络,您可以允许多个Docker容器相互通信,以便另一个Docker容器中的客户端应用程序可以访问服务器容器中的MySQL Server。 首先,创建一个Docker网络:

docker network create my-custom-net

然后,在创建和启动服务器和客户端容器时,使用该 --network 选项将它们放在您创建的网络上。 例如:

docker run --name=mysql1 --network=my-custom-net -d mysql/mysql-server
docker run --name=myapp1 --network=my-custom-net -d myapp

然后, myapp1 容器可以 mysql1 使用 mysql1 主机名 连接到 容器, 反之亦然,因为Docker会自动为给定的容器名称设置DNS。 在以下示例中,我们 容器 内部 运行 mysq l 客户端 myapp1 以连接到 mysql1 其自己的容器中的 主机

docker exec -it myapp1 mysql --host=mysql1 --user=myuser --password

有关容器的其他网络技术,请参阅 Docker文档中 Docker容器网络 部分。

服务器错误日志

首次使用服务器容器启动MySQL服务器时, 如果满足以下任一条件,则不会生成 服务器错误日志

  • 已装入主机的服务器配置文件,但该文件不包含系统变量 log_error (请参阅 绑定装载服务器配置文件时的 保留数据和配置更改 )。

  • 尚未安装主机的服务器配置文件,但Docker环境变量 MYSQL_LOG_CONSOLE true (这是MySQL 8.0服务器容器的变量的默认状态)。 然后将MySQL服务器的错误日志重定向到 stderr ,以便错误日志进入Docker容器的日志,并使用 docker logs mysqld-container 命令 查看

要使MySQL服务器在两个条件之一为真时生成错误日志,请使用该 --log-error 选项 配置服务器 以在容器内的特定位置生成错误日志。 要保留错误日志,请将主机文件装载到容器内错误日志的位置,如“保持 数据和配置更改”中所述 但是,您必须确保其容器内的MySQL Server具有对装入的主机文件的写访问权。

在Docker中使用MySQL Enterprise Backup

MySQL Enterprise Backup 是MySQL服务器的商业许可备份实用程序,可与 MySQL企业版一起使用 MySQL Enterprise Backup包含在MySQL企业版的Docker安装中。

在下面的示例中,我们假设您已经在Docker容器中运行了MySQL服务器( 有关如何 使用Docker 启动MySQL服务器实例, 请参见 第2.5.6.1节“使用Docker部署MySQL服务器的基本步骤” )。 要使MySQL Enterprise Backup备份MySQL服务器,它必须能够访问服务器的数据目录。 例如,这可以通过 在启动 服务器 将主机目录绑定到MySQL服务器的数据目录来实现

docker run --name=mysqlserver \
--mount type=bind,src=/path-on-host-machine/datadir/,dst=/var/lib/mysql \
-d mysql/enterprise-server:8.0

使用此命令,MySQL Server以MySQL Enterprise Edition的Docker映像启动,主机目录 /path-on-host-machine/datadir/ 已安装到 /var/lib/mysql 服务器容器内的服务器 数据目录( )上。 我们还假设,在服务器启动后,还已为MySQL Enterprise Backup设置了访问服务器所需的权限( 有关详细信息, 请参阅 将MySQL权限授予备份管理员 )。 然后使用以下步骤备份和还原MySQL Server实例。

使用带有Docker的MySQL Enterprise Backup备份在Docker容器中运行的MySQL Server实例

  1. 在运行MySQL Server容器的同一主机上,启动另一个带有MySQL Enterprise Edition映像的容器,以使用MySQL Enterprise Backup命令执行备份 backup-to-image 使用我们在上一步中创建的绑定装载提供对服务器数据目录的访问。 此外,将主机目录( /path-on-host-machine/backups/ 在此示例中)安装到存储文件夹中以备份容器( /data/backups 在示例中)以保留我们正在创建的备份。 以下是此步骤的示例命令,其中MySQL Enterprise Backup以从 My Oracle Support 下载的Docker映像启动

    外壳> docker run \
    --mount type=bind,src=/path-on-host-machine/datadir/,dst=/var/lib/mysql \
    --mount type=bind,src=/path-on-host-machine/backups/,dst=/data/backups \ 
    --rm mysql/enterprise-server:8.0 \
    mysqlbackup -umysqlbackup -ppassword --backup-dir=/tmp/backup-tmp --with-timestamp \
    --backup-image=/data/backups/db.mbi backup-to-image
    
    [Entrypoint] MySQL Docker Image 8.0.11-1.1.5
    MySQL企业备份版本8.0.11 Linux-4.1.12-61.1.16.el7uek.x86_64-x86_64 [2018-04-08 07:06:45] 
    版权所有(c)2003,2018,Oracle和/或其附属公司。版权所有。
    
    180921 17:27:25主要信息:使用Id'140594390935680'创建的主题 
    180921 17:27:25主要信息:从以下命令行开始......
    ...
    
    -------------------------------------------------- -----------
       参数摘要         
    -------------------------------------------------- -----------
       启动LSN:29615616
       结束LSN:29651854
    -------------------------------------------------- -----------
    
    mysqlbackup完成OK!
    

    通过 mysqlbackup 检查输出的结尾非常重要, 以确保备份已成功完成。

  2. 备份作业完成后,容器将退出,并且 --rm 使用用于启动它 选项,它将在退出后被删除。 已创建映像备份,可在最后一步中安装的主机目录中找到用于存储备份的映像:

    shell> ls / tmp / backups
    db.mbi
    

使用带有Docker的MySQL Enterprise Backup恢复Docker容器中的MySQL Server实例

  1. 停止MySQL服务器容器,这也会阻止MySQL服务器在里面运行:

    docker stop mysqlserver
  2. 在主机上,删除MySQL Server数据目录的bind挂载中的所有内容:

    rm -rf /path-on-host-machine/datadir/ *
    
  3. 使用MySQL Enterprise Edition映像启动容器,以使用MySQL Enterprise Backup命令执行还原 copy-back-and-apply-log 绑定服务器的数据目录和备份的存储文件夹,就像我们备份服务器时所做的那样:

    外壳> docker run \
    --mount type=bind,src=/path-on-host-machine/datadir/,dst=/var/lib/mysql \
    --mount type=bind,src=/path-on-host-machine/backups/,dst=/data/backups \ 
    --rm mysql/enterprise-server:8.0 \
    mysqlbackup --backup-dir=/tmp/backup-tmp --with-timestamp \
    --datadir=/var/lib/mysql --backup-image=/data/backups/db.mbi copy-back-and-apply-log
    
    [Entrypoint] MySQL Docker Image 8.0.11-1.1.5
    MySQL企业备份版本8.0.11 Linux-4.1.12-61.1.16.el7uek.x86_64-x86_64 [2018-04-08 07:06:45] 
    版权所有(c)2003,2018,Oracle和/或其附属公司。版权所有。
    
    180921 22:06:52主要信息:使用Id'139768047519872'创建的主题 
    180921 22:06:52主要信息:从以下命令行开始......
    ...
    180921 22:06:52 PCR1 INFO:我们能够解析ibbackup_logfile到
              lsn 29680612。
    180921 22:06:52 PCR1 INFO:上一个MySQL binlog文件位置0 155,文件名binlog.000003
    180921 22:06:52 PCR1 INFO:第一个数据文件是'/ var / lib / mysql / ibdata1'
                                  并且新创建的日志文件位于'/ var / lib / mysql'
    180921 22:06:52主要信息:没有要处理的密钥环文件。
    180921 22:06:52主要信息:应用日志操作成功完成。
    180921 22:06:52主要信息:已成功恢复完全备份。
    
    mysqlbackup完成OK!有3个警告
    

    备份作业完成后,容器将退出,并且 --rm 在启动时 使用该 选项,它将在退出后被删除。

  4. 重新启动服务器容器,它还会重新启动已还原的服务器:

    docker restart mysqlserver

    或者,在还原的数据目录上启动新的MySQL服务器:

    docker run --name=mysqlserver2 \
    --mount type=bind,src=/path-on-host-machine/datadir/,dst=/var/lib/mysql \
    -d mysql/enterprise-server:8.0

    登录到服务器以检查服务器是否正在运行还原的数据。

Docker环境变量

创建MySQL Server容器时,可以使用 --env 选项( -e 简而言之) 配置MySQL实例, 并指定以下一个或多个环境变量。

笔记
  • 如果您挂载的数据目录不为空,则以下变量都不会产生任何影响,因为之后不会尝试进行服务器初始化( 有关详细信息, 请参阅 保留 数据和配置更改 )。 在容器启动期间,不会修改文件夹中任何预先存在的内容,包括任何旧服务器设置。

  • 布尔变量包括 MYSQL_RANDOM_ROOT_PASSWORD ,, MYSQL_ONETIME_PASSWORD MYSQL_ALLOW_EMPTY_PASSWORD MYSQL_LOG_CONSOLE 通过使用任何非零长度的字符串设置它们来实现。 因此,将它们设置为例如 0 不会使它们成为假,但实际上使它们成立。 这是MySQL Server容器的已知问题。

  • MYSQL_RANDOM_ROOT_PASSWORD :当此变量为true(这是默认状态,除非 MYSQL_ROOT_PASSWORD 已设置或 MYSQL_ALLOW_EMPTY_PASSWORD 设置为true)时,将在启动Docker容器时生成服务器root用户的随机密码。 密码打印到 stdout 容器中,可以通过查看容器的日志找到(请参阅 启动MySQL服务器实例 )。

  • MYSQL_ONETIME_PASSWORD :当变量为true(这是默认状态,除非 MYSQL_ROOT_PASSWORD 已设置或 MYSQL_ALLOW_EMPTY_PASSWORD 设置为true)时,root用户的密码设置为expired,必须先更改才能正常使用MySQL。

  • MYSQL_DATABASE :此变量允许您指定要在映像启动时创建的数据库的名称。 如果用户名和密码均配备有 MYSQL_USER MYSQL_PASSWORD ,创建用户并授予该数据库(对应于超级用户权限 GRANT ALL )。 指定的数据库由 CREATE DATABASE IF NOT EXIST 语句创建,因此如果数据库已存在,则该变量无效。

  • MYSQL_USER MYSQL_PASSWORD :这些变量结合使用来创建用户并设置该用户的密码,并为该用户授予该 MYSQL_DATABASE 变量 指定的数据库的超级用户权限 这两个 MYSQL_USER MYSQL_PASSWORD 所需要的用户可以创建,如果有两个变量没有设置,其他被忽略。 如果两个变量都已设置但未设置 MYSQL_DATABASE ,则创建用户时没有任何权限。

    注意

    有没有必要使用这种机制创建根超级用户,这是默认与在描述所讨论的机制的任何一个设置密码创建 MYSQL_ROOT_PASSWORD MYSQL_RANDOM_ROOT_PASSWORD ,除非 MYSQL_ALLOW_EMPTY_PASSWORD 是真的。

  • MYSQL_ROOT_HOST :默认情况下,MySQL会创建 'root'@'localhost' 帐户。 此帐户只能从容器内部连接,如 Container 中的 连接到MySQL服务器中所述 要允许来自其他主机的根连接,请设置此环境变量。 例如,该值 172.17.0.1 (默认的Docker网关IP)允许来自运行容器的主机的连接。 该选项仅接受一个条目,但允许使用通配符(例如, MYSQL_ROOT_HOST=172.*.*.* MYSQL_ROOT_HOST=% )。

  • MYSQL_LOG_CONSOLE :当变量为true(这是MySQL 8.0服务器容器的默认状态)时,MySQL服务器的错误日志被重定向到 stderr ,以便错误日志进入Docker容器的日志,并且可以使用 docker logs mysqld-container 命令 查看

    注意

    如果已装入主机的服务器配置文件,则该变量无效(请参阅 绑定装配配置文件时的 保留数据和配置更改 )。

  • MYSQL_ROOT_PASSWORD :此变量指定为MySQL root帐户设置的密码。

    警告

    在命令行上设置MySQL root用户密码是不安全的。 作为显式指定密码的替代方法,您可以使用容器文件路径为密码文件设置变量,然后从主机中装入包含容器文件路径密码的文件。 这仍然不是很安全,因为密码文件的位置仍然暴露。 最好使用默认设置, MYSQL_RANDOM_ROOT_PASSWORD 并且 MYSQL_ONETIME_PASSWORD 两者都为真。

  • MYSQL_ALLOW_EMPTY_PASSWORD 将其设置为true以允许使用root用户的空密码启动容器。

    警告

    将此变量设置为true是不安全的,因为它会使您的MySQL实例完全不受保护,从而允许任何人获得完整的超级用户访问权限。 最好使用默认设置, MYSQL_RANDOM_ROOT_PASSWORD 并且 MYSQL_ONETIME_PASSWORD 两者都为真。

2.5.6.3使用Docker在Windows和其他非Linux平台上部署MySQL

警告

Oracle提供的MySQL Docker映像专为Linux平台构建。 其他平台不受支持,从Oracle运行MySQL Docker镜像的用户自行承担风险。 本节讨论在非Linux平台上使用时图像的一些已知问题。

在Windows上使用来自Oracle的MySQL Server Docker镜像的已知问题包括:

  • 如果您在容器的MySQL数据目录上进行绑定安装(请参阅 持久数据和配置更改 以获取详细信息),则必须将服务器套接字文件的位置设置 --socket 为MySQL数据目录之外的某个 位置 ; 否则,服务器将无法启动。 这是因为Docker for Windows处理文件安装的方式不允许将主机文件绑定到套接字文件上。

2.5.7从本地软件存储库在Linux上安装MySQL

许多Linux发行版在其本机软件存储库中包含MySQL服务器版本,客户端工具和开发组件,并且可以与平台的标准包管理系统一起安装。 本节提供使用这些程序包管理系统安装MySQL的基本说明。

重要

原生包通常是当前可用版本的几个版本。 您通常也无法安装开发里程碑版本(DMR),因为这些版本通常不在本机存储库中提供。 在继续之前,我们建议您查看 第2.5节“在Linux上安装MySQL”中 描述的其他安装选项

分发特定说明如下所示:

  • Red Hat Linux,Fedora,CentOS

    注意

    对于许多Linux发行版,您可以使用MySQL Yum存储库而不是平台的本机软件存储库来安装MySQL。 有关详细信息 请参见 第2.5.1节“使用MySQL Yum存储库在Linux上安装MySQL”

    对于Red Hat和类似的发行版,MySQL发行版分为许多单独的包, mysql 用于客户端工具, mysql-server 服务器和相关工具以及 mysql-libs 库。 如果要提供来自不同语言和环境(如Perl,Python等)的连接,则需要这些库。

    要安装,请使用 yum 命令指定 要安装 的软件包。 例如:

    root-shell> yum install mysql mysql-server mysql-libs mysql-server
    加载的插件:presto,refresh-packagekit
    设置安装过程
    解决依赖关系
    - >运行事务检查
    --->包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设置为要更新
    - > Processing Dependency:perl-DBD-MySQL for package:mysql-server-5.1.48-2.fc13.x86_64
    - >运行事务检查
    --->包perl-DBD-MySQL.x86_64 0:4.017-1.fc13设置为更新
    - >完成的依赖性解决方案
    
    已解决的依赖关系
    
    ================================================== ==============================
     包Arch版本存储库大小
    ================================================== ==============================
    安装:
     mysql x86_64 5.1.48-2.fc13更新889 k
     mysql-libs x86_64 5.1.48-2.fc13更新1.2 M
     mysql-server x86_64 5.1.48-2.fc13更新8.1 M.
    安装依赖项:
     perl-DBD-MySQL x86_64 4.017-1.fc13更新136 k
    
    交易摘要
    ================================================== ==============================
    安装4个包裹
    升级0套餐
    
    总下载大小:10 M
    安装尺寸:30米
    这没关系[y / N]:y
    下载包:
    设置和读取Presto delta元数据
    处理增量元数据
    程序包数据仍有待下载: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
    -------------------------------------------------- ------------------------------
    总计201 kB / s | 10 MB 00:52
    运行rpm_check_debug
    运行事务测试
    交易测试成功
    运行交易
      安装:mysql-libs-5.1.48-2.fc13.x86_64 1/4
      安装:mysql-5.1.48-2.fc13.x86_64 2/4
      安装:perl-DBD-MySQL-4.017-1.fc13.x86_64 3/4
      安装:mysql-server-5.1.48-2.fc13.x86_64 4/4
    
    安装:
      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
    
    安装依赖项:
      perl-DBD-MySQL.x86_64 0:4.017-1.fc13
    
    完成!
    

    现在应该安装MySQL和MySQL服务器。 安装了一个示例配置文件 /etc/my.cnf 将安装一个用于启动和停止服务器的init脚本 /etc/init.d/mysqld 要启动MySQL服务器使用 服务

    root-shell> service mysqld start
    

    要在启动期间自动启动和停止服务器,请使用 chkconfig

    root-shell> chkconfig --levels 235 mysqld on
    

    这使MySQL服务器能够在指定的运行级别自动启动(和停止)。

    如果数据库表尚不存在,则会自动为您创建数据库表。 但是,您应该运行 mysql_secure_installation 来设置服务器上的root密码。

  • Debian,Ubuntu,Kubuntu

    注意

    对于受支持的Debian和Ubuntu版本,可以使用 MySQL APT存储库 而不是平台的本机软件存储库 来安装 MySQL 有关详细信息 请参见 第2.5.2节“使用MySQL APT存储库在Linux上安装MySQL”

    在Debian和相关发行,有两个包为MySQL在他们的软件库, mysql-client mysql-server ,分别为客户端和服务器组件。 例如 mysql-client-5.1 您应指定显式版本, 以确保安装所需的MySQL版本。

    要下载和安装(包括任何依赖项),请使用 apt-get 命令,指定要安装的软件包。

    注意

    在安装之前,请确保更新 apt-get 索引文件以确保下载最新的可用版本。

    MySQL软件包的示例安装可能如下所示(为清晰起见,修剪了一些部分):

    root-shell> apt-get install mysql-client-5.1 mysql-server-5.1
    阅读包裹清单......完成
    构建依赖树
    阅读国家信息......完成
    以下软件包已自动安装,不再需要:
      linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic
    使用'apt-get autoremove'删除它们。
    将安装以下额外包:
      bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl
      libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx
      mysql-common postfix
    推荐套餐:
      dbishell libipc-sharedcache-perl tinyca procmail postfix-mysql postfix-pgsql
      postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb
    将安装以下新软件包
      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升级,13新安装,0删除和182未升级。
    需要获得1907kB / 25.3MB的档案。
    完成此操作后,将使用59.5MB的额外磁盘空间。
    你想继续[Y / n]吗?ÿ
    获取:1 http://gb.archive.ubuntu.com jaunty-updates / main mysql-common 5.1.30really5.0.75-0ubuntu10.5 [63.6kB]
    获取:2 http://gb.archive.ubuntu.com jaunty-updates / main libmysqlclient15off 5.1.30really5.0.75-0ubuntu10.5 [1843kB]
    获得1907kB 9s(205kB / s)
    预配置包...
    选择以前取消选择的包mysql-common。
    (读取数据库...当前安装的121260个文件和目录。)
    ...
    处理1添加了doc-base文件...
    使用scrollkeeper注册文档...
    设置libnet-daemon-perl(0.43-1)......
    设置libplrpc-perl(0.2020-1)......
    设置libdbi-perl(1.607-1)......
    设置libmysqlclient15off(5.1.30really5.0.75-0ubuntu10.5)...
    
    设置libdbd-mysql-perl(4.008-1)......
    设置libmysqlclient16(5.1.31-1ubuntu2)...
    
    设置mysql-client-5.1(5.1.31-1ubuntu2)......
    
    设置mysql-server-5.1(5.1.31-1ubuntu2)......
     *停止MySQL数据库服务器mysqld
       ...完成。
    2013-09-24T13:03:09.048353Z 0 [注意] InnoDB:8.0.18开始; 日志序列号1566036
    2013-09-24T13:03:10.057269Z 0 [注意] InnoDB:开始关机...
    2013-09-24T13:03:10.857032Z 0 [注意] InnoDB:关机完成; 日志序列号1566036
     *启动MySQL数据库服务器mysqld
       ...完成。
     *检查是否已损坏,未完全关闭并需要升级表。
    ...
    处理libc6的触发器......
    ldconfig延迟处理现在正在进行中
    
    注意

    apt-get的 命令会安装一些软件包,包括MySQL服务器,以提供典型的工具和应用环境。 这可能意味着除了主MySQL包之外还要安装大量的包。

    在安装过程中,将创建初始数据库,并将提示您输入MySQL root密码(和确认)。 将在中创建配置文件 /etc/mysql/my.cnf 将创建一个init脚本 /etc/init.d/mysql

    服务器已经启动。 您可以使用以下方法手动启动和停止服务器:

    root-shell> service mysql [start | stop]
    

    该服务将自动添加到2,3和4运行级别,并在单个,关闭和重新启动级别中使用停止脚本。

2.5.8使用Juju在Linux上安装MySQL

Juju部署框架支持轻松安装和配置MySQL服务器。 有关说明,请参阅 https://jujucharms.com/mysql/

2.5.9使用systemd管理MySQL服务器

如果在以下Linux平台上使用RPM或Debian软件包安装MySQL,则服务器启动和关闭由systemd管理:

  • RPM包平台:

    • 红帽企业Linux 7; Oracle Linux 7; CentOS 7

    • SUSE Linux Enterprise Server 12

    • Fedora 28,29和30

  • Debian软件包平台:

    • Debian 8或更高版本

    • Ubuntu 16或更高版本

如果在使用systemd的平台上从通用二进制发行版安装MySQL,则可以按照 MySQL 8.0安全部署指南 的安装后设置部分中提供的说明手动配置MySQL的systemd支持

如果从使用systemd的平台上的源代码发行版安装MySQL,请通过使用 CMake 选项 配置分发来获取MySQL的systemd支持 请参见 第2.9.4节“MySQL源配置选项” -DWITH_SYSTEMD=1

以下讨论涵盖以下主题:

注意

在安装 了系统 支持MySQL的平台上, 不需要 安装诸如 mysqld_safe 和System V初始化脚本之类的脚本。 例如, mysqld_safe 可以处理服务器重启,但systemd提供相同的功能,并且以与其他服务的管理一致的方式提供,而不是使用特定于应用程序的程序。

因为systemd能够在安装了系统支持MySQL的平台上管理多个MySQL实例, 所以mysqld_multi mysqld_multi.server 是不必要的,并且没有安装。

systemd概述

systemd提供自动MySQL服务器启动和关闭。 它还支持使用 systemctl 命令 进行手动服务器管理 例如:

systemctl {start | stop | restart | status} mysqld

或者,使用 与System V系统兼容 service 命令(反转参数):

service mysqld {start | stop | restart | status}
注意

对于 systemctl service 命令,如果不是MySQL服务名称 mysqld ,请使用适当的名称。 例如,使用 mysql 而不是 mysqld 基于Debian和SLES系统。

对systemd的支持包括以下文件:

  • mysqld.service (RPM平台), mysql.service (Debian平台):systemd服务单元配置文件,包含有关MySQL服务的详细信息。

  • mysqld@.service (RPM平台), mysql@.service (Debian平台):喜欢 mysqld.service 或者 mysql.service ,但用于管理多个MySQL实例。

  • mysqld.tmpfiles.d :包含支持该 tmpfiles 功能的 信息的文件 此文件以名称安装 mysql.conf

  • mysqld_pre_systemd (RPM平台), mysql-system-start (Debian平台):单元文件的支持脚本。 仅当日志位置与模式匹配时( /var/log/mysql*.log 对于RPM平台, /var/log/mysql/*.log 对于Debian平台) 此脚本才有助于创建错误日志文件 在其他情况下,错误日志目录必须是可写的,或者错误日志必须存在且可写入运行 mysqld 进程 的用户

为MySQL配置systemd

要添加或更改MySQL的systemd选项,可以使用以下方法:

  • 使用本地化的systemd配置文件。

  • 安排systemd为MySQL服务器进程设置环境变量。

  • 设置 MYSQLD_OPTS systemd变量。

要使用本地化的systemd配置文件,请创建 /etc/systemd/system/mysqld.service.d 目录(如果 目录不存在)。 在该目录中,创建一个文件,其中包含 [Service] 列出所需设置 部分。 例如:

[服务]
LimitNOFILE = max_open_files
PIDFile = /path/to/pid/file
Nice = nice_level
LimitCore = core_file_limit
Environment =“LD_PRELOAD = /path/to/malloc/library
环境=“TZ = time_zone_setting

此处的讨论 override.conf 用作此文件的名称。 较新版本的systemd支持以下命令,该命令打开编辑器并允许您编辑文件:

systemctl编辑mysqld#RPM平台
systemctl编辑mysql#Debian平台

无论何时创建或更改 override.conf ,重新加载systemd配置,然后告诉systemd重新启动MySQL服务:

systemctl daemon-reload
systemctl重启mysqld #RPM平台
systemctl重启mysql#Debian平台

对于systemd, override.conf 配置方法必须用于某些参数,而不是 MySQL选项文件 中的一个 [mysqld] [mysqld_safe] 组中的 设置

  • 对于某些参数, override.conf 必须使用,因为systemd本身必须知道它们的值,并且它无法读取MySQL选项文件来获取它们。

  • 指定仅使用 mysqld_safe 已知选项可设置的值的参数 必须使用systemd指定,因为没有相应的 mysqld 参数。

有关使用systemd而不是 mysqld_safe的 其他信息 ,请参阅 从mysqld_safe迁移到systemd

您可以在以下位置设置以下参数 override.conf

  • 要指定进程ID文件,请使用 override.conf 和更改它们 PIDFile ExecStart 命名PID文件路径名。 将忽略MySQL选项文件中进程标识文件的任何设置。 要进行修改 ExecStart ,必须先将其清除。 例如:

    [服务]
    PIDFILE =在/ var /运行/ mysqld的/ mysqld-custom.pid
    ExecStart =
    ExecStart = / usr / sbin / mysqld --pid-file = / var / run / mysqld / mysqld-custom.pid $ MYSQLD_OPTS
    
  • 要设置提供给MySQL服务器的文件描述符的数量,使用 LimitNOFILE override.conf 而不是 open_files_limit 用于系统变量 的mysqld --open-files-limit 选项 mysqld_safe的

  • 要设置最大核心文件大小,请使用 LimitCore in override.conf 而不是 mysqld_safe --core-file-size 选项

  • 要设置MySQL服务器的调度优先级,请使用 Nice in override.conf 而不是 mysqld_safe --nice 选项

一些MySQL参数使用环境变量配置:

  • LD_PRELOAD :如果MySQL服务器应使用特定的内存分配库,请设置此变量。

  • NOTIFY_SOCKET :此环境变量指定 mysqld 用于与systemd通信启动完成和服务状态更改的通知 的套接字 mysqld 服务启动 时,它由systemd设置 所述 的mysqld 服务读取变量设置并写入所定义的位置。 如果未设置变量,则 mysqld 不会 写入任何内容。

  • TZ :设置此变量以指定服务器的默认时区。

有多种方法可以指定由systemd管理的MySQL服务器进程使用的环境变量值:

  • 使用 Environment 线的 override.conf 文件。 有关语法,请参阅前面讨论中描述如何使用此文件的示例。

  • 指定 /etc/sysconfig/mysql 文件中 的值 (如果文件不存在,则创建该文件)。 使用以下语法分配值:

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

    修改后 /etc/sysconfig/mysql ,重新启动服务器以使更改生效:

    systemctl重启mysqld #RPM平台
    systemctl重启mysql#Debian平台
    

要在 不直接修改systemd配置文件的情况下 指定 mysqld的 选项 ,请设置或取消设置 MYSQLD_OPTS systemd变量。 例如:

systemctl set-environment MYSQLD_OPTS =“ -  general_log = 1”
systemctl unset-environment MYSQLD_OPTS

MYSQLD_OPTS 也可以在 /etc/sysconfig/mysql 文件中 设置

修改systemd环境后,重新启动服务器以使更改生效:

systemctl重启mysqld #RPM平台
systemctl重启mysql#Debian平台

对于使用systemd的平台,如果在服务器启动时为空,则初始化数据目录。 如果数据目录是暂时消失的远程挂载,则可能会出现问题:挂载点似乎是一个空数据目录,然后将其初始化为新数据目录。 要禁止此自动初始化行为,请在 /etc/sysconfig/mysql 文件中 指定以下行 (如果文件不存在,则创建该文件):

NO_INIT =真

使用systemd配置多个MySQL实例

本节介绍如何为多个MySQL实例配置systemd。

注意

因为systemd能够在安装了systemd支持的平台上管理多个MySQL实例, 所以mysqld_multi mysqld_multi.server 是不必要的,并且没有安装。

要使用多实例功能,请修改 my.cnf 选项文件以包括每个实例的关键选项配置。 这些文件位置是典型的:

  • /etc/my.cnf /etc/mysql/my.cnf (RPM平台)

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

例如,要管理两个名为实例 replica01 replica02 ,加上像这样的选项文件:

RPM平台:

的[mysqld @ replica01]
DATADIR =的/ var / lib中/ MySQL的-replica01
插座=的/ var / lib中/ MySQL的-replica01 /的mysql.sock
端口= 3307
对数误差=的/ var /数/的mysqld-replica01.log

的[mysqld @ replica02]
DATADIR =的/ var / lib中/ MySQL的-replica02
插座=的/ var / lib中/ MySQL的-replica02 /的mysql.sock
端口= 3308
对数误差=的/ var /数/的mysqld-replica02.log

Debian平台:

的[mysqld @ replica01]
DATADIR =的/ var / lib中/ MySQL的-replica01
插座=的/ var / lib中/ MySQL的-replica01 /的mysql.sock
端口= 3307
对数误差=的/ var /日志/ MySQL的/ replica01.log

的[mysqld @ replica02]
DATADIR =的/ var / lib中/ MySQL的-replica02
插座=的/ var / lib中/ MySQL的-replica02 /的mysql.sock
端口= 3308
对数误差=的/ var /日志/ MySQL的/ replica02.log

此处显示的副本名称 @ 用作分隔符,因为这是systemd支持的唯一分隔符。

然后,实例由常规systemd命令管理,例如:

systemctl启动mysqld @ replica01
systemctl启动mysqld @ replica02

要使实例能够在引导时运行,请执行以下操作:

systemctl启用mysqld @ replica01
systemctl启用mysqld @ replica02

还支持使用通配符。 例如,此命令显示所有副本实例的状态:

systemctl status'mysqld @ replica *'

为了管理同一台机器上的多个MySQL实例,systemd自动使用不同的单元文件:

  • mysqld@.service 而不是 mysqld.service (RPM平台)

  • mysql@.service 而不是 mysql.service (Debian平台)

在单元文件, %I %i 引用之后经过在参数 @ 标记,并用于管理该特定的实例。 对于这样的命令:

systemctl启动mysqld @ replica01

systemd使用如下命令启动服务器:

mysqld --defaults-group-suffix = @%我......

其结果是, [server] [mysqld] ,和 [mysqld@replica01] 选项组被读取并用于服务的该实例。

注意

在Debian平台上,AppArmor可以防止服务器读取或写入 /var/lib/mysql-replica* ,或者 阻止 默认位置以外的任何其他内容。 要解决此问题,您必须自定义或禁用配置文件 /etc/apparmor.d/usr.sbin.mysqld

注意

在Debian平台上,MySQL卸载的打包脚本当前无法处理 mysqld@ 实例。 在删除或升级软件包之前,必须先手动停止任何额外的实例。

从mysqld_safe迁移到systemd

由于 mysqld_safe 未安装在使用systemd管理MySQL的平台上,因此 [mysqld_safe] 必须以另一种方式指定 先前为该程序指定的选项(例如,在 选项组中):

2.6使用坚不可摧的Linux网络(ULN)安装MySQL

Linux支持许多不同的安装MySQL的解决方案,如 第2.5节“在Linux上安装MySQL”所述 本节介绍的方法之一是从Oracle的Unbreakable Linux Network(ULN)安装。 您可以在 http://linux.oracle.com/ 下找到有关Oracle Linux和ULN的信息

要使用ULN,您需要获得ULN登录并使用ULN注册用于安装的机器。 这在 ULN FAQ 中有详细描述 该页面还介绍了如何安装和更新软件包。 MySQL软件包 位于ULN上的系统架构 MySQL for Oracle Linux 6 MySQL for Oracle Linux 7 通道中。

注意

在撰写本文时,ULN为Oracle Linux 6和Oracle Linux 7提供了MySQL 8.0。

使用ULN安装MySQL后,您可以在 本节中 找到有关启动和停止服务器的信息 ,尤其是 第2.5.4节“使用Oracle的RPM软件包在Linux上安装MySQL”

如果您使用ULN将现有MySQL安装更新为安装,建议的过程是使用 mysqldump 导出数据 ,删除现有安装,从ULN安装MySQL,并将导出的数据加载到新安装的MySQL中。

如果您要升级的现有MySQL安装来自之前的发行版系列(在MySQL 8.0之前),请务必阅读有关升级MySQL, 第2.11节“升级MySQL”的部分

2.7在Solaris上安装MySQL

注意

MySQL 8.0支持Solaris 11.4及更高版本

Solaris上的MySQL有多种不同的格式。

重要

安装包依赖于Oracle Developer Studio 12.6运行时库,必须在运行MySQL安装包之前安装它们。 请在 此处 查看Oracle Developer Studio的下载选项 安装包使您只能安装运行时库而不是完整的Oracle Developer Studio; 请参阅 在Oracle Solaris 11上仅安装运行时库中的说明

要以tarball或PKG格式获取Solaris的二进制MySQL发行版, 请访问https://dev.mysql.com/downloads/mysql/8.0.html

在Solaris上安装和使用MySQL时需要注意的其他注意事项:

  • 如果要将MySQL与 mysql 用户和组一起使用,请使用 groupadd useradd 命令:

    groupadd mysql
    useradd -g mysql -s / bin / false mysql
    
  • 如果在Solaris上使用二进制tarball发行版安装MySQL,因为Solaris tar 无法处理长文件名,请使用GNU tar gtar )来解压缩发行版。 如果您 的系统上 没有GNU tar ,请使用以下命令安装它:

    pkg install archiver / gnu-tar
    
  • 您应该 InnoDB 使用该 forcedirectio 选项 挂载要在其上存储 文件的 任何文件系统 (默认情况下,安装是在没有此选项的情况下完成的。)如果不这样做,将导致 InnoDB 在此平台上 使用 存储引擎 时性能显着下降

  • 如果你想让MySQL自动启动,可以复制 support-files/mysql.server /etc/init.d 和创建符号链接给它命名 /etc/rc3.d/S99mysql.server

  • 如果有太多进程尝试非常快速地连接到 mysqld ,您应该在MySQL日志中看到此错误:

    接受错误:协议错误
    

    您可以尝试使用该 --back_log=50 选项 启动服务器 作为此解决方法。

  • 要在Solaris上配置核心文件的生成,您应该使用 coreadm 命令。 由于在 setuid() 应用程序 上生成核心的安全性问题 ,默认情况下,Solaris不支持 setuid() 程序 上的核心文件 但是,您可以使用 coreadm 修改此行为 如果 setuid() 为当前用户 启用 核心文件,则将使用模式600生成核心文件并由超级用户拥有。

2.7.1使用Solaris PKG在Solaris上安装MySQL

您可以使用本机Solaris PKG格式的二进制包而不是二进制tarball分发在Solaris上安装MySQL。

重要

安装包依赖于Oracle Developer Studio 12.6运行时库,必须在运行MySQL安装包之前安装该库。 请在 此处 查看Oracle Developer Studio的下载选项 安装包使您只能安装运行时库而不是完整的Oracle Developer Studio; 请参阅 在Oracle Solaris 11上仅安装运行时库中的说明

要使用此程序包,请下载相应的 mysql-VERSION-solaris11-PLATFORM.pkg.gz 文件,然后将其解压缩。 例如:

外壳> gunzip mysql-8.0.18-solaris11-x86_64.pkg.gz

要安装新软件包,请使用 pkgadd 并按照屏幕上的提示进行操作。 您必须具有root权限才能执行此操作:

外壳> pkgadd -d mysql-8.0.18-solaris11-x86_64.pkg

可以使用以下包:
  1 mysql MySQL社区服务器(GPL)
               (i86pc)8.0.18

选择您要处理的包(或“全部”处理
所有包裹)。(默认:全部)[?,??,q]:

PKG安装程序会安装所需的所有文件和工具,然后在不存在的情况下初始化数据库。 要完成安装,您应该按照安装结束时的说明设置MySQL的root密码。 或者,您可以运行 安装附带 mysql_secure_installation 脚本。

默认情况下,PKG包在根路径下安装MySQL /opt/mysql 使用 pkgadd时 只能更改安装根路径, pkgadd 可用于在其他Solaris区域中安装MySQL。 如果需要在特定目录中安装,请使用二进制 tar 文件分发。

pkg 安装程序将适当的启动脚本为MySQL成 /etc/init.d/mysql 要使MySQL能够自动启动和关闭,您应该在此文件和init脚本目录之间创建一个链接。 例如,要确保安全启动和关闭MySQL,您可以使用以下命令添加正确的链接:

shell> ln /etc/init.d/mysql /etc/rc3.d/S91mysql
shell>ln /etc/init.d/mysql /etc/rc0.d/K02mysql

要删除MySQL,安装的软件包名称是 mysql 您可以将此 命令 pkgrm 命令 结合使用 以删除安装。

要在使用Solaris软件包文件格式时进行升级,必须在安装更新的软件包之前删除现有安装。 删除包不会删除现有的数据库信息,只删除服务器,二进制文件和支持文件。 因此,典型的升级顺序是:

shell> mysqladmin shutdown
shell> pkgrm mysql
shell> 
shell> 
shell>    #仅限MySQL 8.0.16
pkgadd -d mysql-8.0.18-solaris11-x86_64.pkgmysqld_safe &mysql_upgrade

在执行任何升级之前 您应该查看 第2.11节“升级MySQL”中 的注释

2.8在FreeBSD上安装MySQL

本节提供有关在FreeBSD Unix的变种上安装MySQL的信息。

您可以使用Oracle提供的二进制分发在FreeBSD上安装MySQL。 有关更多信息,请参见 第2.2节“使用通用二进制文件在Unix / Linux上安装MySQL”

安装MySQL的最简单(也是首选)方法是使用 http://www.freebsd.org/上 提供 mysql-server mysql-client ports 使用这些端口可带来以下好处:

  • 一个工作的MySQL,启用了所有优化,已知可以在您的FreeBSD版本上运行。

  • 自动配置和构建。

  • 安装的启动脚本 /usr/local/etc/rc.d

  • 能够用于 pkg_info -L 查看已安装的文件。

  • pkg_delete 如果您不再需要在计算机上 使用 MySQL,则可以 使用它 来删除它。

MySQL构建过程需要GNU make( gmake )才能工作。 如果GNU make 不可用,则必须在编译MySQL之前先安装它。

要使用ports系统进行安装:

#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实施的一些补充说明:

  • 使用ports系统安装后删除MySQL:

    #cd / usr / ports / databases / mysql80-server
    #make deinstall
    ...
    #cd / usr / ports / databases / mysql80-client
    #make deinstall
    ...
    
  • 如果您在MySQL中遇到当前日期的问题,设置 TZ 变量应该有所帮助。 请参见 第4.9节“MySQL程序环境变量”

2.9从源安装MySQL

从源代码构建MySQL使您可以自定义构建参数,编译器优化和安装位置。 有关运行MySQL的系统列表,请参阅 https://www.mysql.com/support/supportedplatforms/database.html

在从源代码继续安装之前,请检查Oracle是否为您的平台生成预编译的二进制分发版以及它是否适合您。 我们付出了大量努力来确保我们的二进制文件具有最佳性能的最佳选项。 有关安装二进制发行版的说明,请参见 第2.2节“使用通用二进制文件在Unix / Linux上安装MySQL”

警告

使用非标准选项构建MySQL可能会导致功能,性能或安全性降低。

MySQL源代码包含使用Doxygen编写的内部文档。 生成的Doxygen内容可从 https://dev.mysql.com/doc/index-other.html获得 也可以使用 第2.9.7节“生成MySQL Doxygen文档内容”中 的说明从MySQL源代码分发本地生成此内容

源安装方法

从源代码安装MySQL有两种方法:

  • 使用标准的MySQL源代码分发。 要获得标准分发,请参见 第2.1.2节“如何获取MySQL” 有关从标准分发构建的说明,请参见 第2.9.2节“使用标准源分发安装MySQL”

    标准发行版可用作压缩 tar 文件,Zip 压缩 文件或RPM包。 分发文件有名字的形式 或者 ,在那里 是一个数字一样 源分发的文件名可以与预编译的二进制分发的文件名区别开来,因为源分发名称是通用的并且不包括平台名称,而二进制分发名称包括指示分发所针对的系统类型的平台名称(例如, )。 mysql-VERSION.tar.gz mysql-VERSION.zip mysql-VERSION.rpm VERSION 8.0.18 pc-linux-i686 winx64

  • 使用MySQL开发树。 有关从其中一个开发树构建的信息,请参见 第2.9.3节“使用开发源树安装MySQL”

源安装系统要求

从源代码安装MySQL需要几个开发工具。 无论您使用标准源代码分发还是开发源代码树,都需要其中一些工具。 其他工具要求取决于您使用的安装方法。

要从源安装MySQL,无论安装方法如何,都必须满足以下系统要求:

  • CMake ,用作所有平台上的构建框架。 CMake 可以从 http://www.cmake.org 下载

  • 一个很好的 制作 程序。 虽然有些平台有自己的 make 实现,但强烈建议您使用GNU make 3.75或更高版本。 它可能已作为 gmake 在您的系统上提供 GNU make 可从 http://www.gnu.org/software/make/获得

  • MySQL 8.0源代码允许使用C ++ 14特性。 要在所有支持的平台上提供良好的C ++ 14支持,以下最低编译器版本适用:

    • GCC 5.3(Linux)

    • Clang 4.0(FreeBSD)

    • XCode 9(MacOS)

    • Developer Studio 12.6(Solaris)

    • Visual Studio 2017(Windows)

  • MySQL C API需要C ++或C99编译器才能编译。

  • 构建MySQL需要Boost C ++库(但不能使用它)。 MySQL编译需要特定的Boost版本。 通常,这是当前的Boost版本,但如果特定的MySQL源代码分发需要不同的版本,配置过程将停止,并显示一条消息,指示它需要的Boost版本。 要获取Boost及其安装说明,请访问 官方网站 安装Boost后,通过 WITH_BOOST 在调用 CMake 定义 选项 ,告诉构建系统Boost文件所在的位置 例如:

    cmake。-DWITH_BOOST =的/ usr /本地/ BOOST_version_number
    

    根据需要调整路径以匹配您的安装。

  • ncurses的 图书馆。

  • 足够的空闲记忆。 如果 在编译大型源文件时 遇到诸如 内部编译器错误 ”之类的 问题 ,则可能是内存太少。 如果在虚拟机上进行编译,请尝试增加内存分配。

  • 如果您打算运行测试脚本,则需要Perl。 大多数类Unix系统都包含Perl。 在Windows上,您可以使用ActiveState Perl等版本。

要从标准源代码分发安装MySQL,需要使用以下工具之一来解压缩分发文件:

  • 对于 .tar.gz 压缩的 tar 文件:GNU gunzip 来解压缩分发版和合理的 tar 来解压缩它。 如果您的 tar 程序支持该 z 选项,它可以解压缩和解压缩文件。

    已知 GNU tar 可以工作。 某些操作系统提供 的标准 tar 无法解析MySQL发行版中的长文件名。 您应该下载并安装GNU tar ,或者如果可用,请使用预安装的GNU tar版本。 通常这可以作为 gnutar gtar GNU或自由软件目录中的 tar 使用,例如 /usr/sfw/bin /usr/local/bin GNU tar 可从 http://www.gnu.org/software/tar/获得

  • 对于 .zip Zip存档: WinZip 或其他可以读取 .zip 文件的 工具

  • 对于 .rpm RPM包: 用于构建分发 rpmbuild 程序将其解包。

要从开发源代码树安装MySQL,需要以下附加工具:

  • 需要Git版本控制系统来获取开发源代码。 GitHub的帮助 提供了下载和在不同的平台上安装Git的指令。 MySQL于2014年9月正式加入GitHub。有关MySQL迁移到GitHub的更多信息,请参阅MySQL Release Engineering博客上的公告: GitHub 上的MySQL

  • bison 2.1或更高版本,可从 http://www.gnu.org/software/bison/获得 (不再支持版本1.) 尽可能 使用最新版本的 bison ; 如果遇到问题,请升级到更高版本,而不是恢复到更早版本。

    bison 可从 http://www.gnu.org/software/bison/获得 bison for Windows可以从 http://gnuwin32.sourceforge.net/packages/bison.htm 下载 下载标有 完整包,不包括来源 ”的 包裹 在Windows上, bison 的默认位置 C:\Program Files\GnuWin32 目录。 由于目录名称中的空间, 某些实用程序可能无法找到 bison 此外,如果路径中有空格,Visual Studio可能会挂起。 您可以通过安装到不包含空格的目录(例如 C:\GnuWin32 来解决这些问题

  • 在Solaris Express上, 除了 bison 之外,还必须安装 m4 m4 可从 http://www.gnu.org/software/m4/获得

注意

如果必须安装任何程序,请修改 PATH 环境变量以包括程序所在的任何目录。 请参见 第4.2.6节“设置环境变量”

如果您遇到问题并需要提交错误报告,请使用 第1.7节“如何报告错误或问题”中的说明

2.9.1源安装的MySQL布局

默认情况下,在从源代码编译MySQL后安装MySQL时,安装步骤将安装文件 /usr/local/mysql 安装目录下的组件位置与二进制分发相同。 请参阅 表2.3“通用Unix / Linux二进制包的 MySQL安装布局 第2.3.1节“Microsoft Windows上的MySQL安装布局” 要配置与默认值不同的安装位置,请使用 第2.9.4节“MySQL源配置选项”中所述的选项

2.9.2使用标准源分发安装MySQL

要从标准源代码分发安装MySQL:

  1. 验证您的系统是否满足 第2.9节“从源安装MySQL”中 列出的工具要求

  2. 使用 第2.1.2节“如何获取MySQL”中 的说明获取分发文件

  3. 使用本节中的说明配置,构建和安装分发。

  4. 使用 第2.10节“安装后设置和测试”中 的说明执行安装后过程

在MySQL 8.0中, CMake 用作所有平台上的构建框架。 此处给出的说明可以使您生成有效的安装。 有关使用 CMake 构建MySQL的 其他信息 ,请参阅 如何 使用 CMake 构建MySQL服务器

如果从源RPM启动,请使用以下命令创建可以安装的二进制RPM。 如果您没有 rpmbuild ,请改用 rpm

外壳> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

结果是您安装的一个或多个二进制RPM软件包,如 第2.5.4节“使用Oracle中的RPM软件包在Linux上安装MySQL”中所述

从压缩的 tar 文件或Zip归档源代码分发 安装的顺序 类似于从通用二进制分发版安装的过程(参见 第2.2节“在Unix / Linux上使用通用二进制文件安装MySQL” ),除了它用于所有平台,包括配置和编译分发的步骤。 例如, 在Unix上 使用压缩的 tar 文件源分发,基本安装命令序列如下所示:

#预配置设置
shell> groupadd mysql
shell>useradd -r -g mysql -s /bin/false mysql
#开始源代码构建特定指令
shell> 
shell> 
shell> 
shell> 
shell> 
shell> 
shell>tar zxvf mysql-VERSION.tar.gzcd mysql-VERSIONmkdir bldcd bldcmake ..makemake install
#源代码构建特定指令的结束
#安装后设置
shell> cd /usr/local/mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell>bin/mysqld_safe --user=mysql &
#Next命令是可选的
外壳> cp support-files/mysql.server /etc/init.d/mysql.server

下面显示了源代码构建特定指令的更详细版本。

注意

此处显示的过程不会为MySQL帐户设置任何密码。 执行此过程后,请继续执行 第2.10节“安装后设置和测试” ,以进行安装后设置和测试。

执行预配置设置

在Unix上,设置 mysql 将用于运行和执行MySQL服务器并拥有数据库目录 用户和组。 有关详细信息,请参阅 创建mysql用户和组 然后以 mysql 用户 身份执行以下步骤 ,除非另有说明。

获取并解压缩分发

选择要在其下解压缩分发的目录并将位置更改为该目录。

使用 第2.1.2节“如何获取MySQL”中 的说明获取分发文件

将分发包解压缩到当前目录:

  • 要解压缩压缩的 tar 文件, tar 可以解压缩并解压缩分发包,如果它有 z 选项支持:

    外壳> tar zxvf mysql-VERSION.tar.gz
    

    如果您的 tar 没有 z 选项支持,请使用 gunzip 解压缩发行版和 tar 解压缩它:

    外壳> gunzip < mysql-VERSION.tar.gz | tar xvf -
    

    或者, CMake 可以解压缩并解压缩发行版:

    外壳> cmake -E tar zxvf mysql-VERSION.tar.gz
    
  • 要解压缩ZIP存档,请使用 WinZip 或其他可以读取 .zip 文件的 工具

解压缩分发文件会创建一个名为的目录 mysql-VERSION

配置分发

将位置更改为解压缩分发的顶级目录:

外壳> cd mysql-VERSION

在源树之外构建以保持树清洁。 如果在 mysql-src 当前工作目录下 命名顶级源目录,则 可以在 bld 同一级别 的目录中构建 创建目录并去那里:

shell> mkdir bld
shell>cd bld

配置构建目录。 最小配置命令不包括覆盖配置默认值的选项:

外壳> cmake ../mysql-src

构建目录不需要在源树之外。 例如,您可以构建在 bld 顶级源树下 命名的目录中 为此,从 mysql-src 当前工作目录开始,创建目录 bld 然后去那里:

shell> mkdir bld
shell>cd bld

配置构建目录。 最小配置命令不包括覆盖配置默认值的选项:

外壳> cmake ..

如果您在同一级别有多个源树(例如,构建多个版本的MySQL),则第二种策略可能是有利的。 第一个策略将所有构建目录放在同一级别,这要求您为每个目录选择唯一的名称。 使用第二个策略,您可以在每个源树中使用相同的名称作为构建目录。 以下说明假定采用第二种策略。

在Windows上,指定开发环境。 例如,以下命令分别为32位或64位版本配置MySQL:

shell> cmake .. -G "Visual Studio 12 2013"
shell>cmake .. -G "Visual Studio 12 2013 Win64"

在macOS上,要使用Xcode IDE:

外壳> cmake .. -G Xcode

运行 cmake时 ,您可能希望向命令行添加选项。 这里有些例子:

有关更多选项的列表,请参见 第2.9.4节“MySQL源配置选项”

要列出配置选项,请使用以下命令之一:

外壳> cmake .. -L    #overview
外壳> cmake .. -LH   #overview with help text
外壳> cmake .. -LAH #all params with help text
shell> ccmake ..     #interactive display

如果 CMake 失败,您可能需要通过使用不同选项再次运行来重新配置。 如果您进行了重新配置,请注意以下事项:

  • 如果 CMake 在之前运行之后运行,它可能会使用在上一次调用期间收集的信息。 此信息存储在 CMakeCache.txt CMake 启动时,它会查找该文件并在其存在的情况下读取其内容,前提是信息仍然正确。 重新配置时,该假设无效。

  • 每次运行 CMake时 ,都必须 再次 运行 make 才能重新编译。 但是,您可能希望首先从先前的构建中删除旧的目标文件,因为它们是使用不同的配置选项编译的。

要防止使用旧的目标文件或配置信息,请在重新运行 CMake 之前在Unix上的build direcotry中运行以下命令

shell> make clean
shell>rm CMakeCache.txt

或者,在Windows上:

shell> devenv MySQL.sln /clean
shell>del CMakeCache.txt

如果要将邮件发送到MySQL邮件列表以请求配置帮助,请首先检查 CMakeFiles 目录中 的文件以 获取有关失败的有用信息。 要提交错误报告,请使用 第1.7节“如何报告错误或问题”中的说明

建立分配

在Unix上:

shell> make
shell>make VERBOSE=1

第二个命令设置 VERBOSE 为显示每个已编译源的命令。

在您使用GNU make的 系统上 使用 gmake ,它已作为 gmake 安装

在Windows上:

外壳> devenv MySQL.sln /build RelWithDebInfo

如果您已进入编译阶段,但分发版本未构建,请参见 第2.9.5节“处理编译MySQL的问题” ,以获取帮助。 如果这不能解决问题,请使用 第1.7节“如何报告错误或问题”中 给出的说明将其输入我们的错误数据库 如果您已安装所需工具的最新版本,并且他们在尝试处理我们的配置文件时崩溃,请同时报告。 但是,如果您遇到 command not found 所需工具 错误或类似问题,请不要报告。 相反,请确保已安装所有必需的工具,并且您的 PATH 变量已正确设置,以便您的shell可以找到它们。

安装分发

在Unix上:

外壳> make install

这将在已配置的安装目录下安装文件(默认情况下 /usr/local/mysql )。 您可能需要以命令运行该命令 root

要在特定目录中安装,请在 DESTDIR 命令行中 添加 参数:

外壳> make install DESTDIR="/opt/mysql"

或者,生成可以在任意位置安装的安装包文件:

外壳> make package

此操作生成一个或多个 .tar.gz 可以像通用二进制分发包一样安装的文件。 请参见 第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节“使用 noinstall ZIP存档 在Microsoft Windows上安装MySQL

执行安装后设置

安装过程的其余部分涉及设置配置文件,创建核心数据库以及启动MySQL服务器。 有关说明,请参见 第2.10节“安装后设置和测试”

注意

MySQL授权表中列出的帐户最初没有密码。 启动服务器后,应使用 第2.10节“安装后设置和测试”中 的说明为它们设置密码

2.9.3使用开发源树安装MySQL

本节介绍如何从最新的开发源代码安装MySQL,该代码托管在 GitHub上 要从此存储库托管服务获取MySQL Server源代码,您可以设置本地MySQL Git存储库。

GitHub上 ,可以在 MySQL 页面 上找到MySQL Server和其他MySQL项目 MySQL Server项目是一个包含多个MySQL系列分支的单一存储库。

MySQL于2014年9月正式加入GitHub。有关MySQL迁移到GitHub的更多信息,请参阅MySQL Release Engineering博客上的公告: GitHub 上的MySQL

从开发源安装的先决条件

要从开发源代码树安装MySQL,您的系统必须满足 第2.9节“从源安装MySQL”中 概述的工具要求

设置MySQL Git存储库

要在您的计算机上设置MySQL Git存储库,请使用以下过程:

  1. 将MySQL Git存储库克隆到您的计算机。 以下命令将MySQL Git存储库克隆到名为的目录 mysql-server 初始下载需要一些时间才能完成,具体取决于连接速度。

    〜$ git clone https://github.com/mysql/mysql-server.git
    克隆到'mysql-server'......
    remote:计数对象:1198513,完成。
    remote:总计1198513(delta 0),重用0(delta 0),pack-reused 1198513
    接收对象:100%(1198513/1198513),1.01 GiB | 7.44 MiB / s,完成。
    解决增量:100%(993200/993200),完成。
    检查连接...完成。
    签出文件:100%(25510/25510),完成。
  2. 克隆操作完成后,本地MySQL Git存储库的内容将类似于以下内容:

    〜$ cd mysql-server
    〜/ mysql-server $ ls
    构建cmd-line-utils libservices sql
    CMakeLists.txt config.h.cmake man sql-common
    COPYING configure.cmake mysql-test存储
    Docs dbug mysys字符串
    Doxyfile-perfschema额外的mysys_ssl支持文件
    安装包括包装测试客户
    README libbinlogevents插件unittest
    VERSION libbinlogstandalone快速违规
    客户端解放正则表达胜利
    cmake libmysql脚本zlib
    
  3. 使用 git branch -r 命令查看MySQL存储库的远程跟踪分支。

    〜/ mysql-server $ git branch -r
      产地/ 5.5
      产地/ 5.6
      产地/ 5.7
      产地/ 8.0
      origin / HEAD  - > origin / 5.7
      起源/群集7.2
      产地/集群7.3
      起源/群集7.4
      起源/群集7.5
    
  4. 要查看在本地存储库中签出的分支,请发出 git branch 命令。 当您克隆MySQL Git存储库时,MySQL 5.7分支自动被检出。 星号将5.7分支标识为活动分支。

    〜/ mysql-server $ git branch
    * 5.7
  5. 要检出不同的MySQL分支,请运行 git checkout 命令,指定分支名称。 例如,要检查MySQL 8.0分支:

    〜/ mysql-server $ git checkout 8.0
    签出文件:100%(9600/9600),完成。
    分支8.0设置为从源跟踪远程分支8.0。
    切换到新的分支'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 邮件列表。 请参见 第1.6.2节“MySQL邮件列表” 有关提供补丁的信息,请参阅 贡献MySQL服务器

  9. 克隆MySQL Git存储库并检出要构建的分支后,可以从源代码构建MySQL Server。 第2.9.2节“使用标准源分发安装MySQL” 中提供了相关说明 ,但您跳过了有关获取和解压缩分发的部分。

    从生产计算机上的分发源树安装构建时要小心。 安装命令可能会覆盖您的实时发布安装。 如果你已经安装了MySQL和不想覆盖它,运行 CMake的 与价值观 CMAKE_INSTALL_PREFIX MYSQL_TCP_PORT 以及 MYSQL_UNIX_ADDR 那些通过生产服务器使用不同的选项。 有关防止多个服务器相互干扰的其他信息,请参见 第5.8节“在一台计算机上运行多个MySQL实例”

    使用新安装进行努力。 例如,尝试使新功能崩溃。 首先运行 make test 请参见 第29.1.2节“MySQL测试套件”

2.9.4 MySQL源配置选项

CMake的 程序提供的控制权如何配置MySQL源码分发很大。 通常,您可以使用 CMake 命令行 上的选项执行此操作 有关 CMake 支持的选项的信息 ,请在顶级源目录中运行以下任一命令:

cmake。-LH
ccmake。

您还可以 使用某些环境变量 影响 CMake 请参见 第4.9节“MySQL程序环境变量”

对于布尔选项,可以将值指定为1或 ON 启用该选项,或者 将其指定 为0或 OFF 禁用该选项。

许多选项配置可在服务器启动时覆盖的编译时默认值。 例如, CMAKE_INSTALL_PREFIX MYSQL_TCP_PORT ,和 MYSQL_UNIX_ADDR 该配置缺省安装基本目录的位置,TCP / IP端口号和Unix套接字文件选项可以在与服务器启动而改变 --basedir --port --socket 选项 的mysqld 在适用的情况下,配置选项说明指示相应的 mysqld 启动选项。

以下部分提供有关 CMake 选项的 更多信息

CMake选项参考

下表显示了可用的 CMake 选项。 Default 列中, PREFIX 代表 CMAKE_INSTALL_PREFIX 选项 的值,该值 指定安装基目录。 此值用作多个安装子目录的父位置。

表2.13 MySQL源配置选项参考(CMake)

格式 描述 默认 介绍 删除
BUILD_CONFIG 使用与官方发行版相同的构建选项
BUNDLE_RUNTIME_LIBRARIES 使用Windows的服务器MSI和Zip包捆绑运行时库 OFF 8.0.11
CMAKE_BUILD_TYPE 要生产的构建类型 RelWithDebInfo
CMAKE_CXX_FLAGS C ++编译器的标志
CMAKE_C_FLAGS C编译器的标志
CMAKE_INSTALL_PREFIX 安装基目录 /usr/local/mysql
COMPILATION_COMMENT 关于编译环境的评论
COMPILATION_COMMENT_SERVER 关于mysqld使用的编译环境的注释 8.0.14
CPACK_MONOLITHIC_INSTALL 包构建是否生成单个文件 OFF
DEFAULT_CHARSET 默认服务器字符集 utf8mb4
DEFAULT_COLLATION 默认服务器排序规则 utf8mb4_0900_ai_ci
DISABLE_DATA_LOCK 排除性能架构数据锁定检测 OFF
DISABLE_PSI_COND 排除性能架构条件检测 OFF
DISABLE_PSI_ERROR 排除性能架构服务器错误检测 OFF
DISABLE_PSI_FILE 排除性能架构文件检测 OFF
DISABLE_PSI_IDLE 排除性能架构空闲检测 OFF
DISABLE_PSI_MEMORY 排除性能架构内存检测 OFF
DISABLE_PSI_METADATA 排除性能架构元数据检测 OFF
DISABLE_PSI_MUTEX 排除性能架构互斥锁检测 OFF
DISABLE_PSI_PS 排除性能模式准备语句 OFF
DISABLE_PSI_RWLOCK 排除性能架构rwlock检测 OFF
DISABLE_PSI_SOCKET 排除性能架构套接字检测 OFF
DISABLE_PSI_SP 排除性能架构存储的程序检测 OFF
DISABLE_PSI_STAGE 排除性能架构阶段检测 OFF
DISABLE_PSI_STATEMENT 排除性能架构语句检测 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能架构statements_digest检测 OFF
DISABLE_PSI_TABLE 排除性能架构表检测 OFF
DISABLE_PSI_THREAD 排除性能架构线程检测 OFF
DISABLE_PSI_TRANSACTION 排除性能架构事务检测 OFF
DISABLE_SHARED 不要构建共享库,编译与位置相关的代码 OFF
DOWNLOAD_BOOST 是否下载Boost库 OFF
DOWNLOAD_BOOST_TIMEOUT 下载Boost库的超时时间(秒) 600
ENABLED_LOCAL_INFILE 是否为LOAD DATA启用LOCAL OFF
ENABLED_PROFILING 是否启用查询分析代码 ON
ENABLE_DEBUG_SYNC 是否启用Debug Sync支持 ON 8.0.1
ENABLE_DOWNLOADS 是否下载可选文件 OFF
ENABLE_DTRACE 是否包含DTrace支持 8.0.1
ENABLE_EXPERIMENTAL_SYSVARS 是否启用实验性InnoDB系统变量 OFF 8.0.11
ENABLE_GCOV 是否包括gcov支持
ENABLE_GPROF 启用gprof(仅限优化的Linux版本) OFF
FORCE_INSOURCE_BUILD 是否强制进行源内构建 OFF 8.0.14
FORCE_UNSUPPORTED_COMPILER 是否允许不支持的编译器 OFF
IGNORE_AIO_CHECK 使用-DBUILD_CONFIG = mysql_release,忽略libaio检查 OFF
INSTALL_BINDIR 用户可执行文件目录 PREFIX/bin
INSTALL_DOCDIR 文档目录 PREFIX/docs
INSTALL_DOCREADMEDIR README文件目录 PREFIX
INSTALL_INCLUDEDIR 头文件目录 PREFIX/include
INSTALL_INFODIR 信息文件目录 PREFIX/docs
INSTALL_LAYOUT 选择预定义安装布局 STANDALONE
INSTALL_LIBDIR 库文件目录 PREFIX/lib
INSTALL_MANDIR 手册页目录 PREFIX/man
INSTALL_MYSQLKEYRINGDIR keyring_file插件数据文件的目录 platform specific
INSTALL_MYSQLSHAREDIR 共享数据目录 PREFIX/share
INSTALL_MYSQLTESTDIR mysql-test目录 PREFIX/mysql-test
INSTALL_PKGCONFIGDIR mysqlclient.pc pkg-config文件的目录 INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR 插件目录 PREFIX/lib/plugin
INSTALL_SBINDIR 服务器可执行文件 PREFIX/bin
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv默认值 platform specific
INSTALL_SHAREDIR aclocal / mysql.m4安装目录 PREFIX/share
INSTALL_STATIC_LIBRARIES 是否安装静态库 ON
INSTALL_SUPPORTFILESDIR 额外的支持文件目录 PREFIX/support-files
LINK_RANDOMIZE 是否在mysqld二进制中随机化符号的顺序 OFF 8.0.1
LINK_RANDOMIZE_SEED LINK_RANDOMIZE选项的种子值 mysql 8.0.1
MAX_INDEXES 每个表的最大索引 64
MUTEX_TYPE InnoDB互斥类型 event
MYSQLX_TCP_PORT X插件使用的TCP / IP端口号 33060
MYSQLX_UNIX_ADDR X Plugin使用的Unix套接字文件 /tmp/mysqlx.sock
MYSQL_DATADIR 数据目录
MYSQL_MAINTAINER_MODE 是否启用MySQL维护者特定的开发环境 OFF
MYSQL_PROJECT_NAME Windows / OS X项目名称 MySQL
MYSQL_TCP_PORT TCP / IP端口号 3306
MYSQL_UNIX_ADDR Unix套接字文件 /tmp/mysql.sock
ODBC_INCLUDES ODBC包含目录
ODBC_LIB_DIR ODBC库目录
OPTIMIZER_TRACE 是否支持优化器跟踪
REPRODUCIBLE_BUILD 请特别注意创建独立于构建位置和时间的构建结果 8.0.11
SYSCONFDIR 选项文件目录
SYSTEMD_PID_DIR systemd下PID文件的目录 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd下MySQL服务的名称 mysqld
TMPDIR tmpdir默认值
USE_LD_GOLD 是否使用GNU金链接器 ON 8.0.0
USE_LD_LLD 是否使用llvm lld链接器 ON 8.0.16
WIN_DEBUG_NO_INLINE 是否禁用函数内联 OFF
WITHOUT_xxx_STORAGE_ENGINE 从构建中排除存储引擎xxx
WITH_ANT Ant的路径,用于构建GCS Java包装器 8.0.11
WITH_ASAN 启用AddressSanitizer OFF
WITH_ASAN_SCOPE 启用AddressSanitizer -fsanitize-address-use-after-scope Clang标志 OFF 8.0.4
WITH_AUTHENTICATION_LDAP 如果无法构建LDAP身份验证插件,是否报告错误 OFF 8.0.2
WITH_AUTHENTICATION_PAM 构建PAM身份验证插件 OFF
WITH_AWS_SDK Amazon Web Services软件开发工具包的位置 8.0.2
WITH_BOOST Boost库源的位置
WITH_CLIENT_PROTOCOL_TRACING 构建客户端协议跟踪框架 ON
WITH_CURL 卷曲图书馆的位置 8.0.2
WITH_DEBUG 是否包含调试支持 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用默认编译器选项 ON
WITH_DEFAULT_FEATURE_SET 是否使用默认功能集 ON
WITH_EDITLINE 使用哪个libedit / editline库 bundled
WITH_GMOCK googlemock发布的途径
WITH_ICU ICU支持的类型 bundled 8.0.4
WITH_INNODB_EXTRA_DEBUG 是否包含对InnoDB的额外调试支持。 OFF
WITH_INNODB_MEMCACHED 是否生成memcached共享库。 OFF
WITH_JEMALLOC 是否与-ljemalloc链接 OFF 8.0.16
WITH_KEYRING_TEST 构建密钥环测试程序 OFF
WITH_LIBEVENT 哪个libevent库使用 bundled
WITH_LIBWRAP 是否包含libwrap(TCP包装器)支持 OFF
WITH_LOCK_ORDER 是否启用LOCK_ORDER工具 OFF 8.0.17
WITH_LSAN 是否运行LeakSanitizer,没有AddressSanitizer OFF 8.0.16
WITH_LTO 启用链接时优化程序 OFF 8.0.13
WITH_LZ4 LZ4库支持的类型 bundled
WITH_LZMA LZMA库支持的类型 bundled 8.0.4 8.0.16
WITH_MECAB 编译MeCab
WITH_MSAN 启用MemorySanitizer OFF
WITH_MSCRT_DEBUG 启用Visual Studio CRT内存泄漏跟踪 OFF
WITH_MYSQLX 是否禁用X协议 ON 8.0.11
WITH_NUMA 设置NUMA内存分配策略
WITH_PROTOBUF 使用哪种协议缓冲区包 bundled
WITH_RAPID 是否构建快速开发周期插件 ON
WITH_RAPIDJSON RapidJSON支持的类型 bundled 8.0.13
WITH_RE2 RE2库支持的类型 bundled 8.0.4
WITH_ROUTER 是否构建MySQL路由器 ON 8.0.16
WITH_SSL SSL支持的类型 system
WITH_SYSTEMD 启用systemd支持文件的安装 OFF
WITH_SYSTEM_LIBS 设置未明确设置的库选项的系统值 OFF 8.0.11
WITH_TEST_TRACE_PLUGIN 构建测试协议跟踪插件 OFF
WITH_TSAN 启用ThreadSanitizer OFF
WITH_UBSAN 启用未定义的行为清理程序 OFF
WITH_UNIT_TESTS 使用单元测试编译MySQL ON
WITH_UNIXODBC 启用unixODBC支持 OFF
WITH_VALGRIND 是否在Valgrind头文件中编译 OFF
WITH_ZLIB zlib支持的类型 bundled
WITH_xxx_STORAGE_ENGINE 将存储引擎xxx静态编译到服务器中

常规选项

  • -DBUILD_CONFIG=mysql_release

    此选项使用Oracle使用的相同构建选项配置源分发,以生成官方MySQL版本的二进制分发版。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否将运行时库与Windows的服务器MSI和Zip包捆绑在一起。

  • -DCMAKE_BUILD_TYPE=type

    要生成的构建类型:

    • RelWithDebInfo :启用优化并生成调试信息。 这是默认的MySQL构建类型。

    • Release :启用优化但省略调试信息以减少构建大小。 在MySQL 8.0.13中添加了此构建类型。

    • Debug :禁用优化并生成调试信息。 如果 WITH_DEBUG 启用 选项, 也会使用此构建类型 也就是说, -DWITH_DEBUG=1 具有相同的效果 -DCMAKE_BUILD_TYPE=Debug

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此选项会影响 make包 操作是生成多个安装包文件还是单个文件。 如果禁用,该操作将生成多个安装包文件,如果您只想安装完整MySQL安装的子集,这可能很有用。 如果启用,它会生成一个用于安装所有内容的文件。

  • -DFORCE_INSOURCE_BUILD=bool

    定义是否强制进行源内构建。 建议使用源外构建,因为它们允许来自同一源的多个构建,并且可以通过删除构建目录来快速执行清理。 要强制在代码构建,调用 CMake的 使用 -DFORCE_INSOURCE_BUILD=ON

安装布局选项

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

    在哪里安装Info文件。

  • -DINSTALL_LAYOUT=name

    选择预定义的安装布局:

    • STANDALONE :与用于 .tar.gz .zip 包的 布局相同 这是默认值。

    • RPM :布局类似于RPM包。

    • SVR4 :Solaris包布局。

    • DEB :DEB包布局(实验)。

    您可以选择预定义布局,但可以通过指定其他选项来修改单个组件安装位置。 例如:

    cmake。-DINSTALL_LAYOUT = SVR4 -DMYSQL_DATADIR = / var / mysql / data
    

    INSTALL_LAYOUT 值确定的默认值 secure_file_priv keyring_encrypted_file_data keyring_file_data 系统变量。 请参见 第5.1.8节“服务器系统变量” 第6.4.4.11节“密钥环系统变量”中 对这些变量的描述

  • -DINSTALL_LIBDIR=dir_name

    在哪里安装库文件。

  • -DINSTALL_MANDIR=dir_name

    在哪里安装手册页。

  • -DINSTALL_MYSQLKEYRINGDIR=dir_path

    用作 keyring_file 插件数据文件 位置的默认目录 默认值是特定于平台的,取决于 CMake 选项 的值 ; 请参见 第5.1.8节“服务器系统变量” 中的 系统变量 描述 INSTALL_LAYOUT keyring_file_data

  • -DINSTALL_MYSQLSHAREDIR=dir_name

    在哪里安装共享数据文件。

  • -DINSTALL_MYSQLTESTDIR=dir_name

    在哪里安装 mysql-test 目录。 要禁止安装此目录,请将该选项显式设置为空值( -DINSTALL_MYSQLTESTDIR= )。

  • -DINSTALL_PKGCONFIGDIR=dir_name

    安装 mysqlclient.pc 文件以供 pkg-config 使用 的目录 默认值为 INSTALL_LIBDIR/pkgconfig ,除非 INSTALL_LIBDIR 结束 /mysql ,在这种情况下首先删除。

  • -DINSTALL_PLUGINDIR=dir_name

    插件目录的位置。

    可以使用该 --plugin_dir 选项 在服务器启动时设置此值

  • -DINSTALL_SBINDIR=dir_name

    在哪里安装 mysqld 服务器。

  • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

    secure_file_priv 系统变量 的默认值 默认值是特定于平台的,取决于 CMake 选项 的值 ; 请参见 第5.1.8节“服务器系统变量” 中的 系统变量 描述 INSTALL_LAYOUT 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 二进制中 的符号顺序 默认是 OFF 应仅为调试目的启用此选项。

  • -DLINK_RANDOMIZE_SEED=val

    LINK_RANDOMIZE 选项的 种子值 该值是一个字符串。 默认是 mysql ,任意选择。

  • -DMYSQL_DATADIR=dir_name

    MySQL数据目录的位置。

    可以使用该 --datadir 选项 在服务器启动时设置此值

  • -DODBC_INCLUDES=dir_name

    ODBC的位置包括目录,可以在配置Connector / ODBC时使用。

  • -DODBC_LIB_DIR=dir_name

    ODBC库目录的位置,可在配置Connector / ODBC时使用。

  • -DSYSCONFDIR=dir_name

    默认 my.cnf 选项文件目录。

    此位置无法在服务器启动时设置,但您可以使用 选项 启动具有给定选项文件的服务器 ,其中 是文件的完整路径名。 --defaults-file=file_name file_name

  • -DSYSTEMD_PID_DIR=dir_name

    当MySQL由systemd管理时,在其中创建PID文件的目录的名称。 默认是 /var/run/mysqld ; 这可能会根据 INSTALL_LAYOUT 隐式更改

    除非 WITH_SYSTEMD 启用, 否则 忽略此选项

  • -DSYSTEMD_SERVICE_NAME=name

    MySQL由systemd管理时使用的MySQL服务的名称。 默认是 mysqld ; 这可能会根据 INSTALL_LAYOUT 隐式更改

    除非 WITH_SYSTEMD 启用, 否则 忽略此选项

  • -DTMPDIR=dir_name

    用于 tmpdir 系统变量 的默认位置 如果未指定,则值默认为 P_tmpdir in <stdio.h>

存储引擎选项

存储引擎构建为插件。 您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须在使用 之前 使用 INSTALL PLUGIN 语句或 --plugin-load 选项 安装到服务器中 )。 某些插件可能不支持静态或动态构建。

InnoDB MyISAM MERGE MEMORY ,和 CSV 发动机是强制性的(总是编译到服务器)和无需显式安装。

要将存储引擎静态编译到服务器中,请使用 一些可允许的 ,和 支持)。 例子: -DWITH_engine_STORAGE_ENGINE=1 engine ARCHIVE BLACKHOLE EXAMPLE FEDERATED NDB NDBCLUSTER NDB

-DWITH_ARCHIVE_STORAGE_ENGINE = 1
-DWITH_BLACKHOLE_STORAGE_ENGINE = 1
注意

如果没有Performance Schema支持,则无法进行编译。 如果希望在没有特定类型的检测的情况下进行编译,可以使用以下 CMake 选项完成:

DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
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

例如,要在没有互斥锁检测的情况下进行编译,请使用该 -DDISABLE_PSI_MUTEX=1 选项 配置MySQL

要从构建中排除存储引擎,请使用 例子: -DWITH_engine_STORAGE_ENGINE=0

-DWITH_ARCHIVE_STORAGE_ENGINE = 0
-DWITH_EXAMPLE_STORAGE_ENGINE = 0
-DWITH_FEDERATED_STORAGE_ENGINE = 0

也可以使用 (但 优选) 从构建中排除存储引擎 例子: -DWITHOUT_engine_STORAGE_ENGINE=1 -DWITH_engine_STORAGE_ENGINE=0

-DWITHOUT_ARCHIVE_STORAGE_ENGINE = 1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE = 1
-DWITHOUT_FEDERATED_STORAGE_ENGINE = 1

如果既 没有 为给定的存储引擎指定 没有 指定,则引擎构建为共享模块,如果无法构建为共享模块,则将其排除。 -DWITH_engine_STORAGE_ENGINE -DWITHOUT_engine_STORAGE_ENGINE

功能选项

  • -DCOMPILATION_COMMENT=string

    关于编译环境的描述性评论。 从MySQL 8.0.14开始, mysqld 使用 COMPILATION_COMMENT_SERVER 其他程序继续使用 COMPILATION_COMMENT

  • -DCOMPILATION_COMMENT_SERVER=string

    关于 mysqld 使用的编译环境的描述性注释 (例如,设置 version_comment 系统变量)。 MySQL 8.0.14中添加了此选项。 在8.0.14之前,服务器使用 COMPILATION_COMMENT

  • -DDEFAULT_CHARSET=charset_name

    服务器字符集。 默认情况下,MySQL使用 utf8mb4 字符集。

    charset_name 可以是一种 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 允许的字符集在 cmake/character_sets.cmake 文件中列为值 CHARSETS_AVAILABLE

    可以使用该 --character_set_server 选项 在服务器启动时设置此值

  • -DDEFAULT_COLLATION=collation_name

    服务器整理。 默认情况下,MySQL使用 utf8mb4_0900_ai_ci 使用该 SHOW COLLATION 语句确定每个字符集可用的排序规则。

    可以使用该 --collation_server 选项 在服务器启动时设置此值

  • -DDISABLE_PSI_COND=bool

    是否排除Performance Schema条件检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_FILE=bool

    是否排除Performance Schema文件检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_IDLE=bool

    是否排除Performance Schema空闲检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_MEMORY=bool

    是否排除Performance Schema内存检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_METADATA=bool

    是否排除Performance Schema元数据检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_MUTEX=bool

    是否排除Performance Schema互斥锁检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_RWLOCK=bool

    是否排除性能模式rwlock检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_SOCKET=bool

    是否排除Performance Schema套接字检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_SP=bool

    是否排除Performance Schema存储的程序检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_STAGE=bool

    是否排除Performance Schema阶段检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除Performance Schema语句检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除Performance Schema statement_digest检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除Performance Schema表检测。 默认值为 OFF (include)。

  • -DDISABLE_SHARED=bool

    是否禁用构建构建共享库并编译与位置相关的代码。 默认值是 OFF (编译位置无关代码)。

    启用此选项会禁用 -fPIC ,结果是不构建共享库,包括插件和组件。 调用 CMake 产生此警告: Dynamic plugins are disabled.

  • -DDISABLE_PSI_PS=bool

    排除性能模式准备好的语句实例检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_THREAD=bool

    排除性能架构线程检测。 默认值为 OFF (include)。

    仅在构建时禁用线程而不使用任何检测,因为其他工具依赖于线程。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除性能架构事务检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_DATA_LOCK=bool

    排除性能架构数据锁定检测。 默认值为 OFF (include)。

  • -DDISABLE_PSI_ERROR=bool

    排除性能架构服务器错误检测。 默认值为 OFF (include)。

  • -DDOWNLOAD_BOOST=bool

    是否下载Boost库。 默认是 OFF

    WITH_BOOST 有关使用Boost的其他讨论, 请参阅该 选项。

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

    下载Boost库的超时(以秒为单位)。 默认值为600秒。

    WITH_BOOST 有关使用Boost的其他讨论, 请参阅该 选项。

  • -DENABLE_DEBUG_SYNC=bool

    从MySQL 8.0.1开始, ENABLE_DEBUG_SYNC 删除并启用 WITH_DEBUG Debug Sync。

  • -DENABLE_DOWNLOADS=bool

    是否下载可选文件。 例如,启用此选项后, CMake会 下载测试套件用于运行单元测试的Google Test分发版,或者构建GCS Java包装器所需的Ant和JUnit。

  • -DENABLE_DTRACE=bool

    是否包括对DTrace探针的支持。

    在MySQL 8.0.1中删除了此选项。

  • -DENABLE_EXPERIMENTAL_SYSVARS=bool

    是否启用实验 InnoDB 系统变量。 实验系统变量适用于从事MySQL开发的人员,仅应在开发或测试环境中使用,并且可能在未来的MySQL版本中被删除,恕不另行通知。 有关实验系统变量的信息,请参阅 /storage/innobase/handler/ha_innodb.cc MySQL源代码树。 可以通过搜索 PLUGIN_VAR_EXPERIMENTAL 来识别实验系统变量

  • -DENABLE_GCOV=bool

    是否包含gcov支持(仅限Linux)。

  • -DENABLE_GPROF=bool

    是否启用 gprof (仅限优化的Linux版本)。

  • -DENABLED_LOCAL_INFILE=bool

    此选项控制 LOCAL MySQL客户端库 的已编译默认 功能。 因此,没有明确安排的客户端会 LOCAL 根据 ENABLED_LOCAL_INFILE MySQL构建时指定 设置 禁用或启用功能

    默认情况下,MySQL二进制发行版中的客户端库是使用 ENABLED_LOCAL_INFILE disabled 编译的 如果从源代码编译MySQL,则 ENABLED_LOCAL_INFILE 根据未进行显式排列的客户端是否应 LOCAL 分别禁用或启用功能,将其配置为禁用或启用。

    ENABLED_LOCAL_INFILE 控制客户端 LOCAL 功能 的默认值 对于服务器, local_infile 系统变量控制服务器端 LOCAL 功能。 要显式地使服务器拒绝或允许 LOAD DATA LOCAL 语句(无论在构建时或运行时如何配置客户端程序和库) ,分别启用 具有 禁用或启用的 mysqld local_infile local_infile 也可以在运行时设置。 请参见 第6.1.6节“LOAD DATA LOCAL的安全问题”

  • -DENABLED_PROFILING=bool

    是否启用查询分析代码(用于 SHOW PROFILE SHOW PROFILES 语句)。

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    默认情况下, CMake会 检查受支持的编译器的最低版本:Visual Studio 2015(Windows); GCC 4.8或Clang 3.4(Linux); Developer Studio 12.5(Solaris服务器); Developer Studio 12.4或GCC 4.8(Solaris客户端库); Clang 3.6(macOS),Clang 3.4(FreeBSD)。 要禁用此检查,请使用 -DFORCE_UNSUPPORTED_COMPILER=ON

  • -DIGNORE_AIO_CHECK=bool

    如果 -DBUILD_CONFIG=mysql_release 在Linux上提供 选项,则 libaio 默认情况下必须链接库。 如果您没有 libaio 或不想安装它,可以通过指定来禁止检查它 -DIGNORE_AIO_CHECK=1

  • -DMAX_INDEXES=num

    每个表的最大索引数。 默认值为64.最大值为255.忽略小于64的值,并使用默认值64。

  • -DMYSQL_MAINTAINER_MODE=bool

    是否启用MySQL维护者特定的开发环境。 如果启用,此选项会导致编译器警告变为错误。

  • -DMUTEX_TYPE=type

    使用的互斥锁类型 InnoDB 选项包括:

    • event :使用事件互斥。 这是默认值和原始 InnoDB 互斥锁实现。

    • sys :在UNIX系统上使用POSIX互斥锁。 CRITICAL_SECTION 如果可用, 在Windows上 使用 onjects。

    • futex :使用Linux futexes而不是条件变量来安排等待的线程。

  • -DMYSQLX_TCP_PORT=port_num

    X Plugin侦听TCP / IP连接的端口号。 默认值为33060。

    可以在服务器启动时使用 mysqlx_port 系统变量 设置此值

  • -DMYSQLX_UNIX_ADDR=file_name

    服务器侦听X插件套接字连接的Unix套接字文件路径。 这必须是绝对路径名。 默认是 /tmp/mysqlx.sock

    可以在服务器启动时使用 mysqlx_port 系统变量 设置此值

  • -DMYSQL_PROJECT_NAME=name

    对于Windows或macOS,项目名称将合并到项目文件名中。

  • -DMYSQL_TCP_PORT=port_num

    服务器侦听TCP / IP连接的端口号。 默认值为3306。

    可以使用该 --port 选项 在服务器启动时设置此值

  • -DMYSQL_UNIX_ADDR=file_name

    服务器侦听套接字连接的Unix套接字文件路径。 这必须是绝对路径名。 默认是 /tmp/mysql.sock

    可以使用该 --socket 选项 在服务器启动时设置此值

  • -DOPTIMIZER_TRACE=bool

    是否支持优化器跟踪。 请参阅 MySQL内部:跟踪优化程序

  • -DREPRODUCIBLE_BUILD=bool

    对于Linux系统上的构建,此选项控制是否要特别注意创建独立于构建位置和时间的构建结果。

    MySQL 8.0.11中添加了此选项。 从MySQL 8.0.12开始,它默认 ON RelWithDebInfo 构建版本。

  • -DUSE_LD_GOLD=bool

    如果可用且未明确禁用,则 CMake 会使构建过程与GNU gold 链接器链接。 要禁用此链接器的使用,请指定该 -DUSE_LD_GOLD=OFF 选项。

  • -DUSE_LD_LLD=bool

    如果可用且未明确禁用,则 CMake 会使构建过程与 Clang llvm lld 链接器链接。 要禁用此链接器的使用,请指定该 -DUSE_LD_LLD=OFF 选项。

    MySQL 8.0.16中添加了此选项。

  • -DWIN_DEBUG_NO_INLINE=bool

    是否在Windows上禁用函数内联。 默认为关闭(启用内联)。

  • -DWITH_ANT=path_name

    设置构建GCS Java包装器时所需的Ant路径。 以与现有 WITH_BOOST CMake选项 类似的方式工作 设置 WITH_ANT 为保存Ant tarball或已解压缩的归档的目录的路径。 如果 WITH_ANT 未设置,或者使用特殊值设置 system ,则构建假定 存在 二进制 ant $PATH

  • -DWITH_ASAN=bool

    是否为支持它的编译器启用AddressSanitizer。 默认为关闭。

  • -DWITH_ASAN_SCOPE=bool

    是否为 -fsanitize-address-use-after-scope 范围外检测 启用AddressSanitizer Clang标志。 默认为关闭。 要使用此选项, -DWITH_ASAN 还必须启用。

  • -DWITH_AUTHENTICATION_LDAP=bool

    如果无法构建LDAP身份验证插件,是否报告错误:

    • 如果禁用此选项(默认设置),则会在找到所需的头文件和库时构建LDAP插件。 如果不是, CMake 会显示相关说明。

    • 如果启用此选项,则无法找到所需的头文件和库会导致 CMake 产生错误,从而阻止构建服务器。

  • -DWITH_AUTHENTICATION_PAM=bool

    是否为包含此插件的源树构建PAM身份验证插件。 (请参见 第6.4.1.5节“PAM可插入身份验证” 。)如果指定了此选项且无法编译插件,则构建将失败。

  • -DWITH_AWS_SDK=path_name

    Amazon Web Services软件开发工具包的位置。

  • -DWITH_BOOST=path_name

    构建MySQL需要Boost库。 这些 CMake 选项可以控制库源位置,以及是否自动下载它:

    • -DWITH_BOOST=path_name 指定Boost库目录位置。 也可以通过设置 BOOST_ROOT WITH_BOOST 环境变量 来指定Boost位置

      -DWITH_BOOST=system 也是允许的,表示在标准位置的编译主机上安装了正确版本的Boost。 在这种情况下,使用已安装的Boost版本,而不是MySQL源代码分发中包含的任何版本。

    • -DDOWNLOAD_BOOST=bool 指定是否下载Boost源(如果它不在指定位置)。 默认是 OFF

    • -DDOWNLOAD_BOOST_TIMEOUT=seconds 下载Boost库的超时时间(秒)。 默认值为600秒。

    例如,如果你通常构建MySQL将对象输出放在 bld MySQL源代码树 子目录中,你可以像这样使用Boost构建:

    mkdir bld
    cd bld
    cmake .. -DDOWNLOAD_BOOST = ON -DWITH_BOOST = $ HOME / my_boost
    

    这会导致Boost下载到 my_boost 您的主目录下的目录中。 如果已经存在所需的Boost版本,则不进行下载。 如果所需的Boost版本发生更改,则会下载较新版本。

    如果已在本地安装Boost并且您的编译器自己找到Boost头文件,则可能没有必要指定前面的 CMake 选项。 但是,如果MySQL所需的Boost版本发生更改且本地安装的版本尚未升级,则可能会出现构建问题。 使用 CMake 选项可以为您提供成功的构建。

    使用允许Boost下载到指定位置的上述设置,当所需的Boost版本发生更改时,您需要删除该 bld 文件夹,重新创建它,然后 再次 执行 cmake 步骤。 否则,可能无法下载新的Boost版本,并且编译可能会失败。

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    是否将客户端协议跟踪框架构建到客户端库中。 默认情况下,启用此选项。

    有关编写协议跟踪客户端插件的信息,请参见 第29.2.4.11节“编写协议跟踪插件”

    另请参见 WITH_TEST_TRACE_PLUGIN 选项。

  • -DWITH_CURL=curl_type

    卷曲 的位置 curl_type 可以是 system (使用系统 卷曲 库)或路径名 卷曲 库。

  • -DWITH_DEBUG=bool

    是否包含调试支持。

    通过调试支持配置MySQL,可以 --debug="d,parser_debug" 在启动服务器时 使用该 选项。 这会导致用于处理SQL语句的Bison解析器将解析器跟踪转储到服务器的标准错误输出。 通常,此输出将写入错误日志。

    InnoDB 存储引擎的 同步调试检查 定义 UNIV_DEBUG 在使用该 WITH_DEBUG 选项 编译调试支持时可用 编译调试支持时, innodb_sync_debug 配置选项可用于启用或禁用 InnoDB 同步调试检查。

    启用 WITH_DEBUG 还会启用Debug Sync。 该工具用于测试和调试。 编译时,默认情况下在运行时禁用调试同步。 要启用它,请 使用 选项 启动 mysqld ,其中 超时值大于0.(默认值为0,禁用调试同步。) 成为各个同步点的默认超时。 --debug-sync-timeout=N N N

    InnoDB 使用该 WITH_DEBUG 选项 编译调试支持时,可以使用存储引擎的 同步调试检查

    有关Debug Sync工具以及如何使用同步点的说明,请参阅 MySQL Internals:Test Synchronization

  • -DWITH_DEFAULT_FEATURE_SET=bool

    是否使用来自的标志 cmake/build_configurations/feature_set.cmake

  • -DWITH_EDITLINE=value

    使用哪个 libedit / editline 库。 允许的值是 bundled (默认值)和 system

  • -DWITH_ICU={icu_type|path_name}

    MySQL使用Unicode的国际组件(ICU)来支持正则表达式操作。 WITH_ICU 选项指示要包括的ICU支持的类型或要使用的ICU安装的路径名。

    • icu_type 可以是以下值之一:

      • bundled :使用与分发捆绑在一起的ICU库。 这是默认设置,是Windows唯一支持的选项。

      • system :使用系统ICU库。

    • path_name 是要使用的ICU安装的路径名。 这可能比使用 icu_type 更可取 system 因为它可以防止CMake检测并使用系统上安装的较旧或不正确的ICU版本。 (另一种允许做同样事情的方法是设置 WITH_ICU system 并将 CMAKE_PREFIX_PATH 选项 设置 path_name 。)

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    是否包含额外的InnoDB调试支持。

    启用 WITH_INNODB_EXTRA_DEBUG 额外的InnoDB调试检查。 只有在启用时才能启用此选项 WITH_DEBUG

  • -DWITH_GMOCK=path_name

    googlemock发行版的路径,用于基于Google Test的单元测试。 选项值是分发Zip文件的路径。 或者,将 WITH_GMOCK 环境变量设置为路径名。 它也可以使用 -DENABLE_DOWNLOADS=1 CMake 将从GitHub下载发行版。

    如果您在没有基于Google Test的单元测试的情况下构建MySQL(通过配置wihout WITH_GMOCK ), CMake 会显示一条消息,指示如何下载它。

  • -DWITH_INNODB_MEMCACHED=bool

    是否生成memcached共享库( libmemcached.so innodb_engine.so )。

  • -DWITH_JEMALLOC=bool

    是否链接 -ljemalloc 如果启用,内置 malloc() calloc() realloc() ,和 free() 程序将被禁用。 默认是 OFF

    MySQL 8.0.16中添加了此选项。

  • -DWITH_KEYRING_TEST=bool

    是否构建随 keyring_file 插件 附带的测试程序 默认是 OFF 测试文件源代码位于 plugin/keyring/keyring-test 目录中。

  • -DWITH_LIBEVENT=string

    libevent 使用 哪个 库。 允许的值是 bundled (默认) system ,和 yes 如果指定 system yes libevent 则使用 系统 库(如果存在)。 如果未找到系统库, libevent 则使用 捆绑的 库。 memcached libevent 需要 InnoDB

  • -DWITH_LIBWRAP=bool

    是否包含 libwrap (TCP包装器)支持。

  • -DWITH_LOCK_ORDER=bool

    是否启用LOCK_ORDER工具。 默认情况下,此选项已禁用,服务器构建不包含任何工具。 如果启用了工具,则LOCK_ORDER工具可用,可以按照 第29.5.3节“LOCK_ORDER工具”中的说明使用

    注意

    WITH_LOCK_ORDER 启用 选项后,MySQL构建需要 flex 程序。

    MySQL 8.0.17中添加了此选项。

  • -DWITH_LSAN=bool

    是否运行LeakSanitizer,没有AddressSanitizer。 默认是 OFF

    MySQL 8.0.16中添加了此选项。

  • -DWITH_LTO=bool

    是否启用链接时优化器,如果编译器支持它。 默认是 OFF

    MySQL 8.0.13中添加了此选项。

  • -DWITH_LZ4=lz4_type

    WITH_LZ4 指示的源 zlib 支持:

    • bundled :使用 lz4 与分发捆绑在一起 库。 这是默认值。

    • system :使用系统 lz4 库。 如果 WITH_LZ4 设置为此值, 则不会构建 lz4_decompress 实用程序。 在这种情况下, 可以使用 系统 lz4 命令。

  • -DWITH_MSAN=bool

    是否为支持它的编译器启用MemorySanitizer。 默认为关闭。

    要使此选项在启用时生效,所有链接到MySQL的库也必须在启用选项的情况下编译。

  • -DWITH_MECAB={disabled|system|path_name}

    使用此选项可编译MeCab解析器。 如果已将MeCab安装到其默认安装目录,请进行设置 -DWITH_MECAB=system system 选项适用于使用本机程序包管理实用程序从源或二进制文件执行的MeCab安装。 如果将MeCab安装到自定义安装目录,请指定MeCab安装的路径。 例如, -DWITH_MECAB=/opt/mecab 如果该 system 选项不起作用,则指定MeCab安装路径应该适用于所有情况。

    有关相关信息,请参见 第12.9.9节“MeCab全文分析器插件”

  • -DWITH_MSCRT_DEBUG=bool

    是否启用Visual Studio CRT内存泄漏跟踪。 默认是 OFF

  • -DWITH_MYSQLX=bool

    是否构建支持X插件。 默认 ON 请参见 第20章, 将MySQL用作文档存储

  • -DWITH_NUMA=bool

    明确设置NUMA内存分配策略。 CMake WITH_NUMA 根据当前平台是否 NUMA 支持来 设置默认 对于没有NUMA支持的平台, CMake的 行为如下:

    • 如果没有NUMA选项(正常情况), CMake会 继续正常运行,仅产生此警告:NUMA库缺失或所需版本不可用

    • 使用 -DWITH_NUMA=ON CMake 中止此错误:NUMA库缺失或所需版本不可用

  • -DWITH_PROTOBUF=protobuf_type

    使用哪种协议缓冲区包。 protobuf_type 可以是以下值之一:

    • bundled :使用与分发捆绑在一起的软件包。 这是默认值。

    • system :使用系统上安装的软件包。

    其他值将被忽略,并回退到 bundled

  • -DWITH_RAPID=bool

    是否构建快速开发周期插件。 启用后,将 rapid 在包含这些插件的构建树中创建目录。 禁用时, rapid 构建树中 不会 创建 任何 目录。 默认值是 ON ,除非 rapid 从源树中删除目录 ,否则 默认值为 OFF

  • -DWITH_RAPIDJSON=rapidjson_type

    RapidJSON库支持的类型包括。 rapidjson_type 可以是以下值之一:

    • bundled :使用与发行版捆绑在一起的RapidJSON库。 这是默认值。

    • system :使用系统RapidJSON库。 需要1.1.0或更高版本。

    MySQL 8.0.13中添加了此选项。

  • -DWITH_LZMA=lzma_type

    LZMA库支持的类型包括。 lzma_type 可以是以下值之一:

    • bundled :使用与发行版捆绑在一起的LZMA库。 这是默认值。

    • system :使用系统LZMA库。

    在MySQL 8.0.16中删除了此选项。

  • -DWITH_RE2=re2_type

    要包含的RE2库类型支持。 re2_type 可以是以下值之一:

    • bundled :使用与分发捆绑在一起的RE2库。 这是默认值。

    • system :使用系统RE2库。

  • -DWITH_ROUTER=bool

    是否构建MySQL路由器。 默认是 ON

    MySQL 8.0.16中添加了此选项。

  • -DWITH_SSL={ssl_type | path_name }

    要包含的SSL支持的类型或要使用的OpenSSL安装的路径名。

    • ssl_type 可以是以下值之一:

      • system :使用系统OpenSSL库。 这是默认值。

        在macOS和Windows上,使用 system 构建,就像调用CMake一样, path_name 并指向已安装的OpenSSL库。 这是因为它们没有系统SSL库。 在Mac OS, BREW将OpenSSL安装 将安装到 /usr/local/opt/openssl ,并 system 会发现它。 在Windows上,它检查 %ProgramFiles%/ OpenSSL %ProgramFiles%/ OpenSSL-Win32 %ProgramFiles%/ OpenSSL-Win64 C:/ OpenSSL C:/ OpenSSL-Win32 C:/ OpenSSL-Win64

      • yes :这是一个同义词 system

      • wolfssl :使用wolfSSL库。 要使用此选项值,您必须按照 extra/README-wolfssl.txt 文件中 的说明进行 操作。

    • path_name 是要使用的OpenSSL安装的路径名。 这可能比使用 ssl_type 更可取 system 因为它可以防止CMake检测并使用系统上安装的较旧或不正确的OpenSSL版本。 (另一种允许做同样事情的方法是设置 WITH_SSL system 并将 CMAKE_PREFIX_PATH 选项 设置 path_name 。)

    有关使用SSL支持的信息,请参见 第6.3节“使用加密连接”

  • -DWITH_SYSTEMD=bool

    是否启用systemd支持文件的安装。 默认情况下,禁用此选项。 启用后,将安装systemd支持文件,并且 不会安装 mysqld_safe 和System V初始化脚本等脚本。 在systemd不可用的平台上,启用会 WITH_SYSTEMD 导致 CMake 出错

    有关使用systemd的更多信息,请参见 第2.5.9节“ 使用systemd 管理MySQL服务器” 该部分还包括有关指定先前在 [mysqld_safe] 选项组中 指定的 选项的信息。 由于 在使用systemd时未安装 mysqld_safe ,因此必须以其他方式指定此类选项。

  • -DWITH_SYSTEM_LIBS=bool

    此选项充当 保护伞 选项来设置 system 的以下任一值 的CMake 未明确设置的选项: WITH_CURL WITH_EDITLINE WITH_ICU WITH_LIBEVENT WITH_LZ4 WITH_LZMA WITH_PROTOBUF WITH_RE2 WITH_SSL WITH_ZLIB

  • -DWITH_TEST_TRACE_PLUGIN=bool

    是否构建测试协议跟踪客户端插件(请参见 第29.2.4.11.1节“使用测试协议跟踪插件” )。 默认情况下,禁用此选项。 除非启用该选项,否则启用此选项无效 WITH_CLIENT_PROTOCOL_TRACING 如果MySQL配置为启用了两个选项,则 libmysqlclient 客户端库是使用内置的测试协议跟踪插件构建的,并且所有标准MySQL客户端都会加载插件。 但是,即使启用了测试插件,默认情况下也没有效果。 使用环境变量提供对插件的控制; 请参见 第29.2.4.11.1节“使用测试协议跟踪插件”

    注意

    不要 启用 WITH_TEST_TRACE_PLUGIN ,如果你想使用自己的协议跟踪的插件,因为只有一个这样的插件可以在同一时间被加载并出现错误尝试加载第二个选项。 如果您已经在启用了测试协议跟踪插件的情况下构建了MySQL以查看它是如何工作的,那么必须在没有它的情况下重建MySQL,然后才能使用自己的插件。

    有关编写跟踪插件的信息,请参见 第29.2.4.11节“编写协议跟踪插件”

  • -DWITH_TSAN=bool

    是否为支持它的编译器启用ThreadSanitizer。 默认为关闭。

  • -DWITH_UBSAN=bool

    是否为支持它的编译器启用Undefined Behavior Sanitizer。 默认为关闭。

  • -DWITH_UNIT_TESTS={ON|OFF}

    如果启用,请使用单元测试编译MySQL。 除非未编译服务器,否则默认值为ON。

  • -DWITH_UNIXODBC=1

    为Connector / ODBC启用unixODBC支持。

  • -DWITH_VALGRIND=bool

    是否在Valgrind头文件中编译,这将Valgrind API暴露给MySQL代码。 默认是 OFF

    要生成Valgrind感知的调试版本, -DWITH_VALGRIND=1 通常会与之结合使用 -DWITH_DEBUG=1 请参阅 构建调试配置

  • -DWITH_ZLIB=zlib_type

    某些功能要求使用压缩库支持构建服务器,例如 COMPRESS() UNCOMPRESS() 函数,以及客户端/服务器协议的压缩。 WITH_ZLIB 指示的源 zlib 支持:

    • bundled :使用 zlib 与分发捆绑在一起 库。 这是默认值。

    • system :使用系统 zlib 库。 如果 WITH_ZLIB 设置为此值, 则不会构建 zlib_decompress 实用程序。 在这种情况下, 可以使用 系统 openssl zlib 命令。

编译器标志

  • -DCMAKE_C_FLAGS="flags

    C编译器的标志。

  • -DCMAKE_CXX_FLAGS="flags

    C ++编译器的标志。

  • -DWITH_DEFAULT_COMPILER_OPTIONS=bool

    是否使用来自的标志 cmake/build_configurations/compiler_options.cmake

    注意

    所有优化标志都经过MySQL构建团队的精心挑选和测试。 覆盖它们可能会导致意外结果,并且风险自负。

要指定自己的C和C ++编译器标志,对于不影响优化的标志,请使用 CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMake选项。

提供自己的编译器标志时,您可能也想要指定 CMAKE_BUILD_TYPE

例如,要在64位Linux计算机上创建32位版本,请执行以下操作:

mkdir bld
cd bld
cmake .. -DCMAKE_C_FLAGS = -m32 \
  -DCMAKE_CXX_FLAGS = -m32 \
  -DCMAKE_BUILD_TYPE = RelWithDebInfo

如果设置了影响optimization( )的 标志,则 必须设置 和/或 选项,其中 对应于 值。 要为默认构建类型( 指定不同的优化,请 设置 选项。 例如,要使用 和使用调试符号 在Linux上进行编译 ,请执行以下操作: -Onumber CMAKE_C_FLAGS_build_type CMAKE_CXX_FLAGS_build_type build_type CMAKE_BUILD_TYPE RelWithDebInfo CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_RELWITHDEBINFO -O3

cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO =“ -  O3 -g”\
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO =“ -  O3 -g”

用于编译NDB群集的CMake选项

在构建具有NDB Cluster支持的MySQL 8.0源时,可以使用以下选项。

  • -DMEMCACHED_HOME=dir_name

    使用安装在系统目录中的memcached(版本1.6或更高版本)执行构建 dir_name 构建中使用的此安装中的文件包括memcached二进制文件,头文件和库,以及 memcached_utilities 库和头文件 engine_testapp.h

    ndbmemcache 使用捆绑的memcached源( WITH_BUNDLED_MEMCACHED 选项) 构建时,必须取消设置此选项 ; 换句话说,默认情况下使用捆绑的源)。

    虽然在 从外部源 编译 memcached 时可以使用 其他 CMake 选项(例如SASL授权和提供 dtrace 支持) ,但是当前未对 与NDB Cluster捆绑 memcached 启用这些选项

  • -DWITH_BUNDLED_LIBEVENT={ON|OFF}

    libevent 在构建具有 ndbmemcached 支持 的NDB群集时, 请使用 NDB群集源中包含的内容 默认情况下启用。 OFF 导致系统 libevent 被使用。

  • -DWITH_BUNDLED_MEMCACHED={ON|OFF}

    构建NDB Cluster源树中包含的memcached源,然后在构建 ndbmemcache 引擎 时使用生成的memcached服务器 在这种情况下, make install memcached 二进制文件放在安装 bin 目录中,并将 ndbmemcache 引擎共享库文件 ndb_engine.so 放在安装 lib 目录中。

    默认情况下,此选项为ON。

  • -DWITH_CLASSPATH=path

    设置用于构建NDB Cluster Connector for Java的类路径。 默认为空。 如果 -DWITH_NDB_JAVA=OFF 使用, 则忽略此选项

  • -DWITH_ERROR_INSERT={ON|OFF}

    NDB 内核中 启用错误注入 仅用于测试; 不打算用于构建生产二进制文件。 默认是 OFF

  • -DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}

    这是别名 WITH_NDBCLUSTER

  • -DWITH_NDBCLUSTER={ON|OFF}

    构建和链接以支持 mysqld中 NDB NDBCLUSTER )存储引擎 默认是 ON

  • -DWITH_NDBMTD={ON|OFF}

    构建多线程数据节点可执行文件 ndbmtd 默认是 ON

  • -DWITH_NDB_BINLOG={ON|OFF}

    默认情况下,在 使用此选项构建 mysqld中 启用二进制日志记录 默认为ON。

  • -DWITH_NDB_DEBUG={ON|OFF}

    启用构建NDB Cluster二进制文件的调试版本。 默认为OFF。

  • -DWITH_NDB_JAVA={ON|OFF}

    支持使用Java支持构建NDB集群 ClusterJ

    默认情况下,此选项为ON。 如果您不希望编译具有Java支持的NDB Cluster,则必须通过指定 -DWITH_NDB_JAVA=OFF 运行 CMake 显式禁用它 否则,如果找不到Java,则构建配置将失败。

  • -DWITH_NDB_PORT=port

    导致 构建 的NDB群集管理服务器( ndb_mgmd port 默认 使用此 服务器 如果未设置此选项,则生成的管理服务器默认尝试使用端口1186。

  • -DWITH_NDB_TEST={ON|OFF}

    如果启用,请包含一组NDB API测试程序。 默认为OFF。

  • -DWITH_PLUGIN_NDBCLUSTER={ON|OFF}

    别名 WITH_NDBCLUSTER

2.9.5处理编译MySQL的问题

许多问题的解决方案涉及重新配置。 如果您进行了重新配置,请注意以下事项:

  • 如果 CMake 在之前运行之后运行,它可能会使用在上一次调用期间收集的信息。 此信息存储在 CMakeCache.txt CMake 启动时,它会查找该文件并在其存在的情况下读取其内容,前提是信息仍然正确。 重新配置时,该假设无效。

  • 每次运行 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 ++编译器,可以定义 环境变量 CC CXX 环境变量。 例如:

    shell> CC=gcc
    shell> CXX=g++
    shell>export CC CXX
    

    要指定自己的C和C ++编译器标志,请使用 CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMake选项。 请参阅 编译器标志

    要查看可能需要指定的标志,请 使用 选项 调用 mysql_config --cflags --cxxflags

  • 要查看在编译阶段执行的命令,在使用 CMake 配置MySQL之后,运行 make VERBOSE = 1 而不是 make

  • 如果编译失败,请检查该 MYSQL_MAINTAINER_MODE 选项 是否 已启用。 此模式会导致编译器警告成为错误,因此禁用它可能会使编译继续进行。

  • 如果编译失败并出现以下任何错误,则必须将 make 版本升级 为GNU make

    make:阅读器中的致命错误:Makefile,第18行:
    形成错误的宏分配
    

    要么:

    make:file`Makefile'第18行:必须是分隔符(:
    

    要么:

    pthread.h:没有这样的文件或目录
    

    众所周知,Solaris和FreeBSD都有麻烦的 make 程序。

    已知 GNU make 3.75可以工作。

  • sql_yacc.cc 文件是从 sql_yacc.yy 生成的 通常,构建过程不需要创建, sql_yacc.cc 因为MySQL带有预生成的副本。 但是,如果您确实需要重新创建它,则可能会遇到此错误:

    “sql_yacc.yy”,行xxx致命:默认行为导致潜在的......
    

    这表明您的 yacc 版本存在 缺陷。 您可能需要安装最新版本的 bison yacc 的GNU版本 )并使用它。

    早于1.75 野牛 版本 可能会报告此错误:

    sql_yacc.yy:#####:致命错误:超出最大表大小(32767)
    

    实际上并未超出最大表大小; 该错误是由旧版本的 野牛中 的错误引起的

有关获取或更新工具的信息,请参见 第2.9节“从源安装MySQL”中 的系统要求

2.9.6 MySQL配置和第三方工具

需要从MySQL源确定MySQL版本的第三方工具可以读取 VERSION 顶级源目录中的文件。 该文件分别列出了版本的各个部分。 例如,如果版本是MySQL 8.0.4-rc,则文件如下所示:

MYSQL_VERSION_MAJOR = 8
MYSQL_VERSION_MINOR = 0
MYSQL_VERSION_PATCH = 4
MYSQL_VERSION_EXTRA = -RC

如果源不是通用可用性(GA)版本,则该 MYSQL_VERSION_EXTRA 值将 为非 空。 例如,该值对应于Release Candidate。

要从版本组件构造五位数字,请使用以下公式:

MYSQL_VERSION_MAJOR * 10000 + MYSQL_VERSION_MINOR * 100 + MYSQL_VERSION_PATCH

2.9.7生成MySQL Doxygen文档内容

MySQL源代码包含使用Doxygen编写的内部文档。 生成的Doxygen内容可从 https://dev.mysql.com/doc/index-other.html获得 也可以使用以下过程从MySQL源代码分发本地生成此内容:

  1. 安装 doxygen 1.8.11或更高版本。 分发可在此处获得:

    http://www.stack.nl/~dimitri/doxygen/download.html
    

    安装 doxygen后 ,验证版本号:

    外壳> doxygen --version
    1.8.11
    
  2. 安装PlantUML。 分发可在此处获得:

    http://plantuml.com/download.html
    

    在Windows上安装PlantUML(在Windows 10上测试)时,必须至少以管理员身份运行一次,以便创建注册表项。 打开管理员控制台并运行以下命令:

    java -jar path-to-plantuml.jar
    

    该命令应打开GUI窗口并在控制台上不返回任何错误。

  3. 安装Graphviz dot 命令。 分发可在此处获得:

    http://www.graphviz.org/
    

    安装Graphviz后,验证 dot 可用性。 例如:

    外壳> which dot
    在/ usr / bin中/点
    外壳> dot -V
    dot  -  graphviz version 2.28.0(20130928.0220)
    
  4. PLANTUML_JAR_PATH 环境 设置为 PlantUML的安装位置。 例如:

    export PLANTUML_JAR_PATH =path-to-plantuml.jar
    
  5. 要调用 doxygen ,请将位置更改为MySQL源代码分发的顶级目录并执行以下命令:

    mkdir -p generated / doxygen
    doxygen的
    

    检查错误日志。 doxyerror.log 位于顶级目录 文件中。 假设构建成功执行,请使用浏览器查看生成的输出。 例如:

    firefox生成/ doxygen / html / index.html
    

    您可以使用其他浏览器,甚至为页面添加书签。

2.10安装后设置和测试

本节讨论安装MySQL后应执行的任务:

  • 如有必要,初始化数据目录并创建MySQL授权表。 对于某些MySQL安装方法,可以自动为您完成数据目录初始化:

    • MySQL安装程序执行的Windows安装操作。

    • 使用Oracle的服务器RPM或Debian发行版在Linux上安装。

    • 在许多平台上使用本机打包系统进行安装,包括Debian Linux,Ubuntu Linux,Gentoo Linux等。

    • 使用DMG分发在macOS上安装。

    对于其他平台和安装类型,您必须手动初始化数据目录。 这些包括在Unix和类Unix系统上从通用二进制和源代码发行版安装,以及从Windows上的ZIP Archive包安装。 有关说明,请参见 第2.10.1节“初始化数据目录”

  • 启动服务器并确保可以访问它。 有关说明,请参见 第2.10.2节“启动服务器” 第2.10.3节“测试服务器”

  • root 如果在数据目录初始化期间尚未完成 密码,则 在授权表中 为初始 帐户 分配密码 密码可防止未经授权访问MySQL服务器。 有关说明,请参见 第2.10.4节“保护初始MySQL帐户”

  • (可选)安排服务器在系统启动和停止时自动启动和停止。 有关说明,请参见 第2.10.5节“自动启动和停止MySQL”

  • (可选)填充时区表以启用对指定时区的识别。 有关说明,请参见 第5.1.13节“MySQL服务器时区支持”

当您准备创建其他用户帐户时,可以在 第6.2节“访问控制和帐户管理”中 找到有关MySQL访问控制系统和帐户管理的信息

2.10.1初始化数据目录

安装MySQL后,必须初始化数据目录,包括 mysql 系统模式中 的表

  • 对于某些MySQL安装方法,数据目录初始化是自动的,如 第2.10节“安装后设置和测试”中所述

  • 对于其他安装方法,您必须手动初始化数据目录。 这些包括在Unix和类Unix系统上从通用二进制文件和源代码发行版安装,以及从Windows上的ZIP Archive包安装。

本节介绍如何为MySQL安装方法手动初始化数据目录,其中数据目录初始化不是自动的。 对于某些建议的命令,可以测试服务器是否可访问且工作正常,请参见 第2.10.3节“测试服务器”

注意

在MySQL 8.0中,默认的身份验证插件已更改 mysql_native_password caching_sha2_password ,并且 'root'@'localhost' 管理帐户 caching_sha2_password 默认 使用 如果您希望该 root 帐户使用以前的默认身份验证插件( mysql_native_password ),请参阅 caching_sha2_password和根管理帐户

数据目录初始化概述

在此处显示的示例中,服务器旨在在 mysql 登录帐户 的用户标识下运行 如果帐户不存在,请 创建 帐户(请参阅 创建mysql用户和组 ),或者替换您计划用于运行服务器的其他现有登录帐户的名称。

  1. 将位置更改为MySQL安装的顶级目录,这通常是 /usr/local/mysql (根据需要调整系统的路径名):

    cd / usr / local / mysql
    

    在目录中,您将找到多个文件和子目录,包括 bin 包含服务器 子目录以及客户端和实用程序。

  2. secure_file_priv 系统变量限制进口和出口业务到指定目录。 创建一个目录,其位置可以指定为该变量的值:

    mkdir mysql-files
    

    将目录用户和组所有权授予 mysql 用户和 mysql 组,并相应地设置目录权限:

    chown mysql:mysql mysql-files
    chmod 750 mysql-files
    
  3. 使用服务器初始化数据目录,包括 mysql 包含初始MySQL授权表 模式,该表确定如何允许用户连接到服务器。 例如:

    bin / mysqld --initialize --user = mysql
    

    有关该命令的重要信息,尤其是有关可能使用的命令选项的信息,请参阅 数据目录初始化过程 有关服务器执行初始化的详细信息,请参阅 数据目录初始化期间的服务器操作

    通常,只有在首次安装MySQL后才需要进行数据目录初始化。 (对于现有安装的升级,请执行升级过程;请参见 第2.11节“升级MySQL” 。)但是,初始化数据目录的命令不会覆盖任何现有的 mysql 模式表,因此在任何情况下都可以安全运行。

  4. 如果要部署具有安全连接自动支持的服务器,请使用 mysql_ssl_rsa_setup 实用程序创建默认SSL和RSA文件:

    斌/ mysql_ssl_rsa_setup
    

    有关更多信息,请参见 第4.4.3节“ mysql_ssl_rsa_setup - 创建SSL / RSA文件”

  5. 如果没有任何选项文件,服务器将以其默认设置启动。 (请参见 第5.1.2节“服务器配置默认值” 。)要显式指定MySQL服务器在启动时应使用的选项,请将它们放在选项文件中,例如 /etc/my.cnf /etc/mysql/my.cnf (请参见 第4.2.2.2节“使用选项文件” 。)例如,您可以使用选项文件来设置 secure_file_priv 系统变量。

  6. 要在系统启动时安排MySQL无需手动干预,请参见 第2.10.5节“自动启动和停止MySQL”

  7. 数据目录初始化在 mysql 架构中 创建时区表, 但不填充它们。 为此,请使用 第5.1.13节“MySQL服务器时区支持”中的说明

数据目录初始化过程

将位置更改为MySQL安装的顶级目录,这通常是 /usr/local/mysql (根据需要调整系统的路径名):

cd / usr / local / mysql

要初始化数据目录,请 使用 选项 调用 mysqld ,具体取决于您是希望服务器为该 帐户 生成随机初始密码 ,还是创建没有密码的帐户: --initialize --initialize-insecure 'root'@'localhost'

  • 使用 --initialize 默认安全 安装(即包括生成随机初始的 root 密码)。 在这种情况下,密码标记为已过期,您需要选择一个新密码。

  • 使用时 --initialize-insecure ,不会 root 生成密码。 这是不安全的; 假设您在将服务器投入生产使用之前及时为帐户分配密码。

有关分配新 'root'@'localhost' 密码的说明,请参阅 初始化后根密码分配

注意

服务器将任何消息(包括任何初始密码)写入其标准错误输出。 这可能会重定向到错误日志,因此,如果您没有在屏幕上看到消息,请查看此处。 有关错误日志的信息,包括错误日志的位置,请参见 第5.4.2节“错误日志”

在Windows上,使用该 --console 选项将消息定向到控制台。

在Unix和类Unix系统上,重要的是数据库目录和文件归 mysql 登录帐户 所有, 以便服务器在以后运行时对它们具有读写权限。 要确保这一点,请 从系统 帐户 启动 mysqld root 并包含 --user 如下所示 选项:

bin / mysqld --initialize --user = mysql
bin / mysqld --initialize-insecure --user = mysql

或者, 在登录时 执行 mysqld mysql ,在这种情况下,您可以省略 --user 命令中 选项。

在Windows上,使用以下命令之一:

bin \ mysqld --initialize --console
bin \ mysqld --initialize-insecure --console
注意

如果缺少必需的系统库,数据目录初始化可能会失败。 例如,您可能会看到如下错误:

bin / mysqld:加载共享库时出错:
libnuma.so.1:无法打开共享对象文件:
没有相应的文件和目录

如果发生这种情况,您必须手动或使用系统的软件包管理器安装缺少的库。 然后重试数据目录初始化命令。

这可能需要指定其他选项,如 --basedir --datadir 如果 mysqld的 不能识别的安装目录或数据目录中的正确位置。 例如(在一行中输入命令):

bin / mysqld --initialize --user = mysql
  --basedir = /选择/ MySQL的/ MySQL的
  --datadir = /选择/ MySQL的/ MySQL的/数据

或者,将相关选项设置放在选项文件中,并将该文件的名称传递给 mysqld 对于Unix和类Unix系统,假设选项文件名是 /opt/mysql/mysql/etc/my.cnf 将这些行放在文件中:

的[mysqld]
BASEDIR = /选择/ MySQL的/ MySQL的
DATADIR = /选择/ MySQL的/ MySQL的/数据

然后 按如下方式 调用 mysqld --defaults-file 首先 使用 选项 在单行上输入命令 ):

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 首先 使用 选项 在单行上输入命令 ):

bin \ mysqld --defaults-file = C:\ my.ini
   --initialize --console

数据目录初始化期间的服务器操作

当使用 --initialize or --initialize-insecure 选项 调用时 mysqld 在数据目录初始化序列期间执行以下操作:

  1. 服务器检查数据目录是否存在,如下所示:

    • 如果不存在数据目录,则服务器会创建它。

    • 如果数据目录存在但不为空(即,它包含文件或子目录),则在生成错误消息后服务器退出:

      [错误]  - 指定了初始化但数据目录存在。中止。
      

      在这种情况下,请删除或重命名数据目录,然后重试。

      如果每个条目的名称都以句点( . 开头,则允许现有数据目录为非空

  2. 在数据目录中,服务器创建 mysql 系统模式及其表,包括数据字典表,授权表,时区表和服务器端帮助表。 请参见 第5.3节“mysql系统架构”

  3. 服务器初始化 管理 所需 系统表空间 和相关数据结构 InnoDB

    注意

    mysqld 设置 InnoDB 系统表空间之后 ,对表空间特性的某些更改需要设置一个全新的 实例 限定更改包括系统表空间中第一个文件的文件名和撤消日志的数量。 如果您不想使用默认值,请确保 运行 mysqld 之前 在MySQL 配置文件中 设置了 配置参数 innodb_data_file_path innodb_log_file_size 配置参数 还要确保根据需要指定影响 InnoDB 文件 创建和位置的其他参数 ,例如 innodb_data_home_dir innodb_log_group_home_dir

    如果这些选项在您的配置文件中,但该文件不在MySQL默认读取的位置,请 --defaults-extra-file 在运行 mysqld 使用该 选项 指定文件位置

  4. 服务器创建 'root'@'localhost' 超级用户帐户和其他保留帐户(请参见 第6.2.9节“预留帐户” )。 某些保留帐户已被锁定且客户端无法使用,但 'root'@'localhost' 仅供管理使用,您应为其分配密码。

    'root'@'localhost' 帐户 密码相关的服务器操作 取决于您调用它的方式:

    • --initialize 但没有 --initialize-insecure ,服务器生成随机密码,将其标记为已过期,并写入显示密码的消息:

      [警告]为root @ localhost生成临时密码:
      ITAG * AfrH5ej
      
    • 使用 --initialize-insecure ,(有或没有 --initialize 因为 --initialize-insecure 暗示 --initialize ),服务器不生成密码或将其标记为已过期,并写入警告消息:

      [警告]使用空密码创建root @ localhost!
      考虑关闭--initialize-insecure选项。
      

    有关分配新 'root'@'localhost' 密码的说明,请参阅 初始化后根密码分配

  5. 服务器填充用于该 HELP 语句 的服务器端帮助表 (请参见 第13.8.3节“帮助语法” )。 服务器不会填充时区表。 要手动执行此操作,请参见 第5.1.13节“MySQL服务器时区支持”

  6. 如果 --init-file 给出了命名SQL语句文件 选项,则服务器执行文件中的语句。 此选项使您可以执行自定义引导序列。

    当服务器在引导模式下运行时,某些功能不可用,这限制了文件中允许的语句。 这些包括与帐户管理(例如 CREATE USER GRANT ),复制和全局事务标识符 相关的语句

  7. 服务器退出。

初始化后根密码分配

通过使用 --initialize --initialize-insecure 启动服务器 初始化数据目录后 ,正常启动服务器(即,没有这些选项)并为该 'root'@'localhost' 帐户 分配 新密码:

  1. 启动服务器。 有关说明,请参见 第2.10.2节“启动服务器”

  2. 连接到服务器:

    • 如果您使用 --initialize 但未 --initialize-insecure 初始化数据目录,请按以下方式连接到服务器 root

      mysql -u root -p
      

      然后,在密码提示符下,输入服务器在初始化序列期间生成的随机密码:

      输入密码: (enter the random root password here)
      

      如果您不知道此密码,请查看服务器错误日志。

    • 如果您曾经 --initialize-insecure 初始化数据目录,请在 root 没有密码的情况下 连接到服务器

      mysql -u root --skip-password
      
  3. 连接后,使用 ALTER USER 语句分配新 root 密码:

    ALTER USER'root'@'localhost'ENFENTIFIED BY' root-password';
    

另请参见 第2.10.4节“保护初始MySQL帐户”

注意

尝试连接到主机 127.0.0.1 通常会解析为该 localhost 帐户。 但是,如果使用该 --skip-name-resolve 选项 运行服务器,则会失败 如果您打算这样做,请确保存在可以接受连接的帐户。 例如,要能够 root 使用 --host=127.0.0.1 连接 --host=::1 ,请创建以下帐户:

创建用户'root'@'127.0.0.1'由'确认'root-password ';
创建用户'root'@':: 1'IDENTIFIED BY' root-password';

可以将这些语句放在一个文件中,以便 在数据目录初始化期间的服务器操作中 --init-file 讨论 选项 执行

2.10.2启动服务器

本节介绍如何在Unix和类Unix系统上启动服务器。 (对于Windows,请参见 第2.3.5.5节“首次启动服务器” 。)对于可用于测试服务器是否可访问且工作正常的某些建议命令,请参见 第2.10.3节“测试服务器” “

如果您的安装包含 mysqld_safe, 请启动MySQL服务器

外壳> bin/mysqld_safe --user=mysql &
注意

对于使用RPM软件包安装MySQL的Linux系统,使用systemd而不是 mysqld_safe 管理服务器启动和关闭 ,并且 未安装 mysqld_safe 请参见 第2.5.9节“使用systemd管理MySQL服务器”

如果您的安装包含systemd支持,请像这样启动服务器:

外壳> systemctl start mysqld

如果它不同,则替换相应的服务名称 mysqld (例如, mysql 在SLES系统上)。

使用非特权(非 root )登录帐户 运行MySQL服务器非常重要 要确保这一点,请运行 mysqld_safe as root 并包含 --user 如图所示 选项。 否则,您应该在登录时执行该程序 mysql ,在这种情况下,您可以省略 --user 该命令中 选项。

有关以非特权用户身份运行MySQL的更多说明,请参见 第6.1.5节“如何以普通用户身份运行MySQL”

如果命令立即失败并打印 mysqld ended ,请在错误日志中查找信息(默认情况下是 host_name.err 数据目录中 文件)。

如果服务器无法访问数据目录,它将启动或读取 mysql 模式中 的授权表 ,它会将消息写入其错误日志。 如果您在继续执行此步骤之前通过初始化数据目录而忽略了创建授权表,或者运行了在没有该 --user 选项的 情况下初始化数据目录的命令,则可能会出现此类问题 删除 data 目录并使用该 --user 选项 运行命令

如果启动服务器时遇到其他问题,请参见 第2.10.2.1节“解决启动MySQL服务器时出现的问题” 有关 mysqld_safe的 更多信息 ,请参见 第4.3.2节“ mysqld_safe - MySQL服务器启动脚本” 有关systemd支持的更多信息,请参见 第2.5.9节“使用systemd管理MySQL服务器”

2.10.2.1解决启动MySQL服务器的问题

本节提供有关启动服务器问题的故障排除建议。 有关Windows系统的其他建议,请参见 第2.3.6节“Microsoft Windows MySQL服务器安装疑难解答”

如果您在启动服务器时遇到问题,可以尝试以下方法:

  • 检查 错误日志 以查看服务器无法启动的原因。 日志文件位于 数据目录中 (通常 C:\Program Files\MySQL\MySQL Server 8.0\data 在Windows上, /usr/local/mysql/data 用于Unix / Linux二进制分发,以及 /usr/local/var 用于Unix / Linux源代码分发)。 看看数据目录与形式的文件名的文件 host_name.err host_name.log ,其中 host_name 是您的服务器的主机名。 然后检查这些文件的最后几行。 使用 tail 显示它们:

    shell> 
    shell>tail host_name.errtail host_name.log
    
  • 指定您正在使用的存储引擎所需的任何特殊选项。 您可以创建 my.cnf 文件并为计划使用的引擎指定启动选项。 如果要使用支持事务表( InnoDB NDB )的 存储引擎,请 确保在启动服务器之前按照所需的方式配置它们。 如果您使用的是 InnoDB 表,请参见 第15.8节“InnoDB配置” 了解指南和 第15.13节“InnoDB启动选项和系统变量” 的选项语法。

    虽然存储引擎使用您省略的选项的默认值,但Oracle建议您查看可用选项,并为默认值不适合您的安装的任何选项指定显式值。

  • 确保服务器知道在哪里可以找到 数据目录 mysqld的 服务器使用此目录作为其当前目录。 这是它期望找到数据库以及它希望写入日志文件的位置。 服务器还将pid(进程ID)文件写入数据目录。

    编译服务器时,默认数据目录位置是硬编码的。 要确定默认路径设置是什么,请 使用 选项 调用 mysqld 如果数据目录位于系统上的其他位置 ,请在命令行或选项文件中使用 mysqld mysqld_safe 选项 指定该位置 否则,服务器将无法正常工作。 作为该 选项 的替代 ,您可以指定 mysqld --verbose --help --datadir --datadir 安装MySQL的基本目录的位置 --basedir mysqld data 那里 查找 目录。

    要检查指定路径选项的效果,请 使用这些选项后跟 选项 调用 mysqld 例如,如果将位置更改 为安装 mysqld 的目录, 然后运行以下命令,则会显示使用以下基本目录启动服务器的效果 --verbose --help /usr/local

    外壳> ./mysqld --basedir=/usr/local --verbose --help
    

    您可以指定其他选项,例如 --datadir 为好,但 --verbose --help 一定是最后的选择。

    确定所需的路径设置后,不使用 --verbose 启动服务器 --help

    如果 mysqld 当前正在运行,您可以通过执行以下命令找出它正在使用的路径设置:

    外壳> mysqladmin variables
    

    要么:

    外壳> mysqladmin -h host_name variables
    

    host_name 是MySQL服务器主机的名称。

  • 确保服务器可以访问 数据目录 数据目录及其内容的所有权和权限必须允许服务器读取和修改它们。

    如果 在启动 mysqld 获得 Errcode 13 (意味着 Permission denied ,这意味着数据目录或其内容的权限不允许服务器访问。 在这种情况下,您可以更改所涉及文件和目录的权限,以便服务器有权使用它们。 您也可以启动服务器 ,但这会引发安全问题,应该避免。 root

    将位置更改为数据目录并检查数据目录及其内容的所有权,以确保服务器具有访问权限。 例如,如果是数据目录 /usr/local/mysql/var ,请使用以下命令:

    外壳> ls -la /usr/local/mysql/var
    

    如果数据目录或其文件或子目录不归您用于运行服务器的登录帐户所有,请将其所有权更改为该帐户。 如果该帐户已命名 mysql ,请使用以下命令:

    shell> chown -R mysql /usr/local/mysql/var
    shell>chgrp -R mysql /usr/local/mysql/var
    

    即使拥有正确的所有权,如果您的系统上运行其他安全软件来管理对文件系统各个部分的应用程序访问,MySQL也可能无法启动。 在这种情况下,重新配置该软件以使 mysqld 能够访问它在正常操作期间使用的目录。

  • 验证服务器要使用的网络接口是否可用。

    如果出现以下任一错误,则意味着某些其他程序(可能是另一个 mysqld 服务器)正在使用 mysqld 尝试 使用的TCP / IP端口或Unix套接字文件

    无法启动服务器:绑定TCP / IP端口:已在使用的地址
    无法启动服务器:在unix socket上绑定...
    

    使用 ps 确定是否有另一个 mysqld 服务器正在运行。 如果是这样,请在 再次 启动 mysqld 之前关闭服务器 (如果另一台服务器正在运行,并且您确实想运行多台服务器,则可以在 第5.8节“在一台计算机上运行多个MySQL实例”中 找到有关如何执行此操作的信息 。)

    如果没有其他服务器正在运行,请执行该命令 (默认的MySQL端口号是3306.)然后按Enter键几次。 如果您没有收到类似的错误消息 ,则其他一些程序正在使用 mysqld 尝试 使用的TCP / IP端口 跟踪这是什么程序并禁用它,或告诉 mysqld 使用该 选项 监听不同的端口 在这种情况下,请在使用TCP / IP连接到服务器时为客户端程序指定相同的非默认端口号。 telnet your_host_name tcp_ip_port_number telnet: Unable to connect to remote host: Connection refused --port

    端口可能无法访问的另一个原因是您运行的防火墙阻止了与它的连接。 如果是这样,请修改防火墙设置以允许访问端口。

    如果服务器启动但您无法连接到它,请确保您有一个条目 /etc/hosts ,如下所示:

    127.0.0.1 localhost
    
  • 如果您无法 启动 mysqld ,请尝试使用该 --debug 选项 创建跟踪文件以查找问题 请参见 第29.5.4节“DBUG包”

2.10.3测试服务器

在初始化数据目录并启动服务器之后,执行一些简单的测试以确保它能够令人满意地工作。 本节假定您当前的位置是MySQL安装目录,并且它有一个 bin 包含此处使用的MySQL程序 子目录。 如果不是这样,请相应地调整命令路径名。

或者,将 bin 目录 添加 PATH 环境变量设置中。 这使您的shell(命令解释器)能够正确地找到MySQL程序,这样您就可以通过只输入其名称而不是其路径名来运行程序。 请参见 第4.2.6节“设置环境变量”

使用 mysqladmin 验证服务器是否正在运行。 以下命令提供简单的测试,以检查服务器是否已启动并响应连接:

shell> bin/mysqladmin version
shell>bin/mysqladmin variables

如果无法连接到服务器,请指定 -u root 要连接 选项 root 如果您已为该 root 帐户 分配了密码,则 还需要 -p 在命令行中 指定 并在出现提示时输入密码。 例如:

shell> bin/mysqladmin -u root -p version
输入密码:(enter root password here)

mysqladmin版本 的输出 略有不同,具体取决于您的平台和MySQL版本,但应与此处显示的类似:

外壳> bin/mysqladmin version
mysqladmin Ver 14.12 Distrib 8.0.18,适用于i686上的pc-linux-gnu
...

服务器版本8.0.18
协议版本10
通过UNIX套接字连接Localhost
UNIX套接字/var/lib/mysql/mysql.sock
正常运行时间:14天5小时5分21秒

主题:1个问题:366慢查询:0
打开:0齐表:1打开表:19
每秒查询平均值:0.000

要查看使用 mysqladmin 可以执行的其他操作,请 使用该 --help 选项 调用它

验证您是否可以关闭服务器( -p 如果 root 帐户已有密码,请 包含一个 选项 ):

外壳> bin/mysqladmin -u root shutdown

确认您可以再次启动服务器。 通过使用 mysqld_safe 直接 调用 mysqld 来完成此操作。 例如:

外壳> bin/mysqld_safe --user=mysql &

如果 mysqld_safe 失败,请参见 第2.10.2.1节“解决启动MySQL服务器的问题”

运行一些简单的测试以验证您是否可以从服务器检索信息。 输出应类似于此处显示的输出。

使用 mysqlshow 查看存在哪些数据库:

外壳> bin/mysqlshow
+ -------------------- +
| 数据库|
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| sys |
+ -------------------- +

已安装数据库的列表可能有所不同,但始终至少包含 mysql information_schema

如果指定数据库名称, mysqlshow将 显示 数据库 中的表列表:

外壳> bin/mysqlshow mysql
数据库:mysql
+ --------------------------- +
| 表|
+ --------------------------- +
| columns_priv |
| 组件|
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| password_history |
| 插件|
| procs_priv |
| proxies_priv |
| role_edges |
| server_cost |
| 服务器|
| 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 |
| 用户|
+ --------------------------- +

使用 mysql 程序从 mysql 架构中 的表中选择信息

外壳> bin/mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql
+ ------ + ----------- + ----------------------- +
| 用户| 主持人| 插件|
+ ------ + ----------- + ----------------------- +
| 根| localhost | caching_sha2_password |
+ ------ + ----------- + ----------------------- +

此时,您的服务器正在运行,您可以访问它。 如果尚未为初始帐户指定密码,请加强安全性,请按照 第2.10.4节“保护初始MySQL帐户”中的说明进行操作

有关 mysql mysqladmin mysqlshow的 更多信息 ,请参见 第4.5.1节“ mysql - MySQL命令行客户端” 第4.5.2节“ mysqladmin - 管理MySQL服务器的客户端” 第4.5.7节, “ mysqlshow - 显示数据库,表和列信息”

2.10.4保护初始MySQL帐户

MySQL安装过程涉及初始化数据目录,包括 mysql 定义MySQL帐户 系统模式中 的授权表 有关详细信息,请参见 第2.10.1节“初始化数据目录”

本节介绍如何为 root 在MySQL安装过程中创建 的初始 帐户 分配密码 (如果尚未这样做)。

注意

执行本节所述过程的替代方法:

在这些情况下,密码可能已经分配给初始帐户:

  • 在Windows上,使用MySQL Installer执行的安装为您提供了分配密码的选项。

  • 使用macOS安装程序进行安装会生成一个初始随机密码,安装程序会在对话框中向用户显示该密码。

  • 使用RPM软件包进行安装会生成一个初始随机密码,该密码将写入服务器错误日志。

  • 使用Debian软件包的安装为您提供了分配密码的选项。

  • 对于使用 mysqld --initialize 手动执行的数据目录初始化 mysqld 生成初始随机密码,将其标记为已过期,并将其写入服务器错误日志。 请参见 第2.10.1节“初始化数据目录”

mysql.user 授权表定义了初始MySQL用户账户和访问权限。 MySQL的安装只创建一个 'root'@'localhost' 拥有所有权限并可以执行任何操作 超级用户帐户。 如果该 root 帐户的密码为空,则您的MySQL安装不受保护:任何人都可以在 root 没有密码的情况下 连接到MySQL服务器 并获得所有权限。

'root'@'localhost' 帐户在 mysql.proxies_priv 表中 还有一行 ,用于为所有用户和所有主机 授予 PROXY 权限 ''@'' 这样可以 root 设置代理用户,以及委托其他帐户设置代理用户的权限。 请参见 第6.2.18节“代理用户”

要为初始MySQL root 帐户 分配密码 ,请使用以下过程。 root-password 在示例中 替换 您要使用的密码。

如果服务器未运行,请启动它。 有关说明,请参见 第2.10.2节“启动服务器”

初始 root 帐户可能有也可能没有密码。 选择以下适用的程序:

  • 如果 root 帐户存在初始随机密码已过期,请 root 使用该密码 连接到服务器 ,然后选择新密码。 如果数据目录是使用 mysqld --initialize 初始化的 ,则可以手动或使用安装程序在安装操作期间无法指定密码。 由于密码存在,您必须使用它来连接到服务器。 但由于密码已过期,除非您选择新密码,否则不能将该帐户用于选择新密码之外的任何其他目的。

    1. 如果您不知道初始随机密码,请查看服务器错误日志。

    2. root 使用密码 连接到服务器

      shell> mysql -u root -p
      输入密码:(enter the random root password here)
      
    3. 选择一个新密码来替换随机密码:

      MySQL的> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
      
  • 如果 root 帐户存在但没有密码,请 root 使用无密码 连接到服务器 ,然后分配密码。 如果使用 mysqld --initialize-insecure 初始化数据目录,则会出现这种情况

    1. root 使用无密码 连接到服务器

      外壳> mysql -u root --skip-password
      
    2. 分配密码:

      MySQL的> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
      

root 帐户 分配 密码后,只要您使用该帐户连接到服务器,就必须提供该密码。 例如,要使用 mysql 客户端 连接到服务器 ,请使用以下命令:

shell> mysql -u root -p
输入密码:(enter root password here)

要使用 mysqladmin 关闭服务器 ,请使用以下命令:

shell> mysqladmin -u root -p shutdown
输入密码:(enter root password here)
注意

有关设置密码的其他信息,请参见 第6.2.14节“分配帐户密码” 如果 root 在设置密码后 忘记 密码,请参见 第B.4.3.2节“如何重置root密码”

要设置其他帐户,请参见 第6.2.8节“添加帐户,分配权限和删除帐户”

2.10.5自动启动和停止MySQL

本节讨论启动和停止MySQL服务器的方法。

通常,您 可以通过以下方式之一 启动 mysqld 服务器:

systemd, mysqld_safe mysql.server 脚本,Solaris SMF和macOS启动项(或MySQL首选项窗格)可用于手动启动服务器,或在系统启动时自动启动。 systemd, mysql.server 和Startup Item也可用于停止服务器。

下表显示了服务器和启动脚本从选项文件中读取的选项组。

表2.14 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.2.2节“使用选项文件”

2.11升级MySQL

本节介绍升级MySQL安装的步骤。

升级是一个常见的过程,因为您在同一MySQL版本系列中获取错误修复或主要MySQL版本之间的重要功能。 您首先在某些测试系统上执行此过程,以确保一切顺利,然后在生产系统上。

注意

在下面的讨论中,必须使用具有管理权限的MySQL帐户运行的MySQL 命令 包括 在命令行上指定MySQL 用户。 需要密码的命令 还包括一个 选项。 因为 后面没有选项值,所以这些命令会提示输入密码。 出现提示时键入密码,然后按Enter键。 -u root root root -p -p

可以使用 mysql 命令行客户端 执行SQL语句 (连接 root 以确保您具有必要的权限)。

2.11.1开始之前

升级前请查看本节中的信息。 执行任何建议的操作。

2.11.2升级路径

  • 支持从MySQL 5.7升级到8.0。 但是,仅在通用可用性(GA)版本之间支持升级。 对于MySQL 8.0,您需要从MySQL 5.7 GA版本(5.7.9或更高版本)升级。 不支持从MySQL的非GA版本升级。

  • 在升级到下一版本之前,建议升级到最新版本。 例如,在升级到MySQL 8.0之前升级到最新的MySQL 5.7版本。

  • 不支持跳过版本的升级。 例如,不支持直接从MySQL 5.6升级到8.0。

  • 一旦发布系列达到一般可用性(GA)状态,就支持在发行系列(从一个GA版本到另一个GA版本)内进行升级。 例如,从MySQL 8.0升级。 x 到8.0。 y 得到支持。 (不支持升级涉及开发状态非GA版本。)也支持跳过发行版。 例如,从MySQL 8.0升级。 x 到8.0。 z 得到支持。 MySQL 8.0.11是MySQL 8.0发行版系列中的第一个GA状态版本。

2.11.3 MySQL升级过程升级的内容

安装新版本的MySQL可能需要升级现有安装的这些部分:

  • mysql 系统架构,其中包含存储由它运行MySQL服务器所需的信息表(见 第5.3节,“MySQL的系统架构” )。 mysql 架构表分为两大类:

    • 数据字典表,用于存储数据库对象元数据。

    • 系统表(即剩余的非数据字典表),用于其他操作目的。

  • 其他模式,其中一些是内置的,可能被 服务器 视为 拥有 ,而其他模式则不是:

    • 性能架构 INFORMATION_SCHEMA sys 架构。

    • 用户架构。

两个不同的版本号与可能需要升级的安装部分相关联:

  • 数据字典版本。 这适用于数据字典表。

  • 服务器版本,也称为MySQL版本。 这适用于其他模式中的系统表和对象。

在这两种情况下,适用于现有MySQL安装的实际版本都存储在数据字典中,并且当前的预期版本将编译到新版本的MySQL中。 当实际版本低于当前预期版本时,与该版本关联的安装的那些部分必须升级到当前版本。 如果两个版本都指示需要升级,则必须首先进行数据字典升级。

作为刚刚提到的两个不同版本的反映,升级分两步进行:

  • 第1步:数据字典升级。

    此步骤升级:

    • mysql 架构中 的数据字典表 如果实际数据字典版本低于当前预期版本,则服务器创建具有更新定义的数据字典表,将持久化元数据复制到新表,原子地用新表替换旧表,并重新初始化数据字典。

    • 性能模式和 INFORMATION_SCHEMA

  • 第2步:服务器升级。

    此步骤包括所有其他升级任务。 如果现有MySQL安装的服务器版本低于新安装的MySQL版本的服务器版本,则必须升级其他所有内容:

    • 模式中的系统表 mysql (剩余的非数据字典表)。

    • sys 架构。

    • 用户架构。

数据字典升级(步骤1)是服务器的责任,服务器在启动时根据需要执行此任务,除非使用阻止它执行此操作的选项进行调用。 该选项是 --upgrade=NONE MySQL 8.0.16 --no-dd-upgrade 之前的MySQL 8.0.16。

如果数据字典已过期但服务器无法升级,则服务器将无法运行并退出并显示错误。 例如:

[错误] [MY-013381] [服务器]服务器因升级而关闭
必需的,但命令行选项'--upgrade = NONE'禁止。
[错误] [MY-010334] [服务器]无法初始化DD存储引擎
[错误] [MY-010020] [服务器]数据字典初始化失败。

MySQL 8.0.16中对步骤2的责任进行了一些更改:

  • 在MySQL 8.0.16之前, mysql_upgrade会 升级 INFORMATION_SCHEMA 第2步中描述 的Performance Schema,the 和对象 。在启动服务器之后 ,DBA 应该 手动 调用 mysql_upgrade

  • 从MySQL 8.0.16开始,服务器执行以前由 mysql_upgrade 处理的所有任务 虽然升级仍然是两步操作,但服务器同时执行它们,从而使过程更简单。

根据要升级的MySQL版本, 就地升级 逻辑升级中的 说明指示服务器是执行所有升级任务还是 在服务器启动后 还必须调用 mysql_upgrade

注意

由于服务器升级了性能模式, INFORMATION_SCHEMA 以及从MySQL 8.0.16开始的步骤2中描述的对象, 因此 不需要 mysql_upgrade, 并且从该版本开始不推荐使用 mysql_upgrade ,并且将在以后的MySQL版本中删除。

在步骤2中发生的事情的大多数方面在MySQL 8.0.16之前和之后是相同的,尽管可能需要不同的命令选项来实现特定效果。

从MySQL 8.0.16开始, --upgrade 服务器选项控制服务器在启动时是否以及如何执行自动升级:

  • 没有选项或者没有选项 --upgrade=AUTO ,服务器会升级它确定为过时的任何内容(步骤1和2)。

  • --upgrade=NONE ,服务器什么都不升级(跳过步骤1和2),但如果必须升级数据字典,也会退出并出错。 使用过时的数据字典运行服务器是不可能的; 服务器坚持要么升级要么退出。

  • 使用 --upgrade=MINIMAL ,服务器升级数据字典,性能模式,并在 INFORMATION_SCHEMA 必要时(步骤1)。 请注意,使用此选项进行升级后,无法启动组复制,因为复制内部所依赖的系统表未更新,并且在其他区域中也可能显示减少的功能。

  • 使用 --upgrade=FORCE ,服务器升级数据字典,性能模式,并在 INFORMATION_SCHEMA 必要时(步骤1),并强制升级其他所有内容(步骤2)。 使用此选项预计服务器启动需要更长时间,因为服务器会检查所有模式中的所有对象。

FORCE 如果服务器认为不需要,则强制执行第2步操作。 FORCE 不同的 一种方法 AUTO 是, FORCE 服务器重新创建系统表,如帮助表或时区表(如果缺少)。

以下列表显示了MySQL 8.0.16之前的升级命令以及MySQL 8.0.16及更高版本的等效命令:

在MySQL 8.0.16之前,某些 mysql_upgrade 选项会影响它执行的操作。 下表显示了 --upgrade 从MySQL 8.0.16开始使用 哪些服务器 选项值来实现类似的效果。 (这些不一定是完全等价的,因为给定的 --upgrade 选项值可能会产生额外的影响。)

有关升级步骤2期间发生的事情的其他说明:

  • sys 如果未安装架构,则 步骤2安装 架构,否则将其升级到当前版本。 如果 sys 模式存在但没有 version 视图, 则会发生错误 ,前提是缺少它表示用户创建的模式:

    存在没有sys.version视图的sys模式。如果
    你有一个用户创建的sys模式,必须重命名为
    升级成功。
    

    要在这种情况下升级,请先删除或重命名现有 sys 架构。 然后再次执行升级过程。 (可能有必要强制执行第2步。)

    要阻止 sys 架构检查:

    • 从MySQL 8.0.16开始:使用 --upgrade=NONE --upgrade=MINIMAL 选项 启动服务器

    • 在MySQL 8.0.16之前: 使用该 选项 调用 mysql_upgrade --skip-sys-schema

  • 步骤2根据需要处理所有用户模式中的所有表。 表检查可能需要很长时间才能完成。 每个表都被锁定,因此在处理其他会话时不可用。 检查和维修操作可能非常耗时,特别是对于大型桌子。 表检查使用 语句 FOR UPGRADE 选项 CHECK TABLE 有关此选项所需内容的详细信息,请参见 第13.7.3.2节“CHECK TABLE语法”

    要防止表检查:

    强制表检查:

    • 从MySQL 8.0.16开始:使用该 --upgrade=FORCE 选项 启动服务器

    • 在MySQL 8.0.16之前: 使用该 选项 调用 mysql_upgrade --force

  • 步骤2将MySQL版本号保存 mysql_upgrade_info 在数据目录 中指定的文件 中。

    忽略该 mysql_upgrade_info 文件并执行检查,无论如何:

    • 从MySQL 8.0.16开始:使用该 --upgrade=FORCE 选项 启动服务器

    • 在MySQL 8.0.16之前: 使用该 选项 调用 mysql_upgrade --force

    注意

    mysql_upgrade_info 文件已弃用,将在以后的MySQL版本中删除。

  • 步骤2使用当前的MySQL版本号标记所有已检查和已修复的表。 这确保了下次使用相同版本的服务器进行升级检查时,可以确定是否需要再次检查或修复给定表。

  • 步骤2升级系统表以确保它们具有当前结构。 无论服务器还是 mysql_upgrade 执行该步骤, 都是如此 关于帮助表和时区表的内容, mysql_upgrade 不加载任何类型的表,而服务器加载帮助表,但不加载时区表。 (也就是说,在MySQL 8.0.16之前,服务器仅在数据目录初始化时加载帮助表。从MySQL 8.0.16开始,它在初始化和升级时加载帮助表。)加载时区表的过程是依赖于平台的,需要DBA做出决策,所以不能自动完成。

2.11.4 MySQL 8.0的变化

在升级到MySQL 8.0之前,请查看本节中描述的更改,以确定适用于当前MySQL安装和应用程序的更改。 执行任何建议的操作。

标记为 不兼容更改的更改 与早期版本的MySQL不兼容, 在升级之前 可能需要您的注意 我们的目标是避免这些变化,但偶尔也需要纠正比版本之间不兼容更糟糕的问题。 如果适用于您的安装的升级问题涉及不兼容性,请按照说明中给出的说明进行操作。

数据字典更改

MySQL Server 8.0包含一个全局数据字典,其中包含有关事务表中数据库对象的信息。 在以前的MySQL系列中,字典数据存储在元数据文件和非事务系统表中。 因此,升级过程要求您通过检查特定的先决条件来验证安装的升级准备情况。 有关更多信息,请参见 第2.11.5节“准备升级安装” 启用数据字典的服务器需要一些一般的操作差异; 请参见 第14.7节“数据字典使用差异”

caching_sha2_password作为首选身份验证插件

caching_sha2_password sha256_password 认证插件提供比更安全的密码加密 mysql_native_password 插件,并 caching_sha2_password 提供了比更好的性能 sha256_password 由于这些优越的安全性和性能特征 caching_sha2_password ,它是MySQL 8.0的首选认证插件,也是默认的认证插件而不是 mysql_native_password 此更改会影响服务器和 libmysqlclient 客户端库:

  • 对于服务器, default_authentication_plugin 系统变量 的默认值 从更改 mysql_native_password caching_sha2_password

    此更改仅适用于安装或升级到MySQL 8.0或更高版本后创建的新帐户。 对于已升级安装中已存在的帐户,其身份验证插件保持不变。 希望切换到的现有用户 caching_sha2_password 可以使用以下 ALTER USER 语句 执行此操作

    更改用户 user
      通过caching_sha2_password识别
      BY' password';
    
  • libmysqlclient 库将其 caching_sha2_password 视为默认的身份验证插件而不是 mysql_native_password

以下部分讨论了更突出的作用的含义 caching_sha2_password

caching_sha2_password兼容性问题和解决方案
重要

如果您的MySQL安装必须为8.0之前的客户端提供服务,并且在升级到MySQL 8.0或更高版本后遇到兼容性问题,解决这些问题并恢复8.0之前的兼容性的最简单方法是重新配置服务器以恢复到以前的默认身份验证插件( mysql_native_password )。 例如,在服务器选项文件中使用以下行:

的[mysqld]
default_authentication_plugin = mysql_native_password

该设置允许8.0之前的客户端连接到8.0服务器,直到您的安装中使用的客户端和连接器升级为了解 caching_sha2_password 但是,该设置应被视为临时设置,而不是长期或永久性解决方案,因为它会导致使用有效设置创建的新帐户放弃提供的改进的身份验证安全性 caching_sha2_password

使用 caching_sha2_password 提供更安全的密码哈希 mysql_native_password (以及随之改进的客户端连接身份验证)。 但是,它还具有可能影响现有MySQL安装的兼容性问题:

  • 未经更新了解的客户端和连接器 caching_sha2_password 可能无法连接到配置 caching_sha2_password 为默认身份验证插件 的MySQL 8.0服务器 ,甚至使用未通过身份验证的帐户 caching_sha2_password 出现此问题的原因是服务器为客户端指定其默认身份验证插件的名称。 如果客户端或连接器基于未正常处理无法识别的默认身份验证插件的客户端/服务器协议实现,则可能会失败并显示以下错误之一:

    不支持身份验证插件“caching_sha2_password”
    
    无法加载身份验证插件“caching_sha2_password”:
    dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so,2):
    图像未找到
    
    警告:mysqli_connect():服务器请求身份验证
    客户端未知的方法[caching_sha2_password]
    

    有关编写连接器以便正常处理来自服务器的未知默认身份验证插件请求的信息,请参阅 身份验证插件连接器 - 编写注意事项

  • 使用经过身份验证的帐户的客户端 caching_sha2_password 必须使用安全连接(使用TCP使用TLS / SSL凭据,Unix套接字文件或共享内存制作),或使用RSA密钥对支持密码交换的未加密连接。 此安全要求不适用 mysql_native_passsword ,因此切换到 caching_sha2_password 可能需要其他配置(请参见 第6.4.1.3节“缓存SHA-2可插入身份验证” )。 但是,默认情况下,MySQL 8.0中的客户端连接更喜欢使用TLS / SSL,因此已满足该首选项的客户端可能不需要其他配置。

  • 尚未更新以了解的客户端和连接器 caching_sha2_password 无法 连接到通过身份验证的帐户, caching_sha2_password 因为他们无法将此插件识别为有效。 (这是客户端/服务器身份验证插件兼容性要求如何应用的特定实例,如 身份验证插件客户端/服务器兼容性中所述 。)要解决此问题,请 libmysqlclient 从MySQL 8.0或更高版本 重新链接客户端 ,或获取可识别的更新连接器 caching_sha2_password

  • 因为 caching_sha2_password 现在也是 libmysqlclient 客户端库中 的默认身份验证插件,所以 身份验证需要客户端/服务器协议中的额外往返,以便从MySQL 8.0客户端连接到使用 mysql_native_password (以前的默认身份验证插件)的 帐户 ,除非调用客户端程序一个 --default-auth=mysql_native_password 选择。

libmysqlclient 8.0之前的MySQL版本 客户端库能够连接到MySQL 8.0服务器(通过身份验证的帐户除外 caching_sha2_password )。 这意味着基于的8.0之前的客户端 libmysqlclient 也应该能够连接。 例子:

  • 标准的MySQL客户端,如 mysql mysqladmin 都是 libmysqlclient 基于的。

  • Perl DBI的DBD :: mysql驱动程序是 libmysqlclient 基于的。

  • MySQL Connector / Python有一个 libmysqlclient 基于 C扩展模块 要使用它,请 use_pure=False 在连接时 包含该 选项。

当现有的MySQL 8.0安装升级到MySQL 8.0.4或更高版本时,一些 libmysqlclient 基于 旧版本 的客户端可能会 自动 升级,如果它们是动态链接的,因为它们使用升级安装的新客户端库。 例如,如果Perl DBI的DBD :: mysql驱动程序使用动态链接,它可以 libmysqlclient 在升级到MySQL 8.0.4或更高版本后 使用 到位,结果如下:

  • 在升级之前,使用DBD :: mysql的DBI脚本可以连接到MySQL 8.0服务器,但使用身份验证的帐户除外 caching_sha2_password

  • 升级后,相同的脚本也可以使用 caching_sha2_password 帐户。

但是,之前的结果是因为 libmysqlclient 8.0.4之前的MySQL 8.0安装实例是二进制兼容的:它们都使用共享库主版本号21.对于 libmysqlclient 从MySQL 5.7或更早 版本链接的客户端 ,它们链接到一个共享库不是二进制兼容的不同版本号。 在这种情况下,必须 libmysqlclient 从8.0.4或更高版本 重新编译客户端, 以便与MySQL 8.0服务器和 caching_sha2_password 帐户 完全兼容

MySQL Connector / J 5.1到8.0.8能够连接到MySQL 8.0服务器,但通过身份验证的帐户除外 caching_sha2_password (连接到 caching_sha2_password 帐户 需要Connector / J 8.0.9或更高版本 。)

使用客户端/服务器协议实现的客户端 libmysqlclient 可能需要升级到理解新身份验证插件的较新版本。 例如,在PHP中,MySQL连接通常基于 mysqlnd ,目前还不知道 caching_sha2_password mysqlnd 可用 的更新版本之前 ,启用PHP客户端连接到MySQL 8.0的方法是重新配置服务器以恢复 mysql_native_password 为默认的身份验证插件,如前所述。

如果客户端或连接器支持显式指定默认身份验证插件的选项,请使用它来命名除以外的插件 caching_sha2_password 例子:

  • 一些MySQL客户端支持一个 --default-auth 选项。 (标准MySQL客户端,如 mysql mysqladmin 支持此选项,但可以在没有它的情况下成功连接到8.0服务器。但是,其他客户端可能支持类似选项。如果是这样,则值得尝试。)

  • 使用 libmysqlclient C API的 程序可以使用 mysql_options() MYSQL_DEFAULT_AUTH 选项 调用该 函数

  • 使用客户端/服务器协议的本机Python实现的MySQL Connector / Python脚本可以指定 auth_plugin 连接选项。 (或者,使用Connector / Python C Extension,它可以连接到MySQL 8.0服务器而无需使用 auth_plugin 。)

caching_sha2_password兼容的客户端和连接器

如果客户端或连接器可用且已更新以了解 caching_sha2_password ,则在连接到配置 caching_sha2_password 为默认身份验证插件 的MySQL 8.0服务器时,使用它是确保兼容性的最佳方法

这些客户端和连接器已升级为支持 caching_sha2_password

  • libmysqlclient MySQL 8.0(8.0.4或更高版本)中 客户端库。 标准MySQL客户端(如 mysql mysqladmin) libmysqlclient 基于的,因此它们也是兼容的。

  • libmysqlclient MySQL 5.7(5.7.23或更高版本)中 客户端库。 标准MySQL客户端(如 mysql mysqladmin) libmysqlclient 基于的,因此它们也是兼容的。

  • MySQL Connector / C ++ 1.1.11或更高版本或8.0.7或更高版本。

  • MySQL Connector / J 8.0.9或更高版本。

  • MySQL Connector / NET 8.0.10或更高版本(通过经典的MySQL协议)。

  • MySQL Connector / Node.js 8.0.9或更高版本。

  • PHP:X DevAPI PHP扩展(mysql_xdevapi)支持 caching_sha2_password

    PHP:PDO_MySQL和ext / mysqli扩展不支持 caching_sha2_password 此外,当与7.1.16之前的PHP版本和7.2.4之前的PHP 7.2一起使用时, default_authentication_plugin=caching_sha2_password 即使 caching_sha2_password 未使用 它们也无法连接

caching_sha2_password和根管理帐户

对于MySQL 8.0的升级,身份验证插件现有帐户保持不变,包括 'root'@'localhost' 管理帐户 的插件

对于新的MySQL 8.0安装,在初始化数据目录时(使用 第2.10.1节“初始化数据目录”中的说明 ),将 'root'@'localhost' 创建帐户,并且该帐户 caching_sha2_password 默认 使用 要在数据目录初始化后连接到服务器,您必须使用支持的客户端或连接器 caching_sha2_password 如果您可以这样做但更喜欢 在安装后 root 使用 帐户 mysql_native_password ,请安装MySQL并像往常一样初始化数据目录。 然后连接到服务器, root 并按 ALTER USER 如下方式 使用 以更改帐户身份验证插件和密码:

更改用户'root'@'localhost'
  使用mysql_native_password标识
  BY' password';

如果您使用的客户端或连接器尚不支持 caching_sha2_password ,则可以使用修改后的数据目录初始化过程,该过程会在创建 root 帐户后 mysql_native_password 立即 帐户与 帐户 相关联 为此,请使用以下任一技术:

caching_sha2_password和复制

在所有服务器已升级到MySQL 8.0.4或更高版本的复制方案中,与主/主服务器的从/副本连接可以使用通过身份验证的帐户 caching_sha2_password 对于此类连接,同样的要求适用于使用通过身份验证的帐户的其他客户端 caching_sha2_password :使用安全连接或基于RSA的密码交换。

要连接到 caching_sha2_password 主/从复制 帐户:

  • 对于使用OpenSSL构建的MySQL,请使用以下任一 CHANGE MASTER TO 选项:

    MASTER_SSL = 1
    GET_MASTER_PUBLIC_KEY = 1
    MASTER_PUBLIC_KEY_PATH =' path to RSA public key file'
    
  • 对于MySQL使用wolfSSL建成,使用 MASTER_SSL=1 CHANGE MASTER TO

    或者,如果在服务器启动时提供了所需的密钥,则可以使用与RSA公钥相关的选项。

要连接到 caching_sha2_password 组复制 帐户:

  • 对于使用OpenSSL构建的MySQL,请设置以下任何系统变量:

    SET GLOBAL group_replication_recovery_use_ssl = ON;
    SET GLOBAL group_replication_recovery_get_public_key = 1;
    SET GLOBAL group_replication_recovery_public_key_path =' path to RSA public key file';
    
  • 对于使用wolfSSL构​​建的MySQL,请设置此系统变量:

    SET GLOBAL group_replication_recovery_use_ssl = ON;
    

    或者,如果在服务器启动时提供了所需的密钥,则可以使用与RSA公钥相关的选项。

配置更改

  • 不兼容的变化 :MySQL存储引擎现在负责提供自己的分区处理程序,MySQL服务器不再提供通用的分区支持。 InnoDB 并且 NDB 是唯一提供MySQL 8.0支持的本机分区处理程序的存储引擎。 必须更改使用任何其他存储引擎的分区表 - 要么 升级服务器 之前 将其 转换为 InnoDB NDB ,要么删除其分区 ,否则之后无法使用它。

    有关将 MyISAM 转换为的信息 InnoDB ,请参见 第15.6.1.3节“将表从MyISAM转换为InnoDB”

    表创建语句将导致使用没有此类支持的存储引擎的分区表失败,并 在MySQL 8.0中 出现错误( ER_CHECK_NOT_IMPLEMENTED )。 如果使用 mysqldump MySQL 5.7(或更早版本)中创建的转储文件导入 到MySQL 8.0服务器中,则必须确保创建分区表的任何语句都不指定不受支持的存储引擎,方法是删除对分区的任何引用,或者通过将存储引擎指定 InnoDB InnoDB 默认 设置或允许将其设置为 默认设置。

    注意

    第2.11.5节“准备升级安装”中 给出的过程 描述了如何识别在升级到MySQL 8.0之前必须更改的分区表。

    有关详细 信息, 请参见 第23.6.2节“分区与存储引擎相关的限制”

  • 不兼容的更改 :未使用并删除了多个服务器错误代码(有关列表,请参阅 MySQL 8.0中删除的功能 )。 应更新专门针对其中任何一个测试的应用程序。

  • 重要更改 :默认字符集已更改 latin1 utf8mb4 这些系统变量受到影响:

    因此,除非指定了显式字符集和排序规则,否则新对象的默认字符集和排序规则与以前不同。 这包括数据库和其中的对象,例如表,视图和存储的程序。 假设使用了以前的默认值,保留它们的一种方法是使用 my.cnf 文件中的 这些行启动服务器

    的[mysqld]
    被character_set_server = LATIN1
    collat​​ion_server的= latin1_swedish_ci
    

    在复制设置中,从MySQL 5.7升级到8.0时,建议在升级之前将默认字符集更改回MySQL 5.7中使用的字符集。 升级完成后,可以将默认字符集更改为 utf8mb4

  • 不兼容的更改 :从MySQL 8.0.11开始,禁止 lower_case_table_names 使用与初始化 服务器时使用的 设置不同的设置启动服务器。 限制是必要的,因为各种数据字典表字段使用的排序规则基于 lower_case_table_names 初始化服务器时定义 设置,并且使用不同的设置重新启动服务器会导致标识符的排序和比较方式不一致。

服务器更改

  • 在MySQL 8.0.11中,删除了与帐户管理相关的一些已弃用的功能,例如使用该 GRANT 语句修改用户帐户的非特权, NO_AUTO_CREATE_USER SQL模式, PASSWORD() 函数和 old_passwords 系统变量。

    从MySQL 5.7到8.0的引用这些已删除功能的语句的复制可能导致复制失败。 应修改使用任何已删除功能的应用程序以避免它们并尽可能使用替代方法,如 MySQL 8.0中删除的功能中 所述

    要避免MySQL 8.0上的启动失败,请 NO_AUTO_CREATE_USER sql_mode MySQL选项文件中 删除 系统变量设置的 任何实例

    将包含 NO_AUTO_CREATE_USER 存储的程序定义中 SQL模式 的转储文件加载 到MySQL 8.0服务器会导致失败。 从MySQL 5.7.24和MySQL 8.0.13开始, mysqldump NO_AUTO_CREATE_USER 从存储的程序定义中 删除 mysqldump 必须手动修改 使用早期版本创建的转储文件 以删除实例 NO_AUTO_CREATE_USER

  • 在MySQL 8.0.11,这些过时兼容性SQL模式被拆除: DB2 MAXDB MSSQL MYSQL323 MYSQL40 ORACLE POSTGRESQL NO_FIELD_OPTIONS NO_KEY_OPTIONS NO_TABLE_OPTIONS 它们不能再分配给 sql_mode 系统变量或用作 mysqldump --compatible 选项的 允许值

    删除 MAXDB 意味着 TIMESTAMP 数据类型为 CREATE TABLE ALTER TABLE 不再被视为 DATETIME

    从MySQL 5.7到8.0的引用已删除的SQL模式的语句的复制可能导致复制失败。 这包括复制 CREATE 存储程序(存储过程和函数,触发器和事件) 语句, 这些 语句在当前 sql_mode 值包括任何删除的模式时执行。 应修改使用任何已删除模式的应用程序以避免它们。

  • 从MySQL 8.0.3开始,空间数据类型允许一个 SRID 属性,以明确指示存储在列中的值的空间参照系(SRS)。 请参见 第11.5.1节“空间数据类型”

    具有显式 SRID 属性的 空间列 受SRID限制:该列仅采用具有该ID的值,并且 SPATIAL 该列上的索引将由优化程序使用。 优化程序忽略 SPATIAL 没有 SRID 属性的 空间列上的索引 请参见 第8.3.3节“空间索引优化” 如果希望优化程序考虑 SPATIAL 非SRID限制的空间列上的索引,则应修改每个此类列:

    • 验证列中的所有值是否具有相同的SRID。 要确定几何列中包含的SRID col_name ,请使用以下查询:

      SELECT DISTINCT ST_SRID(col_name)FROM tbl_name;
      

      如果查询返回多行,则该列包含多个SRID。 在这种情况下,请修改其内容,以使所有值具有相同的SRID。

    • 重新定义列以具有显式 SRID 属性。

    • 重新创建 SPATIAL 索引。

  • MySQL 8.0.0中删除了几个空间函数,原因是空间函数名称空间更改 ST_ 为执行精确操作的函数 实现了 前缀,或者 MBR 为基于最小边界矩形执行操作的函数添加 前缀。 在生成的列定义中使用已删除的空间函数可能会导致升级失败。 在升级前,运行 mysqlcheck的--check升级 为删除空间的功能,并更换,你与他们的发现 ST_ MBR 命名的替代品。 有关已删除空间函数的列表,请参阅 MySQL 8.0中删除的功能

  • 在执行就地升级到MySQL 8.0.3或更高版本时, BACKUP_ADMIN 权限会自动授予具有该 RELOAD 权限的 用户

  • 从MySQL 8.0.13开始,由于基于行或混合复制模式与基于语句的复制模式之间的区别在于处理临时表的方式,因此在运行时切换二进制日志记录格式存在新的限制。

    • SET @@SESSION.binlog_format 如果会话有任何打开的临时表,则无法使用。

    • SET @@global.binlog_format SET @@persist.binlog_format 如果任何复制通道有任何打开的临时表 则无法使用。 SET @@persist_only.binlog_format 如果复制通道具有打开的临时表,则允许,因为不同 PERSIST PERSIST_ONLY 不会修改运行时全局系统变量值。

    • SET @@global.binlog_format SET @@persist.binlog_format 如果正在运行任何复制通道应用程序 则无法使用。 这是因为更改仅在重新启动其应用程序时在复制通道上生效,此时复制通道可能具有打开的临时表。 此行为比以前更具限制性。 SET @@persist_only.binlog_format 如果任何复制通道应用程序正在运行,则允许

InnoDB变化

  • INFORMATION_SCHEMA 基于 InnoDB 系统表的视图被数据字典表上的内部系统视图替换。 受影响的 InnoDB INFORMATION_SCHEMA 视图已重命名:

    表2.15重命名了InnoDB信息模式视图

    旧名 新名字
    INNODB_SYS_COLUMNS INNODB_COLUMNS
    INNODB_SYS_DATAFILES INNODB_DATAFILES
    INNODB_SYS_FIELDS INNODB_FIELDS
    INNODB_SYS_FOREIGN INNODB_FOREIGN
    INNODB_SYS_FOREIGN_COLS INNODB_FOREIGN_COLS
    INNODB_SYS_INDEXES INNODB_INDEXES
    INNODB_SYS_TABLES INNODB_TABLES
    INNODB_SYS_TABLESPACES INNODB_TABLESPACES
    INNODB_SYS_TABLESTATS INNODB_TABLESTATS
    INNODB_SYS_VIRTUAL INNODB_VIRTUAL

    升级到MySQL 8.0.3或更高版本后,更新引用先前 InnoDB INFORMATION_SCHEMA 视图名称的 所有脚本

  • 与MySQL捆绑在一起 zlib库 版本从1.2.3版本升级到版本1.2.11。

    compressBound() zlib 1.2.11中 的zlib 函数返回比压缩给定长度的字节所需的缓冲区大小略高的估计值,而不是zlib 1.2.3版本。 compressBound() 函数的调用 InnoDB ,决定创建压缩时允许的最大行大小的功能 InnoDB 表或将行插入压缩 InnoDB 表。 其结果是, CREATE TABLE ... ROW_FORMAT=COMPRESSED INSERT 与行大小非常接近成功在早期版本中,现在可能会失败的最大行大小操作。

    如果您有大行的压缩 InnoDB 表,建议您 CREATE TABLE 在升级之前在MySQL 8.0测试实例上 测试压缩表 语句。

  • 随着该 --innodb-directories 功能 的引入, 应该将使用绝对路径或在数据目录之外的位置创建的每表文件和一般表空间文件的位置添加到 innodb_directories 参数值。 否则, InnoDB 在恢复期间无法找到这些文件。 要查看表空间文件位置,请查询 INFORMATION_SCHEMA.FILES 表:

    来自INFORMATION_SCHEMA.FILES \ G的SELECT TABLESPACE_NAME,FILE_NAME
    
  • 撤消日志不能再驻留在系统表空间中。 在MySQL 8.0中,默认情况下,undo logs驻留在两个undo表空间中。 有关更多信息,请参见 第15.6.3.4节“撤消表空间”

    从MySQL 5.7升级到MySQL 8.0时,将删除MySQL 5.7实例中存在的任何撤消表空间,并替换为两个新的默认撤消表空间。 innodb_undo_directory 变量 定义的位置创建默认的撤消表空间 如果 innodb_undo_directory 变量未定义,则在数据目录中创建撤消表空间。 从MySQL 5.7升级到MySQL 8.0需要慢速关闭,以确保MySQL 5.7实例中的撤消表空间为空,允许安全删除它们。

    从早期的MySQL 8.0版本升级到MySQL 8.0.14或更高版本时,由于 innodb_undo_tablespaces 设置大于2而 在升级前实例中存在的撤消表空间 被视为用户定义的撤消表空间,可以取消激活和删除 升级后分别 使用 ALTER UNDO TABLESPACE DROP UNDO TABLESPACE 语法。 MySQL 8.0发行版系列中的升级可能并不总是需要慢速关闭,这意味着现有的撤消表空间可能包含撤消日志。 因此,升级过程不会删除现有的撤消表空间。

  • 不兼容的更改 :从MySQL 8.0.17开始,该 CREATE TABLESPACE ... ADD DATAFILE 子句不允许循环目录引用。 例如, /../ 不允许以下语句中 的循环目录reference( ):

    CREATE TABLESPACE ts1添加DATAFILE ts1.ibd' any_directory/../ts1.ibd';
    

    Linux上存在限制的例外情况,如果前面的目录是符号链接,则允许使用循环目录引用。 例如,如果 any_directory 是符号链接 ,则允许上述示例中的数据文件路径 (仍然允许数据文件路径以' ../ ' 开头 。)

    要避免升级问题,请在升级到MySQL 8.0.17或更高版本之前从表空间数据文件路径中删除任何循环目录引用。 要检查表空间路径,请查询该 INFORMATION_SCHEMA.INNODB_DATAFILES 表。

SQL更改

  • 不兼容的更改 :从MySQL 8.0.13开始, 已删除 了不推荐使用 子句 ASC DESC 限定符 GROUP BY 以前依赖于 GROUP BY 排序的 查询 可能会产生与以前的MySQL版本不同的结果。 要生成给定的排序顺序,请提供一个 ORDER BY 子句。

    应修改 MySQL 8.0.12或更低版本中使用 ASC DESC 限定 GROUP BY 条款的 查询和存储的程序定义 否则,升级到MySQL 8.0.13或更高版本可能会失败,因为可能会复制到MySQL 8.0.13或更高版本的从属服务器。

  • MySQL 8.0中可能会保留一些未在MySQL 5.7中保留的关键字。 请参见 第9.3节“关键字和保留字” 这可能导致以前用作标识符的单词变为非法。 要修复受影响的语句,请使用标识符引用。 请参见 第9.2节“架构对象名称”

  • 升级后,建议您测试应用程序代码中指定的优化程序提示,以确保仍需要提示才能实现所需的优化策略。 优化程序增强功能有时会使某些优化程序提示变得不必要。 在某些情况下,不必要的优化器提示甚至可能适得其反。

  • 不兼容的更改 :在MySQL 5.7中, FOREIGN KEY InnoDB 没有 子句 指定 定义 ,或指定 不带a 关键字 ,会导致 使用生成的约束名称。 在MySQL 8.0中,该行为发生了变化, 使用了 值而不是生成的名称。 由于每个模式(数据库)的约束名称必须是唯一的,因此更改会导致由于每个模式不唯一的外键索引名称而导致的错误。 为避免此类错误,新的约束命名行为已在MySQL 8.0.16中恢复,并且 CONSTRAINT symbol CONSTRAINT symbol InnoDB InnoDB FOREIGN KEY index_name InnoDB 再次使用生成的约束名称。

    为了与之一致 InnoDB NDB 基于MySQL 8.0.16或更高版本的发行版使用生成的约束名称(如果 未指定子句),或者 指定关键字时不使用 基于MySQL 5.7和更早版本的MySQL 8.0版本使用了该 值。 CONSTRAINT symbol CONSTRAINT symbol NDB FOREIGN KEY index_name

    上述更改可能会为依赖于先前外键约束命名行为的应用程序引入不兼容性。

2.11.5准备升级安装

在升级到最新的MySQL 8.0版本之前,请通过执行下面描述的初步检查来确保当前MySQL 5.7或MySQL 8.0服务器实例的升级准备情况。 否则升级过程可能会失败。

可以使用MySQL Shell升级检查器实用程序执行相同的检查和其他检查。 有关更多信息,请参阅 Upgrade Checker实用程序

初步检查:

  1. 不得出现以下问题:

    • 必须没有使用过时数据类型或函数的表。

      如果表包含5.6.4之前格式的旧时间列( TIME DATETIME TIMESTAMP 不支持小数秒精度的列),则不支持 就地升级到MySQL 8.0 如果您的表仍使用旧的临时列格式,请在尝试就地升级到MySQL 8.0之前升级它们。 有关更多信息,请参阅 服务器更改

    • 必须没有孤立 .frm 文件。

    • 触发器不能有遗漏或空的定义者或无效的创作环境(由表示 character_set_client collation_connection Database Collation 属性所显示 SHOW TRIGGERS INFORMATION_SCHEMA TRIGGERS 表)。

    要检查这些问题,请执行以下命令:

    mysqlcheck -u root -p --all-databases --check-upgrade
    

    如果 mysqlcheck 报告任何错误,请更正问题。

  2. 必须没有使用没有本机分区支持的存储引擎的分区表。 要识别此类表,请执行以下查询:

    SELECT TABLE_SCHEMA,TABLE_NAME
    来自INFORMATION_SCHEMA.TABLES
    哪里没有引擎('innodb','ndbcluster')
    AND CREATE_OPTIONS LIKE'%partitioned%';
    

    查询报告的任何表必须更改为使用 InnoDB 或未分区。 要将表存储引擎更改为 InnoDB ,请执行以下语句:

    ALTER TABLE table_nameENGINE = INNODB;
    

    有关将 MyISAM 转换为的信息 InnoDB ,请参见 第15.6.1.3节“将表从MyISAM转换为InnoDB”

    要使分区表不分区,请执行以下语句:

    ALTER TABLE table_name删除分区;
    
  3. MySQL 8.0中可能会保留一些以前未保留的关键字。 请参见 第9.3节“关键字和保留字” 这可能导致以前用作标识符的单词变为非法。 要修复受影响的语句,请使用标识符引用。 请参见 第9.2节“架构对象名称”

  4. MySQL 5.7 mysql 系统数据库中必须没有与MySQL 8.0数据字典使用的表同名的表。 要识别具有这些名称的表,请执行以下查询:

    SELECT TABLE_SCHEMA,TABLE_NAME
    来自INFORMATION_SCHEMA.TABLES
    WHERE LOWER(TABLE_SCHEMA)='mysql'
    和LOWER(TABLE_NAME)IN
    “目录”,
    'character_sets',
    'CHECK_CONSTRAINTS',
    “归类”,
    'column_statistics',
    'column_type_elements',
    '列',
    'dd_properties',
    “事件”,
    'foreign_key_column_usage',
    'foreign_keys',
    'index_column_usage',
    'index_partitions',
    'INDEX_STATS',
    “指标”,
    'parameter_type_elements',
    “参数”,
    'resource_groups',
    “套路”,
    “图式”,
    'ST_SPATIAL_REFERENCE_SYSTEMS',
    'table_partition_values',
    'table_partitions',
    'table_stats',
    “表”,
    'tablespace_files',
    “表空间”,
    “触发”,
    'view_routine_usage',
    'view_table_usage'
    );
    

    必须重命名(使用 RENAME TABLE 查询报告的任何表 这也可能需要更改使用受影响表的应用程序。

  5. 必须没有具有超过64个字符的外键约束名称的表。 要识别具有太长约束名称的表,请执行以下查询:

    SELECT TABLE_SCHEMA,TABLE_NAME
    来自INFORMATION_SCHEMA.TABLES
    在哪里TABLE_NAME IN
      (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+ 1),
                   INSTR(SUBSTR(ID,INSTR(ID, '/')+ 1), '_ ibfk _') -  1)
       来自INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
       WHERE LENGTH(SUBSTR(ID,INSTR(ID,'/')+ 1))> 64);
    

    必须更改查询报告的任何表,使其约束名称不超过64个字符(使用 ALTER TABLE )。

  6. 必须不是 sql_mode 系统变量设置中 定义的过时SQL模式 尝试使用过时的SQL模式将导致MySQL 8.0启动失败。 还应修改使用过时SQL模式的应用程序以避免它们。 有关在MySQL 8.0中删除的SQL模式的信息,请参阅 服务器更改

  7. 必须没有 包含超过255个字符或1020个字节的 单个 ENUM SET 列元素的 表或存储过程 之前的MySQL 8.0,的最大组合长度 ENUM SET 列元素是64K。 在MySQL 8.0中,单个 ENUM SET 列元素 的最大字符长度 为255个字符,最大字节长度为1020个字节。 (1020字节限制支持多字节字符集)。 在升级到MySQL 8.0之前,请修改 超出新限制的 任何 ENUM SET 列元素。 如果不这样做会导致升级失败并显示错误。

  8. 在升级到MySQL 8.0.13或更高版本之前,必须没有驻留在共享 InnoDB 表空间中的 表分区 ,其中包括系统表空间和通用表空间。 通过查询来识别共享表空间中的表分区 INFORMATION_SCHEMA

    从INFORMATION_SCHEMA.INNODB_SYS_TABLES中选择DISTINCT NAME,SPACE,SPACE_TYPE 
      在哪里名称'%#P#%'和SPACE_TYPE不喜欢'单身';
    

    使用以下命令将表分区从共享表空间移动到每表文件表空间 ALTER TABLE ... REORGANIZE PARTITION

    ALTER TABLE table_name重组PARTOTION partition_name 
      INTO(partition_definitionTABLESPACE = innodb_file_per_table);
    
  9. MySQL 8.0.12或更低版本中必须没有查询和存储的程序定义,这些定义使用 ASC DESC 限定 GROUP BY 条款。 否则,升级到MySQL 8.0.13或更高版本可能会失败,因为可能会复制到MySQL 8.0.13或更高版本的从属服务器。 有关其他详细信息,请参阅 SQL更改

  10. 您的MySQL 5.7安装不得使用MySQL 8.0不支持的功能。 此处的任何更改都必须是特定于安装的,但以下示例说明了要查找的内容:

    MySQL 8.0中删除了一些服务器启动选项和系统变量。 请参阅 MySQL 8.0中删除的功能 ,以及 第1.5节“ MySQL 8.0中 添加,弃用或删除的服务器和状态变量和选项” 如果您使用其中任何一项,则升级需要更改配置。

    示例:由于数据字典提供有关数据库对象的信息,因此服务器不再检查数据目录中的目录名以查找数据库。 因此,该 --ignore-db-dir 选项是无关紧要的,已被删除。 要处理此问题,请 --ignore-db-dir 从启动配置中 删除任何实例 此外,在升级到MySQL 8.0之前,请删除或移动指定的数据目录子目录。 (或者,让8.0服务器将这些目录作为数据库添加到数据字典中,然后使用 DROP DATABASE 删除每个数据库 。)

2.11.6在Unix / Linux上升级MySQL二进制或基于包的安装

本节介绍如何在Unix / Linux上升级MySQL二进制和基于包的安装。 描述了就地和逻辑升级方法。

就地升级

就地升级包括关闭旧的MySQL服务器,用新的MySQL服务器替换旧的MySQL二进制文件或软件包,在现有数据目录上重新启动MySQL,以及升级现有安装中需要升级的任何其余部分。 有关可能需要升级的内容的详细信息,请参见 第2.11.3节“MySQL升级过程升级”

注意

如果要升级最初通过安装多个RPM软件包生成的安装,请升级所有软件包,而不仅仅是某些软件包。 例如,如果您以前安装了服务器和客户端RPM,请不要仅升级服务器RPM。

对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。 在这些平台上, 未安装 mysqld_safe 在这种情况下,请使用systemd进行服务器启动和关闭,而不是使用以下说明中使用的方法。 请参见 第2.5.9节“使用systemd管理MySQL服务器”

有关MySQL Cluster安装的升级,另请参阅 MySQL Cluster Upgrade

要执行就地升级:

  1. 查看 第2.11.1节“开始之前”中的信息

  2. 通过完成 第2.11.5节“准备升级安装”中 的初步检查,确保安装的升级准备就绪

  3. 如果您使用XA事务 InnoDB ,请 XA RECOVER 在升级之前 运行 以检查未提交的XA事务。 如果返回结果,则通过发出 XA COMMIT XA ROLLBACK 声明 提交或回滚XA事务

  4. 如果存在加密 InnoDB 表空间,请通过执行以下语句旋转密钥环主密钥:

    ALTER INSTANCE ROTATE INNODB MASTER KEY;
    
  5. 如果您通常运行配置为 innodb_fast_shutdown set 2 (冷关闭)的 MySQL服务器, 请将其 配置为通过执行以下任一语句执行快速或慢速关闭:

    SET GLOBAL innodb_fast_shutdown = 1;  - 快速关机
    SET GLOBAL innodb_fast_shutdown = 0;  - 慢关机
    

    在快速或慢速关闭的情况下, InnoDB 将其撤消日志和数据文件保留在可以在发布版本之间存在文件格式差异的情况下处理的状态。

  6. 关闭旧的MySQL服务器。 例如:

    mysqladmin -u root -p shutdown
    
  7. 升级MySQL二进制文件或包。 如果要升级二进制安装,请解压缩新的MySQL二进制分发包。 请参阅 获取和解压缩分发 对于基于包的安装,请安装新包。

  8. 使用现有数据目录启动MySQL 8.0服务器。 例如:

    mysqld_safe --user = mysql --datadir = /path/to/existing-datadir

    如果有加密的 InnoDB 表空间,请使用该 --early-plugin-load 选项加​​载密钥环插件。

    当您启动MySQL 8.0服务器时,它会自动检测是否存在数据字典表。 如果没有,服务器在数据目录中创建它们,用元数据填充它们,然后继续其正常的启动顺序。 在此过程中,服务器升级所有数据库对象的元数据,包括数据库,表空间,系统和用户表,视图和存储的程序(存储过程和函数,触发器和事件调度程序事件)。 服务器还会删除以前用于元数据存储的文件。 例如,从MySQL 5.7升级到MySQL 8.0后,您会注意到表格不再有 .frm 文件。

    如果此步骤失败,则服务器将对数据目录的所有更改还原。 在这种情况下,您应该删除所有重做日志文件,在同一数据目录上启动MySQL 5.7服务器,并修复任何错误的原因。 然后执行另一个5.7服务器的慢速关闭并启动MySQL 8.0服务器再试一次。

  9. 在上一步中,服务器根据需要升级数据字典。 现在有必要执行任何剩余的升级操作:

    • 从MySQL 8.0.16开始,服务器将在上一步中完成:它 mysql 在MySQL 5.7和MySQL 8.0之间 进行 系统模式 所需的任何更改 ,以便您可以利用新的特权或功能。 它还 为MySQL 8.0提供了最新 的性能模式 INFORMATION_SCHEMA sys 模式,并检查了与当前版本的MySQL不兼容的所有用户模式。

    • 在MySQL 8.0.16之前,服务器仅升级上一步中的数据字典。 MySQL 8.0服务器成功启动后,执行 mysql_upgrade 以执行剩余的升级任务:

      mysql_upgrade -u root -p
      

      然后关闭并重新启动MySQL服务器,以确保对系统表所做的任何更改都生效。 例如:

      mysqladmin -u root -p shutdown
      mysqld_safe --user = mysql --datadir = /path/to/existing-datadir

      第一次启动MySQL 8.0服务器时(在前面的步骤中),您可能会注意到错误日志中有关非升级表的消息。 如果 mysql_upgrade 已成功运行,则第二次启动服务器时应该没有此类消息。

注意

升级过程不会升级时区表的内容。 有关升级说明,请参见 第5.1.13节“MySQL服务器时区支持”

如果升级过程使用 mysql_upgrade (即,在MySQL 8.0.16之前),则该过程也不会升级帮助表的内容。 有关该情况下的升级说明,请参见 第5.1.14节“服务器端帮助支持”

逻辑升级

逻辑升级涉及使用备份或导出实用程序(如 mysqldump mysqlpump) 从旧MySQL实例导出SQL ,安装新的MySQL服务器,以及将SQL应用于新的MySQL实例。 有关可能需要升级的内容的详细信息,请参见 第2.11.3节“MySQL升级过程升级”

注意

对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。 在这些平台上, 未安装 mysqld_safe 在这种情况下,请使用systemd进行服务器启动和关闭,而不是使用以下说明中使用的方法。 请参见 第2.5.9节“使用systemd管理MySQL服务器”

警告

将从先前MySQL版本中提取的SQL应用于新的MySQL版本可能会由于新的,已更改,已弃用或已删除的特性和功能引入的不兼容性而导致错误。 因此,从先前的MySQL版本中提取的SQL可能需要修改才能启用逻辑升级。

要在升级到最新的MySQL 8.0版本之前识别不兼容性,请执行 第2.11.5节“准备升级安装”中 所述的步骤

要执行逻辑升级:

  1. 查看 第2.11.1节“开始之前”中的信息

  2. 从以前的MySQL安装中导出现有数据:

    mysqldump -u root -p
      --add-drop-table --routines --events
      --all-databases --force> data-for-upgrade.sql
    
    注意

    如果数据库包含存储的程序, 请使用 --routines mysqldump的 --events 选项 (如上所示)。 选项包括转储中的所有数据库,包括 保存系统表 数据库。 --all-databases mysql

    重要

    如果您有包含生成列的表,请使用 MySQL 5.7.9或更高版本提供 mysqldump 实用程序来创建转储文件。 早期版本中提供 mysqldump 实用程序对生成的列定义使用了错误的语法(Bug#20769542)。 您可以使用该 INFORMATION_SCHEMA.COLUMNS 表来标识具有生成列的表。

  3. 关闭旧的MySQL服务器。 例如:

    mysqladmin -u root -p shutdown
    
  4. 安装MySQL 8.0。 有关安装说明,请参阅 第2章, 安装和升级MySQL

  5. 初始化新数据目录,如 第2.10.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
  7. 重置 root 密码:

    shell> mysql -u root -p
    输入密码:****  < - 输入临时root密码
    
    MySQL的> ALTER USER USER() IDENTIFIED BY 'your new password';
    
  8. 将先前创建的转储文件加载到新的MySQL服务器中。 例如:

    mysql -u root -p --force <data-for-upgrade.sql
    
    注意

    gtid_mode=ON 如果转储文件包含系统表, 则不建议在服务器( 上启用GTID时加载转储文件 mysqldump 为使用非事务性MyISAM存储引擎的系统表发出DML指令,并且在启用GTID时不允许这种组合。 另请注意,将启用了GTID的服务器中的转储文件加载到启用了GTID的其他服务器中会导致生成不同的事务标识符。

  9. 执行任何剩余的升级操作:

    • 在MySQL 8.0.16及更高版本中,关闭服务器,然后使用 --upgrade=FORCE 选项 重新启动它 以执行剩余的升级任务:

      mysqladmin -u root -p shutdown
      mysqld_safe --user = mysql --datadir = /path/to/8.0-datadir--upgrade = FORCE&
      

      重启后 --upgrade=FORCE ,服务器会 mysql 在MySQL 5.7和MySQL 8.0之间 进行 系统架构中 所需的任何更改 ,以便您可以利用新的权限或功能。 它还 为MySQL 8.0提供了最新 的性能模式 INFORMATION_SCHEMA sys 模式,并检查了与当前版本的MySQL不兼容的所有用户模式。

    • 在MySQL 8.0.16之前,执行 mysql_upgrade 以执行剩余的升级任务:

      mysql_upgrade -u root -p
      

      然后关闭并重新启动MySQL服务器,以确保对系统表所做的任何更改都生效。 例如:

      mysqladmin -u root -p shutdown
      mysqld_safe --user = mysql --datadir = /path/to/8.0-datadir
注意

升级过程不会升级时区表的内容。 有关升级说明,请参见 第5.1.13节“MySQL服务器时区支持”

如果升级过程使用 mysql_upgrade (即,在MySQL 8.0.16之前),则该过程也不会升级帮助表的内容。 有关该情况下的升级说明,请参见 第5.1.14节“服务器端帮助支持”

注意

加载包含MySQL 5.7 mysql 架构 的转储文件会 重新创建两个不再使用的表: event proc (相应的MySQL 8.0表是 events routines ,它们都是数据字典表并受到保护。)在您对升级成功感到满意后,可以 通过执行以下SQL语句 来删除 event proc 表:

DROP TABLE mysql.event;
DROP TABLE mysql.proc;

MySQL集群升级

本节中的信息是辅助中所描述的就地升级过程 的原位升级 如果要升级MySQL集群,以供使用。

从MySQL 8.0.16开始,MySQL Cluster升级可以作为常规滚动升级执行,遵循通常的三个有序步骤:

  1. 升级MGM节点。

  2. 一次升级一个数据节点。

  3. 一次升级一个API节点(包括MySQL服务器)。

升级每个节点的方式与MySQL 8.0.16之前几乎完全相同,因为升级数据字典和升级系统表之间存在分离。 升级每个人有两个步骤 mysqld

  1. 导入数据字典。

    使用 --upgrade=MINIMAL 升级数据字典但不升级系统表 选项 启动新服务器 这与启动服务器的MySQL 4.0.16之前的操作基本相同,而不是调用 mysql_upgrade

    必须连接MySQL服务器才能 NDB 完成此阶段。 如果 存在 任何 NDB NDBINFO 表,并且服务器无法连接到群集,则会退出并显示错误消息:

    无法填充DD表。
    
  2. 升级系统表。

    在MySQL 8.0.16之前,DBA调用 mysql_upgrade 客户端来升级系统表。 从MySQL 8.0.16开始,服务器执行此操作:要升级系统表,请重新启动每个 mysqld 而不使用该 --upgrade=MINIMAL 选项。

2.11.7使用MySQL Yum存储库升级MySQL

对于支持的基于Yum的平台(参见 第2.5.1节“使用MySQL Yum存储库在Linux上安装MySQL” ,列表),您可以对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,请先升级到MySQL 5.7,然后再升级到8.0。

    重要

    有关从MySQL 5.7升级到8.0的重要信息,请参阅 从MySQL 5.7升级到8.0

  2. 升级MySQL

    对于未启用dnf的平台,通过以下命令升级MySQL及其组件:

    sudo yum更新mysql-server
    

    对于启用dnf的平台:

    sudo dnf升级mysql-server
    

    或者,您可以通过告诉Yum更新系统上的所有内容来更新MySQL,这可能需要相当长的时间。 对于未启用dnf的平台:

    sudo yum更新
    

    对于启用dnf的平台:

    sudo dnf升级
    
  3. 重启MySQL

    在Yum更新后,MySQL服务器总是重新启动。 在MySQL 8.0.16之前, 在服务器重新启动后 运行 mysql_upgrade 以检查并可能解决旧数据和升级软件之间的任何不兼容问题。 mysql_upgrade 还执行其他功能; 有关详细信息,请参见 第4.4.5节“ mysql_upgrade - 检查和升级MySQL表” 从MySQL 8.0.16开始,此步骤不是必需的,因为服务器执行以前由 mysql_upgrade 处理的所有任务

您还可以仅更新特定组件。 使用以下命令列出MySQL组件的所有已安装软件包(对于支持dnf的系统, 使用 dnf 替换 命令中的 yum ):

sudo yum list安装| grep“^ mysql”

在确定所选组件的软件包名称后,使用以下命令更新软件包,替换 package-name 为软件包的名称。 对于未启用dnf的平台:

sudo yum更新 package-name

对于支持dnf的平台:

sudo dnf升级 package-name

升级共享客户端库

使用Yum存储库更新MySQL后,使用旧版本的共享客户端库编译的应用程序应继续工作。

如果重新编译应用程序并使用更新的库动态链接它们: 对于新版本的共享库而言,典型的是新旧库之间的符号版本控制存在差异或增加(例如,较新的标准8.0共享客户端库与之前发布的一些较旧的先前或变体版本的共享库之间)本地由Linux发行版的软件存储库或其他来源),使用更新的,更新的共享库编译的任何应用程序将需要在部署应用程序的系统上更新库。 并且,正如预期的那样,如果这些库不到位,则需要共享库的应用程序将失败。 因此,请确保在这些系统上从MySQL部署共享库的包。 去做这个, 添加MySQL Yum存储库 )并使用 安装其他MySQL产品和组件与Yum中 给出的说明安装最新的共享库

2.11.8使用MySQL APT存储库升级MySQL

在Debian和Ubuntu平台上,要执行MySQL及其组件的就地升级,请使用MySQL APT存储库。 与MySQL APT库升级MySQL 一个快速指南使用MySQL APT库

2.11.9使用MySQL SLES存储库升级MySQL

在SUSE Linux Enterprise Server(SLES)平台上,要执行MySQL及其组件的就地升级,请使用MySQL SLES存储库。 与MySQL SLES库升级MySQL 一个快速指南使用MySQL SLES库

2.11.10在Windows上升级MySQL

在Windows上升级MySQL有两种方法:

您选择的方法取决于现有安装的执行方式。 在继续之前,请查看 第2.11节“升级MySQL” 以获取有关升级非Windows特定的MySQL的其他信息。

注意

无论您选择哪种方法,在执行升级之前始终备份当前的MySQL安装。 请参见 第7.2节“数据库备份方法”

不支持非GA版本(或从非GA版本到GA版本)之间的升级。 非GA版本中发生了重大的开发变化,您可能会遇到启动服务器的兼容性问题或问题。

注意

MySQL Installer不支持 Community 版本和 Commercial 版本 之间的升级 如果需要此类升级,请使用 ZIP归档 方法 执行此操作

使用MySQL安装程序升级MySQL

使用MySQL Installer执行升级是使用它执行当前服务器安装并且升级在当前版本系列中的最佳方法。 MySQL安装程序不支持版本系列之间的升级,例如从5.7到8.0,并且它不提供升级指示器来提示您升级。 有关在发行版系列之间进行升级的说明,请参阅 使用Windows ZIP 发行版 升级MySQL

要使用MySQL Installer执行升级:

  1. 启动MySQL安装程序。

  2. 在仪表板中,单击“ 目录” 以将最新更改下载到目录。 仅当仪表板在服务器的版本号旁边显示箭头时,才能升级已安装的服务器。

  3. 单击 升级 现在,所有具有较新版本的产品都会显示在列表中。

    注意

    MySQL Installer在同一版本系列中取消选择里程碑版本(预发布)的服务器升级选项。 此外,它还会显示警告,指示不支持升级,识别继续存在的风险,并提供手动执行升级的步骤摘要。 您可以重新选择服务器升级并自行承担风险。

  4. 取消选择除MySQL服务器产品之外的所有产品,除非您打算此时升级其他产品,然后单击“ 下一步”

  5. 单击“ 执行” 开始下载。 下载完成后,单击“ 下一步” 开始升级操作。

    升级到MySQL 8.0.16及更高版本可能会显示跳过系统表的升级检查和处理的选项。 有关此选项的更多信息,请参阅 重要的服务器升级条件

  6. 配置服务器。

使用Windows ZIP分发升级MySQL

使用Windows ZIP存档分发执行升级:

  1. https://dev.mysql.com/downloads/ 下载MySQL的最新Windows ZIP Archive分发版

  2. 如果服务器正在运行,请将其停止。 如果服务器作为服务安装,请使用命令提示符中的以下命令停止服务:

    C:\> SC STOP mysqld_service_name
    

    或者,使用 NET STOP mysqld_service_name

    如果您没有将MySQL服务器作为服务运行,请使用 mysqladmin 来停止它。 例如,在从MySQL 5.7升级到8.0之前,请使用 MySQL 5.7中的 mysqladmin ,如下所示:

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

    如果MySQL root 用户帐户有密码,请 使用该 选项 调用 mysqladmin -p 并在出现提示时输入密码。

  3. 解压缩ZIP存档。 您可以覆盖现有的MySQL安装(通常位于 C:\mysql ),也可以将其安装到不同的目录中,例如 C:\mysql8 建议覆盖现有安装。

  4. 重启服务器。 例如, 如果您将MySQL作为服务运行 ,请使用 SC START mysqld_service_name NET START mysqld_service_name 命令, 否则直接 调用 mysqld

  5. 在MySQL 8.0.16之前, 以管理员身份 运行 mysql_upgrade 以检查表,在必要时尝试修复它们,并在更改授权表时更新它们,以便您可以利用任何新功能。 请参见 第4.4.5节“ mysql_upgrade - 检查和升级MySQL表” 从MySQL 8.0.16开始,此步骤不是必需的,因为服务器执行以前由 mysql_upgrade 处理的所有任务

  6. 如果遇到错误,请参见 第2.3.6节“Microsoft Windows MySQL服务器安装疑难解答”

2.11.11升级MySQL的Docker安装

要升级MySQL的Docker安装,请参阅 升级MySQL服务器容器

2.11.12升级故障排除

  • MySQL 5.7实例在 .frm 表文件和 InnoDB 数据字典 之间的模式不匹配 可能导致升级到MySQL 8.0失败。 这种不匹配可能是由于 .frm 文件损坏。 要解决此问题,请在再次尝试升级之前转储和还原受影响的表。

  • 如果出现问题,例如新的 mysqld 服务器无法启动,请确认您没有 my.cnf 以前安装中 的旧 文件。 您可以使用该 --print-defaults 选项进行 检查 (例如, mysqld --print-defaults )。 如果此命令显示除程序名称以外的任何内容,则您具有 my.cnf 影响服务器或客户端操作 的活动 文件。

  • 如果在升级后遇到编译的客户端程序(例如 Commands out of sync 或意外的核心转储)问题,则在编译程序时可能使用了旧的头文件或库文件。 在这种情况下,请检查 mysql.h 文件和 libmysqlclient.a 的日期, 以验证它们是否来自新的MySQL发行版。 如果没有,请使用新的标头和库重新编译您的程序。 如果库的主版本号已更改(例如,从纂修可能也有必要对共享客户端库编译的程序 libmysqlclient.so.20 libmysqlclient.so.21 )。

  • 如果已创建具有给定名称的用户定义函数(UDF)并将MySQL升级到实现具有相同名称的新内置函数的版本,则UDF将变得不可访问。 要更正此问题,请使用 DROP FUNCTION 删除UDF,然后使用 CREATE FUNCTION 不同的非冲突名称重新创建UDF。 如果新版本的MySQL实现了与现有存储函数同名的内置函数,情况也是如此。 有关 描述服务器如何解释对不同类型函数的引用的规则 请参见 第9.2.4节“函数名称解析和解析”

2.11.13重建或修复表或索引

本节介绍如何重建或修复表或索引,这可能是必需的:

  • MySQL处理数据类型或字符集的方式的变化。 例如,可能已更正排序规则中的错误,从而需要使用表重建来更新使用排序规则的字符列的索引。

  • 所需的表修理或升级的报道 CHECK TABLE mysqlcheck的 ,或 mysql_upgrade

重建表的方法包括:

转储和重新加载方法

如果要重建表,因为在二进制(就地)升级或降级后,不同版本的MySQL将无法处理它们,则必须使用dump-and-reload方法。 使用原始版本的MySQL升级或降级 之前 转储表 然后 升级或降级 重新加载表

如果仅为了重建索引而使用重建表的dump-and-reload方法,则可以在升级或降级之前或之后执行转储。 之后必须重新加载。

如果需要重建 InnoDB 表,因为 CHECK TABLE 操作表明需要进行表升级,请使用 mysqldump 创建转储文件和 mysql 以重新加载文件。 如果 CHECK TABLE 操作指示存在损坏或导致 InnoDB 失败,请参见 第15.20.2节“强制InnoDB恢复” 以获取有关使用 innodb_force_recovery 重新启动选项的 信息 InnoDB 为了了解问题的类型 CHECK TABLE 可能会遇到,请参阅 InnoDB 笔记 第13.7.3.2,“CHECK TABLE语法”

要通过转储和重新加载来重建表,请使用 mysqldump 创建转储文件和 mysql 以重新加载文件:

mysqldump db_namet1> 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 方法只适用于 MyISAM ARCHIVE CSV 表。

您可以使用 REPAIR TABLE ,如果表检查操作表明存在腐败或需要升级。 例如,要修复 MyISAM 表,请使用以下语句:

修理表t1;

mysqlcheck --repair 提供对 REPAIR TABLE 语句的 命令行访问 这可以是一种更方便的修复表的方法,因为您可以使用 --databases --all-databases 选项分别修复特定数据库或所有数据库中的所有表:

mysqlcheck --repair --databases db_name...
mysqlcheck --repair --all-databases

2.11.14将MySQL数据库复制到另一台机器

如果需要在不同体系结构之间传输数据库,可以使用 mysqldump 创建包含SQL语句的文件。 然后,您可以将文件传输到另一台计算机并将其作为输入提供给 mysql 客户端。

使用 mysqldump --help 查看可用的选项。

在两台计算机之间移动数据库的最简单(尽管不是最快)方法是在数据库所在的机器上运行以下命令:

mysqladmin -h' other_hostname'创建db_name
mysqldump db_name| mysql -h' other_hostname'db_name

如果要通过慢速网络从远程计算机复制数据库,可以使用以下命令:

mysqladmin创建db_name
mysqldump -h' other_hostname' - 压缩db_name| MySQL的db_name

您还可以将转储存储在文件中,将文件传输到目标计算机,然后将文件加载到数据库中。 例如,您可以将数据库转储到源计算机上的压缩文件,如下所示:

mysqldump --quick db_name| gzip> db_name.gz

将包含数据库内容的文件传输到目标计算机并在那里运行以下命令:

mysqladmin创建db_name
gunzip < db_name.gz | MySQL的db_name

您还可以使用 mysqldump mysqlimport 来传输数据库。 对于大型表,这比简单地使用 mysqldump 要快得多 在以下命令中, DUMPDIR 表示用于存储 mysqldump 输出的目录的完整路径名

首先,为输出文件创建目录并转储数据库:

mkdir DUMPDIR
mysqldump --tab =DUMPDIR db_name

然后将 DUMPDIR 目录中 的文件传输 到目标机器上的某个相应目录,并将文件加载到MySQL:

mysqladmin创建#create db_name           数据库
cat DUMPDIR/*.sql | mysql db_name   #在数据库中创建表
mysqlimport /*.txt#将数据加载到表中
db_name DUMPDIR

不要忘记复制 mysql 数据库,因为这是存储授权表的位置。 您可能必须 root 在新计算机上 以MySQL 用户 身份运行命令, 直到您拥有 mysql 数据库 为止

mysql 新计算机上 导入 数据库 ,执行 mysqladmin flush-privileges, 以便服务器重新加载授权表信息。

2.12降级MySQL

不支持从MySQL 8.0降级到MySQL 5.7,或从MySQL 8.0版本降级到以前的MySQL 8.0版本。 唯一支持的替代方法是 升级 之前 恢复备份 因此,在开始升级过程之前,必须备份数据。

2.13 Perl安装说明

Perl DBI 模块为数据库访问提供通用接口。 您可以编写一个可以在 DBI 不做任何更改的情况下使用许多不同数据库引 要使用 DBI ,必须 DBI 为要访问的每种类型的数据库服务器 安装 模块以及数据库驱动程序(DBD)模块。 对于MySQL,此驱动程序是 DBD::mysql 模块。

注意

MySQL发行版不包含Perl支持。 您可以从 http://search.cpan.org for Unix 获取必要的模块 ,或者 在Windows上 使用ActiveState ppm 程序。 以下部分描述了如何执行此操作。

DBI / DBD 接口要求Perl 5.6.0,5.6.1和或更高是优选的。 如果您有旧版本的Perl,则 DBI 不起作用 您应该使用 DBD::mysql 4.009或更高版本。 虽然早期版本可用,但它们不支持MySQL 8.0的完整功能。

2.13.1在Unix上安装Perl

MySQL Perl支持要求您已安装MySQL客户端编程支持(库和头文件)。 大多数安装方法都安装必要的文件。 如果从Linux上的RPM文件安装MySQL,请务必同时安装开发人员RPM。 客户端程序位于客户端RPM中,但客户端编程支持位于开发人员RPM中。

您可以从 http://search.cpan.org上 的CPAN(综合Perl存档网络)获取Perl支持所需的文件

在Unix上安装Perl模块的最简单方法是使用该 CPAN 模块。 例如:

shell> perl -MCPAN -e shell
cpan> install DBI
cpan>install DBD::mysql

DBD::mysql 设备运行大量的测试。 这些测试尝试使用默认用户名和密码连接到本地MySQL服务器。 (默认用户名是Unix ODBC 上的 登录名, 在Windows上。默认密码是 无密码。 )如果无法使用这些值连接到服务器(例如,如果您的帐户有密码),则测试失败。 您可以使用 force install DBD::mysql 忽略失败的测试。

DBI 需要 Data::Dumper 模块。 可以安装; 如果没有,你应该在安装之前安装它 DBI

也可以以压缩 tar 档案 的形式下载模块发行版 并手动构建模块。 例如,要解压缩并构建DBI分发,请使用以下过程:

  1. 将分发包解压缩到当前目录:

    外壳> gunzip < DBI-VERSION.tar.gz | tar xvf -
    

    此命令创建一个名为的目录 DBI-VERSION

  2. 将位置更改为解压缩分发的顶级目录:

    外壳> cd DBI-VERSION
    
  3. 构建分发并编译所有内容:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell>make install
    

化妆测试 命令很重要,因为它验证模块正在工作。 请注意,在 DBD::mysql 安装 期间运行该命令 运行 接口代码时,MySQL服务器必须正在运行或测试失败。

DBD::mysql 每当安装新版本的MySQL时 ,重建和重新 安装发行版 是个好主意 这可确保正确安装最新版本的MySQL客户端库。

如果您没有在系统目录中安装Perl模块的访问权限,或者如果要安装本地Perl模块,则以下引用可能很有用: http //learn.perl.org/faq/perlfaq8.html#How- DO-I-保我,自己的模块库,目录-

2.13.2在Windows上安装ActiveState Perl

在Windows上,您应该执行以下操作以 DBD 使用ActiveState Perl 安装MySQL 模块:

  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服务器:

使用DBI;
$ dbh = DBI-> connect(“DBI:ODBC:$ dsn”,$ user,$ password)||
  死“连接到$ dsn \ n时收到错误$ DBI :: errstr”;

2.13.3使用Perl DBI / DBD接口的问题

如果Perl报告无法找到该 ../mysql/mysql.so 模块,则问题可能是Perl无法找到 libmysqlclient.so 共享库。 您应该能够通过以下方法之一解决此问题:

  • 复制 libmysqlclient.so 到其他共享库所在的目录(可能 /usr/lib /lib )。

  • 修改 -L 用于编译 选项 DBD::mysql 以反映实际位置 libmysqlclient.so

  • 在Linux上,您可以将文件所在目录的路径名添加 libmysqlclient.so 到该 /etc/ld.so.conf 文件中。

  • 将所在目录的路径名添加 libmysqlclient.so LD_RUN_PATH 环境变量中。 有些系统使用 LD_LIBRARY_PATH

请注意, -L 如果链接器无法找到其他库 ,您可能还需要修改 选项。 例如,如果链接器找不到, libc 因为它位于 /lib 且链接命令指定 -L/usr/lib ,则将 -L 选项 更改 为现有链接命令 -L/lib 或添加 -L/lib 到现有链接命令。

如果你从下面的错误 DBD::mysql ,你可能正在使用 的gcc (或使用编译的旧的二进制 GCC ):

/ usr / bin / perl:无法解析符号'__moddi3'
/ usr / bin / perl:无法解析符号'__divdi3'

添加 -L/usr/lib/gcc-lib/... -lgcc 到链接命令时, mysql.so 库被建(检查从输出 化妆 mysql.so ,当你编译Perl客户端)。 -L 选项应指定 libgcc.a 系统 所在目录的路径名

这个问题的另一个原因可能是Perl和MySQL都不是用 gcc编译的 在这种情况下,您可以通过使用 gcc 编译来解决不匹配问题

原文