MySQL™-参考手册安装后设置和测试

39次阅读

共计 3547 个字符,预计需要花费 9 分钟才能阅读完成。

安装后设置和测试

本节讨论安装 MySQL 后应执行的任务:

  • 如有必要,初始化数据目录并创建 MySQL 授权表,对于某些 MySQL 安装方法,可以自动为你完成数据目录初始化:

    • MySQL 安装程序执行的 Windows 安装操作。
    • 使用 Oracle 的服务器 RPM 或 Debian 发行版在 Linux 上安装。
    • 在许多平台上使用原生打包系统进行安装,包括 Debian Linux、Ubuntu Linux、Gentoo Linux 等。
    • 使用 DMG 发行版在 macOS 上安装。
    • 对于其他平台和安装类型,你必须手动初始化数据目录,这些包括在 Unix 和类 Unix 系统上从通用二进制和源代码发行版安装,以及从 Windows 上的 ZIP Archive 包安装。
  • 启动服务器并确保可以访问它。
  • 如果在数据目录初始化期间尚未完成密码,则将密码分配给授权表中的初始 root 帐户,密码可防止未经授权访问 MySQL 服务器。
  • (可选)安排服务器在系统启动和停止时自动启动和停止。
  • (可选)填充时区表以启用对指定时区的识别。

初始化数据目录

安装 MySQL 后,必须初始化数据目录,包括 mysql 系统模式中的表:

  • 对于某些 MySQL 安装方法,数据目录初始化是自动的。
  • 对于其他安装方法,你必须手动初始化数据目录,这些包括在 Unix 和类 Unix 系统上从通用二进制文件和源代码发行版安装,以及从 Windows 上的 ZIP Archive 包安装。

本节描述如何为非自动初始化数据目录的 MySQL 安装方法手动初始化数据目录,对于某些建议的命令,它们可以测试服务器是否可访问且工作正常。

在 MySQL 8.0 中,默认的身份验证插件已从 mysql_native_password 更改为 caching_sha2_password,而'root'@'localhost' 管理帐户默认使用caching_sha2_password

数据目录初始化概述

在此处显示的示例中,服务器旨在在 mysql 登录帐户的用户 ID 下运行,如果帐户不存在,请创建帐户(请参阅创建 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 后才需要进行数据目录初始化,但是,初始化数据目录的命令不会覆盖任何现有的 mysql 模式表,因此在任何情况下都可以安全运行。

  4. 如果要部署自动支持安全连接的服务器,请使用 mysql_ssl_rsa_setup 实用程序创建默认 SSL 和 RSA 文件:

    bin/mysql_ssl_rsa_setup
  5. 如果没有任何选项文件,服务器将以其默认设置启动,要显式指定 MySQL 服务器在启动时应使用的选项,请将它们放在选项文件中,例如 /etc/my.cnf/etc/mysql/my.cnf。例如,你可以使用选项文件来设置 secure_file_priv 系统变量。
  6. 数据目录初始化在 mysql 模式中创建时区表,但不填充它们。

数据目录初始化过程

将位置更改为 MySQL 安装的顶级目录,通常是/usr/local/mysql(根据需要调整系统的路径名):

cd /usr/local/mysql

要初始化数据目录,请使用 --initialize--initialize-insecure选项调用 mysqld,取决于你是希望服务器为'root'@'localhost' 帐户生成随机初始密码,还是创建没有密码的帐户:

  • 使用 --initialize 用于“默认安全”安装(即包括生成随机初始 root 密码),在这种情况下,密码标记为已过期,你需要选择一个新密码。
  • 使用 --initialize-insecure,不会生成root 密码,这是不安全的。假设你在将服务器投入生产使用之前及时为帐户分配密码。

服务器将任何消息(包括任何初始密码)写入其标准错误输出,这可能会重定向到错误日志,因此,如果你没有在屏幕上看到消息,请查看此处。在 Windows 上,使用 --console 选项将消息定向到控制台。

在 Unix 和类 Unix 系统上,重要的是数据库目录和文件归 mysql 登录帐户所有,以便服务器在以后运行时对它们具有读写权限。要确保这一点,请从系统 root 帐户启动 mysqld 并包含 --user 选项,如下所示:

bin/mysqld --initialize --user=mysql
bin/mysqld --initialize-insecure --user=mysql

或者,以 mysql 身份登录时执行 mysqld,在这种情况下,你可以省略命令中的--user 选项。

在 Windows 上,使用以下命令之一:

bin\mysqld --initialize --console
bin\mysqld --initialize-insecure --console

如果缺少必需的系统库,数据目录初始化可能会失败,例如,你可能会看到如下错误:

bin/mysqld: error while loading shared libraries:
libnuma.so.1: cannot open shared object file:
No such file or directory

如果发生这种情况,你必须手动或使用系统的软件包管理器安装缺少的库,然后重试数据目录初始化命令。

如果 mysqld 无法识别安装目录或数据目录的正确位置,则可能需要指定其他选项,例如 --basedir--datadir,例如(在一行中输入命令):

bin/mysqld --initialize --user=mysql
  --basedir=/opt/mysql/mysql
  --datadir=/opt/mysql/mysql/data

或者,将相关选项设置放在选项文件中,并将该文件的名称传递给mysqld,对于 Unix 和类 Unix 系统,假设选项文件名是/opt/mysql/mysql/etc/my.cnf,将这些行放在文件中:

[mysqld]
basedir=/opt/mysql/mysql
datadir=/opt/mysql/mysql/data

然后按如下方式调用 mysqld(首先使用--defaults-file 选项在单行上输入命令):

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

数据目录初始化期间的服务器操作

服务器执行的数据目录初始化序列不能替代 mysql_secure_installationmysql_ssl_rsa_setup执行的操作。

当使用 --initialize--initialize-insecure选项调用时,mysqld在数据目录初始化序列期间执行以下操作:

  1. 服务器检查数据目录是否存在,如下所示:

    • 如果不存在数据目录,则服务器会创建它。
    • 如果数据目录存在但不为空(即,它包含文件或子目录),则在生成错误消息后服务器退出:

      [ERROR] --initialize specified but the data directory exists. Aborting.

      在这种情况下,请删除或重命名数据目录,然后重试。
      如果每个条目的名称都以句点(.)开头,则允许现有数据目录为非空。

  2. 在数据目录中,服务器创建 mysql 系统模式及其表,包括数据字典表、授权表、时区表和服务器端帮助表。
  3. 服务器初始化管理 InnoDB 表所需的系统表空间和相关数据结构。

正文完
 0