安装和升级 MySQL 8详解

在上一章中,我们概述了 MySQL 以及 MySQL 8 的新特性、用例和限制。MySQL 在平台方面非常灵活,如 RedHat、Fedora、Ubuntu、Debian、Solaris、Microsoft Windows 等。它有一个 API 来支持不同语言的连接,如 C、C++、C 语言、PHP、java、Ruby 等等。对于任何编程平台来说,最重要和最单调的任务就是用必要的软件工具来建立环境。MySQL 8 的情况并非如此,因为本章重点介绍使用 MySQL 8 设置环境。

本章详细介绍了 MySQL 8 的安装步骤以及必要的先决条件。为在各种平台上设置 MySQL 8,提供了单独的安装步骤。本章还介绍了升级到 MySQL 8 或从 MySQL 8 降级的方法。

本章将介绍以下主题:

本节将指导读者选择 MySQL 8 版本,从何处获取 MySQL 8,以及如何安装 MySQL 8。它还解释了安装所需的安装后步骤。本章提供有关如何从 MySQL 8 升级或降级的信息。

MySQL 8 可以在许多不同版本的操作系统上使用。MySQL 8 版本通过两种方式进行管理:

  • 开发版本:此版本具有最新功能,但不建议在生产中使用
  • 通用版本:这是一个稳定的版本,用户也可以在生产中使用

MySQL 8 的每个版本都遵循命名约定,这表示其状态。每个版本名称由三位数字和可选后缀组成。例如,mysql.8.1.2-rc。这些数字解释如下:

  • 第一个数字(8表示发布的主要版本。
  • 第二个数字(1表示版本的次要版本。主要数字和次要数字的组合描述了发行版的系列。
  • 第三个数字(2表示发行系列中的版本。它在每个 bug 修复版本中都会增加。

最新版本的版本是最适合使用的版本。示例中给出的后缀表示 MySQL 8 版本的稳定性。MySQL 8 版本有三个后缀:

  • 开发里程碑发布dmr):MySQL 8 遵循里程碑模型,每个里程碑都表示经过全面测试的特性。
  • 发布候选rc):此版本可能会发布一个新功能,但目的是修复以前发布的功能中的错误。
  • 缺少后缀:表示通用GA)或生产发布。此版本是稳定的,并且经过了早期阶段。它是可靠的,适合在生产中使用。

如上所述,在每个发布之前是 DMR,然后是 RC,最后是 GA 发布状态。现在,在决定安装的 MySQL 8 版本之后,是时候选择分发格式了。

建议将二进制分发用于一般用途。许多平台都有本机格式。例如,Linux 的 RPM 包和 OS X 的 DMG 包

要从官方网站获取 MySQL 8,请参考以下 URL:http://dev.mysql.com/downloads/ 。MySQL 还提供了镜像站点:http://dev.mysql.com/downloads/mirrors.html 。到达下载页面时,您可以在页面底部看到版本选择选项卡,其中显示两个选项卡:

  • 通用GA版本
  • 开发版本

根据上一节,从列表中选择合适的版本,然后单击下载按钮。

这是一个下载包可用并准备好安装的阶段。这是一个可选步骤,但我们建议在安装过程中避免错误。有三种不同的方法可用于检查完整性:

  • 使用 MD5 校验和
  • 使用加密签名
  • 使用 RPM 完整性验证机制

这是检查完整性的最简单方法,只需很少的努力。MySQL 下载页面本身提供 MD5 校验和,这对于每个 MySQL 产品都是唯一的。下载 MySQL 8 后,我们只需确保下载文件的校验和与下载页面上提供的校验和匹配即可。有许多工具可用于不同的操作系统来比较校验和。在这里,我们提供了一个 MD5 校验和的示例,它使用命令行并使用一个图形工具,名为 winMD5Sum,用于 Windows 操作系统。

执行以下命令行执行步骤:

  1. 下载该工具 http://www.fourmilab.ch/md5/

  2. 解压E:\Softwares位置下的文件

  3. 转到命令行并执行以下命令:

 E:\Softwares\md5>md5.exe 
        E:\Softwares\mysql-installer-community-5.7.19.0.msi
 2578BFC3C30273CEE42D77583B8596B5 
        E:\Softwares\mysql-installer-community-5.7.19.0.msi

执行以下步骤以执行图形工具:

  1. 打开链接:http://www.nullriver.com/index/products/winmd5sum

  2. 单击页面上的下载 WinMD5Sum 选项。它会将winMD5Sum.exe下载到您的计算机上。

  3. 运行下载的Install-winMD5Sum.exe并将其安装到本地计算机上。

  4. 成功安装后,打开 winMD5Sum 工具。这将打开一个对话框,您必须在其中选择下载的MySQL.msi文件。

  5. 单击“计算”按钮。这将计算下载文件的 MD5 校验和。

  6. 在比较文本框中输入 MySQL 下载页面上可用的 MD5 校验和,然后按比较按钮。

这种完整性验证技术需要一个公共 GPG 构建密钥。此钥匙可从获取 http://pgp.mit.edu/ URL。下载生成密钥后,必须执行以下步骤:

  1. 导入生成密钥
  2. 从 MySQL 站点下载所需的 MySQL 8 包及其相关签名

Make sure the MySQL package name and its downloaded signature file name are the same. Both the files must be placed under one common storage location.

  1. 现在,执行以下命令进行验证:
 cmd> gpg --verify package_name.asc

对于 Microsoft Windows,某些 GUI 工具也可用于完整性检查。其中最受欢迎的是Gpg4win。为了在 Linux 上执行相同的检查,我们有可用的命令,因为 RPM 包本身包含一个 GPG 签名和 MD5 校验和。执行以下命令以验证包:

cmd> rpm --checksig package_name.rpm

这种验证技术比 MD5 校验和更可靠,但它非常复杂,需要进行更多的完整性检查

MySQL 可用于 32 位和 64 位版本。在 Microsoft Windows 上安装 MySQL 8 有不同的方法。最常见的方法是使用安装程序,在本地系统上安装和配置 MySQL 8。

Before installing MySQL Community 8.0 Server, make sure that the Microsoft Visual C++ 2015 redistributable package has been installed on the system.

MySQL 8 要么作为标准应用程序运行,要么作为 Windows 服务运行。使用它,因为该服务使用户能够使用 Windows 服务管理工具控制和测量操作。每个平台有三种主要的分发格式:

  • 安装程序发行版:包括 MySQL 8 服务器以及 MySQL Workbench、MySQL for Excel、MySQL Notifier 等其他产品。安装程序对于将产品升级到其他版本也很有用。
  • 源代码分发:顾名思义,它包含所有源代码以及所有支持的文件。需要 Visual Studio 编译器才能使其可执行。
  • 二进制发行版:此发行版以 ZIP 文件格式提供。它包含除安装程序之外的所有必需文件。用户必须将文件解压缩到选定的目录中。

在微软 Windows 上安装 MySQL 8 之前,请考虑以下几点:

  • 我们知道,反病毒软件使用指纹技术,将快速改变的文件视为潜在的安全风险。在 MySQL 8 中,有一些目录包含 MySQL 8 相关数据和临时表信息,并且经常更新。因此,有可能反病毒软件会将这些文件视为垃圾邮件。这也会影响性能。

防病毒软件提供了排除某些目录的配置,因此建议排除 MySQL 8 数据目录和临时目录。默认情况下,MySQL 8 将临时数据存储到 Microsoft Windows 临时目录中。要在 MySQL 8 中更改此默认配置,请参考my.ini文件的tempdir参数。

  • 大表支持:在 NTFS 或任何新文件系统上使用 MySQL 8 来支持大小超过 4GB 的大表。对于这些较大的表,用户必须在创建表时定义MAX_ROWSAVG_ROW_LENGTH属性。

默认情况下,Microsoft Windows 会考虑 MySQL 8 安装的C:\Program Files目录。但是,我们可以在安装时选择目录。无论安装位置如何,安装后的子目录结构保持不变。有关 Microsoft 窗口布局,请参阅下表:

| 目录 | 目录的内容 | 注释 | | bin | mysqld服务器、客户端和工具 |   | | %PROGRAMDATA%\MySQL\MySQL Server 8.0\ | 日志文件、数据库 | Windows 系统变量%PROGRAMDATA%默认为C:\ProgramData | | examples | 示例程序和脚本 |   | | include | 包括(header文件) |   | | lib | 图书馆 |   | | share | 杂项支持文件,包括错误消息、字符集文件、示例配置文件、用于数据库安装的 SQL | |

You can learn more about this topic at https://dev.mysql.com/doc/refman/8.0/en/windows-installation-layout.html.

在 Windows 上安装 MySQL 8 时,包格式有多个可用选项。MySQL 提供了使用程序数据库pdb文件)调试安装过程的工具。这些文件在 ZIP 分发版中提供:

  • 安装包:这是一个基于向导的过程,易于使用。安装程序包仅适用于 32 位,但也可以在 64 位配置上安装 MySQL 8。不包含 MYSQL 的调试组件;我们必须以 ZIP 文件的形式单独下载它。安装程序包有两种不同的格式:
    • Web 社区:顾名思义,此社区可用于 Web 安装。这意味着使用 web 社区进行安装需要 Internet。其大小约为 19MB。附加版本将其名称定义为 MySQL 安装程序社区。
    • 社区:此包格式用于离线安装。它的大小约为 301 MB。其名称由附加版本定义为 MySQL 安装程序 web 社区。

安装程序是 MySQL 产品安装和升级最常见的方式。

  • Noinstall 归档:这是一个手动安装过程,包含不完整安装包的文件。由于这是一个手动过程,因此没有可用的 GUI。如果需要,用户必须手动安装和配置 MySQL 8 和其他产品。与安装程序不同,它以 ZIP 格式为 32 位和 64 位配置提供了两个不同的文件。

MySQL 8 安装程序主要用于降低安装过程的复杂性,以及对运行在 Windows 平台上的 MySQL 产品的管理。在产品清单中,我们可以考虑:

  • MySQL 服务器
  • MySQL 应用程序
  • MySQL 连接器
  • 文件和样品

MySQL 8 安装程序有两个版本:

如前所述,安装程序将引导用户完成向导。一旦我们在主机上启动安装程序,它将检测已经安装的 MySQL 产品,并将它们考虑在要管理的产品列表中。以下是安装程序初始设置所需的步骤:

  1. MySQL 安装程序授权和支持认证:这是用户在开始安装 MySQL 8 之前必须接受许可协议的步骤。接受条款后,用户可以添加、更新或删除 MySQL 产品。在商业版中,拆分产品需要凭据,并且必须与支持站点中用户的 Oracle 帐户匹配。

  2. 选择安装类型:这是用户必须选择 MySQL 产品进行安装的步骤。安装程序还提供了预定义设置选项,其中包含一组 MySQL 产品。因此,您可以根据需要灵活选择一种设置类型。以下是安装程序中提供的一些设置。

  3. 开发者默认:安装下载时选择的 MySQL 8 服务器版本:

    • MySQL 服务器
    • MySQL 外壳
    • MySQL 路由器
    • MySQL 工作台
    • 用于 VisualStudio 的 MySQL
    • MySQL for Excel
    • MySQL 通知程序
    • MySQL 连接器
    • MySQL 工具
    • MySQL 文档
    • MySQL 示例和示例
  4. 仅服务器:仅安装 MySQL 服务器。

  5. 仅客户端:与开发者默认设置类型相同,只是不包含 MySQL 8 服务器或添加到其中的任何特定于客户端的包。

  6. 完整:安装 MySQL 的所有可用产品,如mysql-servermysql-clientmysqladmin等。

  7. 自定义:此选项仅安装用户从目录中选择的产品。在这里,用户可以自由选择所需的产品,而不是安装完整的产品包。

  8. 路径冲突:当托管系统已经包含 MySQL 产品,并且用户试图在同一路径上安装该 MySQL 产品的不同版本时,安装程序将在向导中显示路径冲突错误。安装程序允许用户通过以下方式对路径冲突采取操作:

    • 使用向导中的“浏览”按钮选择其他位置
    • 通过自定义选择选择不同的安装类型或版本
    • 通过继续下一步覆盖现有文件夹
    • 取消向导步骤,删除现有产品,然后重新启动安装程序
  9. 检查要求:每个 MySQL 产品都附带一个package-rules.xml文件,包含所有必备软件列表。在初始设置期间,安装程序将检查所需软件的可用性,并在缺少要求时提示用户更新主机。

  10. MySQL 安装程序配置文件:安装程序配置文件位于C:\Program Files。以下是配置文件的详细信息:

| 文件或文件夹 | 说明 | 文件夹层次结构 | | 适用于 Windows 的 MySQL 安装程序 | 此文件夹包含运行 MySQL 安装程序和具有类似功能的命令行程序MySQLinstallerConsole.exe所需的所有文件。 | C:\Program Files (x86) | | Templates | Templates文件夹中每个版本的 MySQL 服务器都有一个文件。Templates文件包含用于动态计算某些值的键和公式。 | 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 |

参考文献:https://dev.mysql.com/doc/refman/8.0/en/mysql-installer-setup.html

MySQL 安装程序遵循每个产品的工作流程:

  1. 产品下载:安装程序将所有需要的产品 MSI 文件下载到Product Cache文件夹中。
  2. 产品安装:安装人员通过就绪|安装|安装|完成来管理每个产品的状态。
  3. 产品配置:本阶段对产品采用分步配置流程。安装程序将从就绪|配置更改状态。
  4. 安装完成:完成安装,用户可以在安装后开始使用应用程序。

使用安装程序,MySQL 8 中的高可用性实现有两个选项:

  • 独立 MySQL 服务器/经典 MySQL 复制默认):此选项手动配置多台服务器或使用最新版本的 MySQL 外壳配置InnoDB集群。
  • InnoDB 集群沙箱测试设置仅用于测试):也称为沙箱集群。此选项允许您在本地系统上创建一个InnoDB群集,仅用于测试。MySQL 安装程序工具栏为InnoDB集群中的多个实例提供配置。

群集节点在不同的端口上运行。配置完成后,单击 Summary 选项卡以获取每个集群的端口详细信息。

MySQL 安装程序为 MySQL 8 服务器执行一些基本配置,包括:

  • 安装程序将为 MySQL 8 服务器创建一个my.ini配置文件。文件内容将根据安装过程中选择的选项决定。
  • 默认情况下,安装程序将为 MySQL 8 服务器添加 Windows 服务。
  • MySQL 8 服务器所需的默认安装和数据路径将由安装程序提供。
  • 安装程序将为 MySQL 8 服务器创建一些具有角色和权限的用户帐户。它可以创建对 MySQL 8 服务器具有有限权限的 Windows 用户。
  • 使用 Show Advanced Options,MySQL 安装程序允许为日志选项定义自定义路径。例如,您可以为错误日志配置单独的路径、显示查询日志等等。

**MySQL 8 需要以下服务器配置:

  • 服务器配置类型:根据服务器配置类型,将系统资源分配给 MySQL 8 服务器
  • 开发:将主机视为个人工作站,将 MySQL 8 配置为使用最小内存量。
  • 服务器:作为服务器,其他一些应用程序也在机器上运行,因此它将配置中等容量的内存。
  • 专用:如果 MySQL 8 服务器有专用机器,此选项配置 MySQL 8 服务器可用内存的最大使用量。
  • 连接:此选项表示 MySQL 8 服务器的连接。以下选项可用:
    • TCP/IP:此选项启用与 MySQL 8 的 TCP/IP 连接。允许用户定义端口号以及网络访问端口的防火墙设置。
    • 命名管道:此选项允许您定义连接的管道名称。
    • 共享内存:可以定义 MySQL 8 服务器的内存名称。
  • 高级配置:此配置启用其他日志功能,这些功能将管理单个文件中的日志。允许用户为单个文件配置路径。例如,为二进制日志配置自定义路径。
  • MySQL 企业防火墙:此选项仅用于商业版。选中启用企业防火墙选项启用防火墙。
  • 账户和角色:账户和角色用于管理用户的访问权限。在安装过程中,MySQL 安装程序允许您设置根帐户密码和用户帐户。
    • Root 账号密码:安装过程中需要输入 Root 密码。安装程序将检查密码强度,并在违反预定义策略时发出警告。
    • MySQL 用户账号:这是一个可选步骤,新的 MySQL 用户账号使用现有的用户角色进行定义。预定义角色有自己的权限。
  • Windows 服务:MySQL 8 服务可以通过以下两种方式配置:
    • 配置为窗口服务:这是安装过程中选择的默认选项。它还提供了两个选项:
      • 系统启动时启动服务:默认选择此选项,系统启动时自动启动 MySQL 8 服务。
      • 方式运行窗口服务:此选项允许将用户帐户附加到 MySQL 8 服务。默认情况下,如果服务被视为网络服务,则选择系统帐户。对于自定义用户,它首先使用 Microsoft Windows 中的“本地安全策略”为用户设置权限。
    • 配置为可执行程序:在安装过程中取消选择 Windows 服务选项。
  • 插件和扩展:此步骤可用于新安装。如果用户希望从较旧的 MySQL 版本升级,那么用户需要在 MySQL 安装程序中选择重新配置选项。
  • 高级选项:要启用此选项,请在类型和联网步骤中选中显示高级配置复选框。此选项允许用户定义日志文件的特定路径,例如错误日志、常规日志、慢速查询日志和 bin 日志。
  • 应用服务器配置:用户在 MySQL 安装程序中完成所有配置后,点击执行按钮使其可用。按 Finish 按钮完成安装后,MySQL 安装程序和所有 MySQL 安装的产品都可以在 Windows 开始菜单中找到。

本节详细介绍了MySQL 安装程序如何处理产品目录和管理仪表盘。

产品目录是一个组件,其中列出了支持 Microsoft Windows 的所有已发布 MySQL 产品。MySQL 安装程序每天更新目录,该选项也可用于手动更新目录。产品目录执行以下操作来管理列表:

  • 定期填写可用产品列表
  • 检查主机中安装的产品更新

产品目录列出了开发版本、常规版本或任何次要版本中可用的所有产品。

MySQL 安装程序仪表板提供了在主机工作站上管理 MySQL 产品安装的工具。以下是使用仪表板管理产品的方法:

  • MySQL 安装程序提供了一种配置,可以在特定的时间间隔更新目录。用户可以通过配置启用或禁用自动更新。当新版本可用时,仪表板在产品级别显示一个特殊图标。
  • 用户可以通过以下操作管理产品:
    • 添加:用于下载和安装一个或多个产品。
    • 修改:用于添加或删除已安装产品中的功能。
    • 升级:用于升级产品。在可升级产品窗格中,确保选中产品级别的复选框进行升级。
    • 删除:用于从填充列表中卸载产品。
  • 仪表板提供了重新配置功能,用户可以在其中更改已配置的选项和值。应用更改后,MySQL 安装程序将停止 MySQL 8 服务器,并再次重新启动以使其可用。
  • 仪表板提供了无需升级即可下载产品目录的功能。此时不更新复选框可用于检查与产品相关的当前更改,无需下载。要执行此功能,请选中复选框并单击目录链接。

MySQL 安装程序包括**M**ySQLinstallerConsole.exe文件,该文件提供使用命令提示符执行命令的功能。默认情况下,此功能在 MySQL 安装程序的初始安装期间安装。有一些命令可用于管理 MySQL 产品。要查看这些命令的详细信息,请执行help命令。

要使用 ZIP 存档安装 MySQL 8,请执行以下步骤:

  1. 提取安装档案:在这一步中,选择一个特定的目录来提取已安装的 MySQL 8 档案。默认情况下,Microsoft Windows 会将其安装到c:\mysql位置。在安装过程中,确保登录用户具有管理权限。

Make sure no MySQL service is running during the installation of MySQL as a Window service.  During the command execution type -- install first and then specify --default –file option; otherwise, the mysqld.exe file will start the MySQL 8 server.

  1. 创建选项文件:选项文件是用户可以配置 MySQL 8 相关命令的地方。MySQL 8 在每次服务器启动时都会引用此文件。在 Microsoft Windows 中,当 MySQL 8 服务器启动时,它会在 Windows 目录和 MySQL 8 基本目录中搜索选项文件。主要使用my.inimy.cnf文件作为选项文件,它们是纯文本形式。

With the Windows operating system:

  1. 要获取Windows目录,请参考WINDIR环境变量。
  2. my.ini在 MySQL 服务器安装的默认位置可用。
  3. 选项文件中的路径名使用正斜杠而不是反斜杠指定。如果要使用反斜杠,请将其加倍。

如上所述,选项文件与普通文本文件相同;用户可以使用任何文本编辑器对其进行修改。考虑 MySQL 8 安装目录和数据目录位于不同位置的示例。在这种情况下,用户必须在mysqld部分的选项文件中提及两个目录的位置:

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

Remember, a ZIP archive does not initialize data directory. To initialize data directory and populate tables in the MySQL 8 system database, the user has to execute the initialize command. This process will be covered in the later section on post-installation.

  1. 选择服务器类型:MySQL 8 中的 Microsoft Windows 提供以下两台服务器:

| 二进制 | 说明 | | mysqld | 具有命名管道支持的优化二进制文件 | | mysqld 调试 | 类似于mysqld,但编译时进行了完全调试和自动内存分配检查 |

MySQL 8 supports TCP/IP on all Microsoft Windows platforms with pipes. But the default option is in normal mode because the pipes option has a performance impact. It slows down the overall performance. You can learn more about this at: https://dev.mysql.com/doc/refman/8.0/en/windows-select-server.html.

  1. 启动 MySQL 8 服务器:此步骤描述如何第一次启动 MySQL 8 服务器。它可以使用命令行或作为 Windows 服务启动。要使用命令行启动,请执行以下命令。假设 MySQL 8 安装在E:\MySQL\MySQL Server 8文件夹下:
 E:\> “E:\MySQL\MySQL Server 8\bin\mysqld”

执行上述命令后,用户可以看到一个消息列表,帮助用户识别是否存在错误。命令提示符中的最后两行显示如下。它们表示 MySQL 8 服务已启动并准备好接受服务器客户端请求:

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

用户可以省略错误日志控制台,因为 MySQL 8 在一个扩展名为.err的数据目录下的单独日志文件中维护日志。启动 MySQL 8 服务器时,用户每次都必须使用命令提示符执行相同的命令。要停止 MySQL 8 服务器,请执行以下命令:

 E:\> “E:\MySQL\MySQL Server 8\bin\mysqladmin” -u root shutdown

最初,安装 MySQL 8 时,不会设置根帐户密码。在首次启动 MySQL 8 服务器后,用户必须手动进行设置。设置密码的步骤在安装后一节中有详细说明。

The path of mysqld and mysqladmin may vary depending on the installation location of MySQL 8. If the password was set on the root user of the MySQL 8 server then execute the command with the -p option and provide a password for successful execution.

  1. 为 MySQL 8 设置环境变量。如前一节所述,我们已经用 MySQL 8 服务器安装的完整路径编写了该命令。为了简化此命令,我们必须在 Microsoft Windows 中通过执行以下步骤(在 Windows 10 中)来定义 MySQL 8 的环境变量:

    1. 右键点击我的电脑并选择属性

      1. 单击高级系统设置。
      2. 单击右下方的环境变量按钮。
      3. 转到系统变量部分并找到路径变量。
      4. 选择路径变量并单击编辑按钮。
      5. 将打开一个新对话框;点击新建按钮,输入 MySQL 8 服务器安装到bin文件位置的路径。例如,E:\MySQL\MySQL Server 8\bin
      6. 按所有相关对话框中的“确定”按钮,在 Windows 中应用此更改。

应用环境变量后,用户可以在命令提示符下执行任何 MySQL 命令,而无需给出 MySQL 8 的完整路径。

  1. 将 MySQL 8 作为 Windows 服务启动:建议将 MySQL 8 作为 Windows 服务使用,因为它会在 Windows 启动时启动,在 Windows 停止时停止。在这种情况下,不需要显式启动 MySQL 8 服务。使用 Microsoft Windows 服务工具管理 MySQL 8 服务。要将 MySQL 服务器作为服务安装,请使用以下命令:
 E:\> “E:\MySQL\MySQL Server 8\bin\mysqld” --install

此命令具有以下附加参数选项:

  • 如果我们不定义服务名称,那么命令将考虑默认服务为{ Tyt0} MySQL OutT1。

  • 使用-- default -file参数指定包含服务名称的选项文件名

* 用户还可以使用服务名称后面的--local-service选项

**使用以下命令将 MySQL 服务设置为窗口服务,并将文件my-opts.conf作为选项文件引用 MySQL 8 配置:

E:\> “E:\MySQL\MySQL Server 8\bin\mysqld” --install MySQL --defaults-file=E:\my-opts.cnf

到目前为止,我们已经将 MySQL 8 服务作为 Windows 服务进行了讨论,但是有一个命令可以使用--install-manual选项在不使用 Windows 服务的情况下启动 MySQL 8。要删除 MySQL 8 服务,请使用--remove命令,如下所示:

E:\> “E:\MySQL\MySQL Server 8\bin\mysqld” --install-manual
E:\> "E:\MySQL\MySQL Server 8\bin\mysqld" --remove

对于 Linux 上的 MySQL 8 安装,可以使用各种解决方案。用户可以根据自己的需求选择任何发行版。以下是不同的分布,其中详细描述了三种分布:

  • 使用Yum存储库进行安装
  • 使用APT存储库进行安装
  • 使用SLES存储库进行安装
  • 使用RPM包进行安装
  • 使用Debian包进行安装
  • 使用 Docker 安装
  • 使用本机软件存储库进行安装
  • 使用 Juju 安装

使用Yum存储库执行以下步骤安装 MySQL 8:

  1. 下载Yum存储库 http://dev.mysql.com/downloads/repo/yum/ 链接。
  2. 为您的安装选择 MySQL 包。
  3. 执行安装命令,将 MySQLYum存储库添加到您的local存储库中:
 shell> sudo yum localinstall package_name.rpm
 shell> yum repolist enabled | grep "mysql.*-community.*"

package_name替换为 RPM 包的实际名称。安装完成后,执行第二个命令检查Yum存储库是否已正确安装。

  1. 选择发布系列:MySQL-Yum 存储库包含用于安装的各种版本系列。执行以下命令以检查可用系列的列表:
 shell> yum repolist all | grep mysql

在 MySQL-Yum 存储库中,最新的 GA 系列在默认情况下已启用安装,但除此之外,其他开发系列也处于禁用状态。对于 development series 安装,执行以下两个命令以禁用 GA 版本和启用 require development series:

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

定义发布系列的另一种方法是使用存储库文件中的手动条目。例如,在/etc/yum.repos.d/mysql-community.repo文件中添加以下条目:

 mysql80-community]
 name=MySQL 8.0 Community Server
 baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
 enabled=1

此处,enabled=1表示启用此系列,enabled=0表示禁用此系列。Yum 一次只允许为一个版本启用一个子存储库;如果启用了多个版本系列,则 Yum 存储库将仅选择最新的系列。保存配置文件中的更改后,执行以下命令以检查是否选择了正确的子存储库:

 shell> yum repolist enabled | grep mysql
  1. 安装 MySQL 8:执行以下命令:
 shell> sudo yum install mysql-community-server

它将安装 MySQL 8 服务器及其所有依赖项,例如客户端、客户端的字符集以及所需的库。

  1. 启动 MySQL 8 服务器:第一条命令启动 MySQL 服务,第二条命令显示 MySQL 服务的当前状态:
 shell> sudo service mysqld start 
 shell> sudo service mysqld status

在初始启动期间,将执行以下任务:

  • 服务器已初始化
  • SSL 证书和密钥文件在数据目录中生成
  • 插件名称validate_password_plugin已安装并启用
  • 将创建一个超级帐户

RPM 包可从 MySQL 8 的 Yum 存储库和 SLES 存储库获得。这是 MySQL 8 的推荐安装方式。RPM 包遵循packagename-version-distribution-arch.rpm语法,其中 distribution 和 arch 分别表示 Linux 发行版和处理器。RPM包是所有必需包的捆绑包,它们相互依赖。RPM 包遵循与 Yum repository 安装中讨论的相同步骤。在基于 RPM 的系统中,MySQL 服务不会自动启动。要手动启动,请执行以下命令:

shell> sudo service mysqld start

与其他安装一样,RPM 软件包安装也会在以下路径的系统中创建文件和目录:

| 文件或资源 | 位置 | | 客户端程序和脚本 | /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 | | 安全文件的值 | /var/lib/mysql-files | | 系统 Vinit脚本 | 对于 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 | | Socket | /var/lib/mysql/mysql.sock | | 密钥环目录 | /var/lib/mysql-keyring | | Unix 手册页 | /usr/share/man | | 包括(header文件) | /usr/include/mysql | | 图书馆 | /usr/lib/mysql | | 其他支持文件(例如,错误消息和字符集文件) | /usr/share/mysql |

DebianMySQL APT 存储库或 MySQL 开发者专区的下载区提供了软件包。每个 MySQL 组件都有自己的Debian安装包,但是准备了一个 tarball 包,将不同的Debian包组合成一个包。tarball 命名约定为mysql-server_MVER-DVER_CPU.deb-bundle.tar,,其中MVER表示 MySQL 版本,DVER表示 Linux 发行版本,CPU 表示处理器。要使用Debian包安装 MySQL 8,请执行以下步骤:

  1. 从 MySQL 站点下载所需的 tar 包。
  2. 使用以下命令解包:
 shell> tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
  1. 可能需要Libaio1库,执行库安装命令:
 shell> sudo apt-get install libaio1
  1. 执行 MySQL 服务器预配置命令:
 shell> sudo dpkg-preconfigure mysql-community-server_*.deb

这是安装前执行的流程,适用于Debian包集和使用debconf及其配置脚本检查系统的其他包。在此过程中,系统将询问 MySQL 8 安装的 root 用户密码。

  1. 安装 MySQL 8 安装所需的依赖项:
 shell>sudo apt-get -f install

MySQL 8 配置文件在Debian包的以下路径下可用:

  • 配置文件存储在/etc/mysql
  • 数据目录存储在/var/lib/mysql
  • 二进制文件、库和头文件存储在/user/binuser/sbin

安装后是一个描述用户在安装 MySQL 8 后必须执行的基本步骤或配置的过程。

在前面的章节中,我们已经看到了不同的 MySQL 8 安装方法。有些方法会自动为 MySQL 8 创建数据目录。对于通用二进制发行版和源发行版,必须创建数据目录。数据目录初始化由以下两个命令之一执行:

E:\> bin\mysqld –-initialize 
E:\> bin\mysqld --initialize-insecure

可以根据用户的要求选择这些命令中的任何一个,以生成随机初始密码或不生成初始密码。用户可以使用这两个命令,而不考虑数据目录初始化的平台。初始化是生成随机初始根密码的一种方式。在initialize-insecure的情况下,不生成密码。

另一个选项是使用命令行参数指定安装目录和数据目录,如以下命令所示:

E:\> bin\mysqld --initialize --basedir E:\mysql --datadir :\mydata\data

用户还可以在单独的文件中指定这些目录,称为Option文件,在mysqld参数下。本章的Option文件部分详细描述了该配置。当用户执行任一命令时,mysqld在执行过程中执行以下步骤:

  1. 它检查数据目录是否存在

  2. MySQL 8 服务器创建一个系统数据库及其表、授权表、帮助表和时区表

  3. 它使用InnoDB表的数据结构初始化系统表空间

  4. 将创建root@localhost超级用户帐户和其他保留帐户

**# 保护初始 MySQL 帐户的安全

本节介绍如何在工作站上第一次执行 MySQL 8 服务器时为根帐户分配密码。当用户在 Windows 中使用安装程序或在 Linux 中使用Debian包安装 MySQL 8 时,安装过程提供了输入密码并自行将该密码分配给根帐户的选项。但在RPM包中,会为根帐户生成随机密码,并在安装过程中写入服务器日志文件。初始根帐户可能有密码,也可能没有密码。要在初始阶段分配密码,请使用以下任一过程:

  • 如果根帐户具有随机密码:
    1. 查看服务器日志文件以获取自动生成的密码。
    2. 通过执行以下命令,使用自动生成的密码连接到 MySQL 8 服务器:
 shell> mysql -u root -p
 Enter password: (enter the random root password here) 
  • root帐户设置新密码:
 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';
  • 如果根帐户没有密码:

    1. 无需密码即可连接 MySQL 8 服务器:
 mysql -u root

2.为root账户设置新密码:

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';

在分配了新密码之后,无论何时您想要连接 MySQL 8,都必须使用新密码。

本节介绍如何启动 MySQL 8 服务器以及如何在启动过程中排除问题。在 Linux 系统上成功安装 MySQL 8 服务器后,执行以下命令启动 MySQL 8 服务:

shell> sudo service mysqld start

要详细检查服务是否已启动,请参阅日志文件。您可以使用 status 命令检查 MySQL 8 服务的状态:

shell> sudo service mysqld status

在收到服务启动/运行的消息后,您可以使用以下命令连接 MySQL 8:

shell> mysql -uroot -p

前面的命令提示输入密码,因此输入密码并按回车键。将显示 MySQL 提示符,您可以输入mysql命令执行。在执行上述命令的过程中,可能会出现一些常见问题,因此我们将在这里提出以下故障排除建议:

  1. 检查log文件以查找服务启动期间发生的确切错误。如前一节所述,error文件和log文件位于数据目录下。其命名约定为host_name.errhost_name.log。通过读取文件的最后几行,可以确定在执行最后一个命令期间发生的问题。

  2. 检查所需的端口/套接字是否可用。以下错误将指示所需的端口和套接字不可用,这意味着它们正在与其他程序一起使用。要识别此问题,请通过禁用服务来跟踪所有问题。另一个原因是防火墙设置阻止对所需端口的访问,因此请修改防火墙设置并授予对所需端口的权限:

    • 无法启动服务器:在 TCP/IP 端口上绑定:该地址已在使用中
    • 无法启动服务器:在 Unix 套接字上绑定
  3. 建议在Option文件中定义具体参数。如果参数未定义到文件中,那么 MySQL 8 将考虑默认参数,因此在使用 MySQL 8 之前引用所有可用的参数。

  4. 验证是否正确定义了data目录路径和权限。此目录用作 MySQL 8 的当前目录。要查找数据目录当前设置的路径,请使用--verbose and --help命令执行mysqld命令。如果data目录位于 MySQL 安装目录以外的其他位置,则使用--datadir选项和mysqld命令。对于权限,您将得到一个错误代码 13,表示权限被拒绝错误。要解决此问题,请更改所需文件和文件夹的权限。另一种方法是使用 root 用户登录,但这在所有情况下都是不可能的,因此建议使用第一种方法来解决权限问题。

执行上述步骤后,现在您的 MySQL 8 服务已启动,并已连接到指定用户。现在,通过执行以下基本命令来检查 MySQL 8 服务器是否正常工作:

shell> bin/mysqladmin version

此命令列出与已安装的 MySQL 服务器相关的所有信息,其中包含其版本详细信息、协议版本等。连接 MySQL 8 后执行以下命令,以检查是否已从服务器正确检索到信息:

mysql>mysqlshow
mysql>mysqlshow mysql

第一个命令显示服务器中可用的数据库列表。列表可能因系统而异,但列表中必须有mysqlinformation_schema。第二个命令列出在mysql数据库下创建的所有表。

在以前版本的 MySQL 中,数据字典存储在基于文件的系统中,而在 MySQL 8 中,数据字典存储在数据字典结构中。因此,升级过程将把基于文件的结构移动到数据字典结构中。MySQL5.7GA 版本可以升级到 MySQL8,也就是说 5.7.9 或更高版本。对于 5.7 的非 GA 版本,升级是不可能的。在开始升级过程之前,需要了解以下几点。

升级使用两种方法,这两种方法的实施方法不同。让我们详细讨论这些方法。

顾名思义,这是一个用新版本替换 MySQL 现有旧版本包的过程。启动前,确保旧服务器已停止,更换包后,使用 MySQL 升级在现有数据目录上重新启动 MySQL 8 服务器。

执行以下就地升级步骤:

  1. 使用加密的InnoDB表空间,使用以下命令旋转主密钥:
 ALTER INSTANCE ROTATE INNODB MASTER KEY;
  1. 使用innodb_fast_shutdown命令配置停机参数:
 SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
 SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
  1. 使用以下命令关闭旧的 MySQL 版本:
 mysqladmin -u root -p shutdown
  1. 这是一个升级过程,用户将用新的 MySQL 8 包替换旧包。
  2. 使用现有的data目录启动 MySQL 8 服务器。

在服务器启动时,它将检查data字典表。如果它们不存在,那么服务器将在data目录中创建表,并使用其正常启动顺序填充元数据和进程。如果这些步骤成功执行,则服务器通过创建backup_metadata_57目录执行清理。此外,服务器将事件和进程表重命名为event_backup_57proc_backup_57。如果此步骤失败,服务器将恢复所有更改。

  1. MySQL 8 启动成功完成后,执行mysql_upgrade
 mysql_upgrade -u root -p
  1. 升级后,关闭并重新启动服务器,以检查是否已应用所有更改。

导出或转储旧 MySQL 版本。安装新的 MySQL 8 版本,并通过 MySQL 升级将转储文件加载到新的 MySQL 8 版本中。执行以下步骤以应用逻辑升级:

  1. 使用mysqldump命令导出数据:
 mysqldump -u root -p --add-drop-table --routines --events --all-databases   --
          force > data-for-upgrade.sql

The--routines--events选项用于在转储文件中包括存储的例程和事件,并明确定义这些选项以获得效果。

  1. 关闭旧的 MySQL 服务器。
  2. 安装 MySQL 8 的新版本。
  3. 初始化data目录:
 mysqld --initialize --datadir=/path/to/8.0-datadir
  1. 使用新的data目录启动 MySQL 8 服务器:
 mysqld_safe --user=mysql --datadir=/path/to/8.0-datadir 
  1. 将 SQL 转储文件加载到新的MySQL数据库中:
 mysql -u root -p --force < data-for-upgrade.sql
  1. 使用以下命令升级 MySQL:
 mysql_upgrade -u root -p

在开始级配之前,进行以下检查,以避免后期出现故障:

  1. 执行以下命令以检查没有绝对数据类型或函数:
 mysqlcheck -u root -p--all-databases--check-upgrade
  1. 使用以下命令检查本机分区支持:
 SELECT TABLE_SCHEMA, TABLE_NAME
 FROM INFORMATION_SCHEMA.TABLES
 WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
 AND CREATE_OPTIONS LIKE '%partitioned%';

此命令将列出使用不支持本机分区的存储引擎的表。执行上述查询后,如果找到任何表,请删除该表上的分区并更改存储引擎,如以下命令所示:

 ALTER TABLE table_name ENGINE = INNODB;
 ALTER TABLE table_name REMOVE PARTITIONING;
  1. 确保 MySQL 5.7 不包含任何在 MySQL 8 中用作数据字典的表。
  2. 使用以下代码检查外键约束名称是否包含超过 64 个字符:
 SELECT CONSTRAINT_SCHEMA, TABLE_NAME, CONSTRAINT_NAME
 FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
 WHERE LENGTH(CONSTRAINT_NAME) > 64;
  1. 确保 MySQL 5.7 不包含 MySQL 8 中不可用的功能,例如:
    • 如果一个表使用了 MySQL 8 不支持的存储引擎,那么就用支持的存储引擎进行了修改
    • 使用 MySQL 8 中不可用的选项或变量的配置更改

降级是升级的反向过程,我们将从较高版本的 MySQL 迁移到较低版本的 MySQL。在本节中,我们将介绍如何从 MySQL 8 降级到 MySQL 5.7。不支持版本跳过的降级意味着不支持从 MySQL 8 降级到 MySQL 5.6。在支持版本跳过的同一系列中,意味着您可以通过跳过 MySQL 8.y 版本从 MySQL 8.z 降级到 MySQL 8.x。首先,我们将解释在开始降级之前需要理解的一些基本点。

就地降级意味着关闭新版本的 MySQL 8,用旧版本的 MySQL 替换其二进制文件或包。重新启动旧版本意味着在现有数据目录上重新启动 MySQL 5.7。同一系列中的 GA 版本之间支持此降级方法。对就地降级执行以下步骤:

  1. 关闭 MySQL 8 的更新版本。
  2. 关机后,从data目录中删除InnoDB重做日志文件,以避免降级问题:
 rm ib_logfile*
  1. 将较旧版本的 MySQL 替换为较新版本的二进制文件或包。
  2. 通过指定data目录,使用以下命令启动 MySQL 的降级版本:
 mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
  1. 执行mysql_upgrade命令:
 mysql_upgrade -u root -p
  1. 关闭并重新启动 MySQL 服务器,检查是否已应用所有更改。

For MySQL installation based on APT, SLES, and the Yum repository installations, in-place downgrades are not supported

在新版本中使用mysqldump转储所有表。使用新数据库安装 MySQL 8 的新版本,并将旧版本转储加载到新数据库中。同样的 GA 发布系列和发布级别也支持这种降级。MySQL 8.0 到 5.7 的降级支持使用逻辑降级方法

要执行逻辑降级,请执行以下步骤:

  1. 使用以下代码转储数据库:
 mysqldump -u root -p --add-drop-table --routines --events
 --all-databases --force > data-for-downgrade.sql
  1. 关闭 MySQL 服务器,如下图:
 mysqladmin -u root -p shutdown
  1. 使用以下代码将新的data目录初始化为较旧的 MySQL 版本:
 mysqld --initialize --user=mysql
  1. 用新的data目录启动旧的 MySQL,代码如下:
 mysqld_safe --user=mysql --datadir=/path/to/new-datadir
  1. 将转储加载到较旧的 MySQL 服务器中,如下所示:
 mysql -u root -p --force < data-for-upgrade.sql
  1. 执行mysql_upgrade
 mysql_upgrade -u root -p
  1. 使用以下代码重新启动服务器以应用所有更改:
 mysqladmin -u root -p shutdown
 mysqld_safe --user=mysql --datadir=/path/to/new-datadir

本节介绍降级前需要用户手动执行的一些更改:

  • 系统表更改:MySQL 5.7 为系统表管理单个表空间,而在 MySQL 8 中,系统表被迁移到一个名为mysql.ibd的表空间文件中。因此,在降级到 MySQL 5.7 之前,使用以下命令将系统表移回各个表空间文件:
 ALTER TABLE mysql.columns_priv TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.component TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.db TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.default_roles TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.engine_cost TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.func TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.general_log TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.global_grants TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.gtid_executed TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.help_category TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.help_keyword TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.help_relation TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.help_topic TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.innodb_index_stats TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.innodb_table_stats TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.plugin TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.procs_priv TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.proxies_priv TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.role_edges TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.server_cost TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.servers TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.slave_master_info TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.slave_relay_log_info TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.slave_worker_info TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.slow_log TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.tables_priv TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.time_zone TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.time_zone_leap_second TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.time_zone_name TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.time_zone_transition TABLESPACE=innodb_file_per_table; 
        ALTER TABLE mysql.time_zone_transition_type TABLESPACE=innodb_file_per_table;          
        ALTER TABLE mysql.user TABLESPACE=innodb_file_per_table;

在 MySQL 8.0.2 中,六个系统表的存储引擎从 MyISAM 变为 InnoDB。他们的名字是columns_privdbprocs_privtables_privuser。因此,在降级之前,通过执行以下命令更改这些表的存储引擎。对其余表格应用相同的命令:

 ALTER TABLE mysql.columns_priv ENGINE='MyISAM' 
          STATS_PERSISTENT=DEFAULT

在 MySQL 8.0.2 中,mysql.usertable通过添加两个表进行了更改,因此,在降级到 MySQL 5.7 之前,请从表中删除这些列:

 ALTER TABLE mysql.user drop Create_role_priv;
 ALTER TABLE mysql.user drop Drop_role_priv;
  • InnoDB 变更:在开始就地降级之前,使用innodb_fast_shutdown选项关闭 MySQL。使用innodb_fast_shutdown=0关闭服务器。建议就地降级时删除重做日志。

选择合适的软件及其版本进行开发是一个重要的阶段,对吗?在本章中,我们了解了如何通过理解 MySQL 8 的版本模式来选择适当的版本。我们还学习了在 Microsoft Windows 中使用安装程序和命令行安装 MySQL 8 的执行步骤。对于 Linux 平台,我们使用 Yum 存储库、RPM 包和 Debian 包安装了 MySQL 8。安装后描述了从 MySQL 8 开始的基本配置。最后,我们解释了如何通过执行步骤从 MySQL 8 升级和降级。

在下一章中,我们将了解 MySQL 8 可用的各种程序和工具。它主要关注如何将这些程序用于 MySQL 8 以及命令行执行。**

教程来源于Github,感谢apachecn大佬的无私奉献,致敬!

技术教程推荐

性能测试实战30讲 -〔高楼〕

人人都能学会的编程入门课 -〔胡光〕

张汉东的Rust实战课 -〔张汉东〕

操作系统实战45讲 -〔彭东〕

大数据经典论文解读 -〔徐文浩〕

编程高手必学的内存知识 -〔海纳〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

AI绘画核心技术与实战 -〔南柯〕

手把手带你写一个 MiniTomcat -〔郭屹〕