4.4.2 mysql_install_db-初始化 MySQL 数据目录

Note

从 MySQL 5.7.6 开始不推荐使用mysql_install_db,因为它的功能已集成到 MySQL 服务器mysqld中。要初始化 MySQL 安装,请使用--initialize--initialize-insecure选项调用mysqld。有关更多信息,请参见第 2.10.1 节“初始化数据目录”mysql_install_db将在将来的 MySQL 版本中删除。

mysql_install_db处理必须使用 MySQL 服务器mysqld才能使用的初始化任务:

  • 它初始化 MySQL 数据目录并创建它包含的系统 table。

  • 它初始化 ManagementInnoDBtable 所需的system tablespace和相关数据结构。

  • 它加载服务器端帮助 table。

  • 它安装sys模式。

  • 它创建一个 Management 帐户。较旧的mysql_install_db版本可能会创建匿名用户帐户。

Secure-by-Default Deployment

当前版本的mysql_install_db产生的 MySQL 部署默认情况下是安全的,具有以下 Feature:

  • 将使用随机生成的密码创建一个名为'root'@'localhost'的 Management 帐户,该密码标记为已过期。

  • 没有创建匿名用户帐户。

  • 没有创建所有用户均可访问的test数据库。

  • --admin-xxx选项可用于控制 Management 帐户的 Feature。

  • --random-password-file选项可用于控制随机密码的写入位置。

  • --insecure选项可用于禁止生成随机密码。

如果mysql_install_db生成一个随机的 Management 密码,它将密码写入文件并显示文件名。密码条目包括一个时间戳,以指示该密码是何时被写入的。默认情况下,运行脚本的有效用户的主目录中的文件为.mysql_secret.mysql_secret是使用模式 600 创建的,仅对其创建的 os 用户可以访问。

Important

mysql_install_db为 Management 帐户生成随机密码时,必须在运行mysql_install_db之后启动服务器,使用 Management 帐户连接并写入.mysql_secret文件的密码,然后指定新的 Management 密码。在完成此操作之前,Management 帐户不能用于其他任何用途。要更改密码,可以使用SET PASSWORD语句(例如,对于mysqlmysqladminClient 端)。重置密码后,删除.mysql_secret文件;否则,如果运行mysql_secure_installation,则该命令可能会看到该文件并再次使root密码过期,这是确保安全部署的一部分。

Invocation Syntax

将位置更改为 MySQL 安装目录,并使用以下调用语法:

shell> bin/mysql_install_db --datadir=path/to/datadir [other_options]

--datadir选项是必需的。 mysql_install_db创建数据目录,该目录必须不存在:

由于 MySQL 服务器mysqld稍后运行时必须访问数据目录,因此您应该从将用于运行mysqld的系统帐户中运行mysql_install_db,或者以root的身份运行它并指定--user选项以指示用户名mysqld将作为。如果mysql_install_db没有为安装目录使用正确的位置,则可能需要指定其他选项,例如--basedir。例如:

shell> bin/mysql_install_db --user=mysql \
         --basedir=/opt/mysql/mysql \
         --datadir=/opt/mysql/mysql/data

Note

mysql_install_db设置InnoDB system tablespace之后,对某些 table 空间 Feature 的更改要求设置一个全新的instance。这包括系统 table 空间中第一个文件的文件名和撤消日志数。如果不想使用默认值,请在运行mysql_install_db之前确保innodb_data_file_pathinnodb_log_file_size配置参数的设置在 MySQL configuration file中已经存在。还要确保根据需要指定其他影响InnoDB文件创建和位置的参数,例如innodb_data_home_dirinnodb_log_group_home_dir

如果这些选项在您的配置文件中,但是该文件不在默认情况下 MySQL 读取的位置,请在运行mysql_install_db时使用--defaults-extra-file选项指定文件位置。

Note

如果在执行安装时设置了自定义TMPDIR环境变量,并且无法访问指定的目录,则mysql_install_db可能会失败。如果是这样,请取消设置TMPDIR或将TMPDIR指向系统临时目录(通常为/tmp)。

创建 Management 帐户

mysql_install_db默认创建一个名为'root'@'localhost'的 Management 帐户。

mysql_install_db提供的选项使您能够控制 Management 帐户的多个方面:

有关更多信息,请参见这些选项的描述。

mysql_install_dbmysql.user系统 table 行分配一个非空的plugin列值以设置身份验证插件。默认值为mysql_native_password。可以使用--admin-auth-plugin选项更改该值。

默认的 my.cnf 文件

mysql_install_db不创建默认的my.cnf文件。

Note

从 MySQL 5.7.18 开始,my-default.cnf不再包含在分发包中或由分发包安装。

除一个 exception,默认选项文件中的设置被 Comments 且没有任何效果。唯一的 exception 是该文件将sql_mode系统变量设置为NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES。此设置产生的服务器配置会导致错误,而不是在修改事务 table 的操作中出现不良数据警告。参见第 5.1.10 节“服务器 SQL 模式”

Command Options

mysql_install_db支持以下选项,可以在命令行或选项文件的[mysql_install_db]组中指定这些选项。有关 MySQL 程序使用的选项文件的信息,请参见第 4.2.2.2 节“使用选项文件”

table4.7 mysql_install_db 选项

Option NameDescription
--admin-auth-pluginManagement 帐户身份验证插件
--admin-hostManagement 帐户名称主机部分
--admin-require-ssl需要 SSL 来 Management 帐户
--admin-userManagement 帐户名称用户部分
--basedir基本目录的路径
--builddir构建目录的路径(用于源代码外构建)
--datadir数据目录的路径
--defaults读取默认选项文件
--defaults-extra-file除常规选项文件外,还读取命名的选项文件
--defaults-file只读命名的选项文件
--extra-sql-file引导期间执行的可选 SQL 文件
--help显示帮助信息并退出
--insecure不生成 Management 帐户随机密码
--lc-messages错误消息的语言环境
--lc-messages-dir安装错误消息的目录
--login-file用于读取登录路径信息的文件
--login-path从.mylogin.cnf 中读取登录路径选项
--mysqld-filemysqld 二进制文件的路径
--no-defaults不读取选项文件
--random-password-file在其中写入 Management 帐户随机密码的文件
--skip-sys-schema不要安装或升级 sys 模式
--srcdir供内部使用
--user用来执行 mysqld 的 os 用户
--verboseVerbose mode
--version显示版本信息并退出

显示帮助消息并退出。

用于 Management 帐户的身份验证插件。默认值为mysql_native_password

用于 Management 帐户名的主机部分。默认值为localhost。如果还指定了--login-path,则忽略此选项。

是否要求 Management 帐户使用 SSL。默认是不要求它。启用此选项后,mysql_install_db用于创建帐户的语句包含REQUIRE SSL子句。因此,Management 帐户在连接到服务器时必须使用安全连接。

用于 Management 帐户名的用户部分。默认值为root。如果还指定了--login-path,则忽略此选项。

MySQL 安装目录的路径。

用于--srcdir和源代码外的版本。将此设置为构建文件所在目录的位置。

MySQL 数据目录的路径。如果路径名的最后一个组件不存在,则仅创建它;父目录必须已经存在,否则会发生错误。

Note

--datadir选项是必需的,并且数据目录必须不存在。

此选项使mysql_install_db以这种方式调用mysqld,使其从默认位置读取选项文件。如果给定为--no-defaults,也未指定--defaults-file--defaults-extra-file,则mysql_install_db--no-defaults传递给mysqld,以防止读取选项文件。如果由于从选项文件读取未知选项而导致程序启动失败,这可能会有所帮助。

在全局选项文件之后但在用户选项文件之前(在 Unix 上)读取此选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。

此选项由mysql_install_db传递给mysqld

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

仅使用给定的选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。

此选项由mysql_install_db传递给mysqld

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

此选项命名一个文件,该文件包含要在标准引导语句之后执行的其他 SQL 语句。文件中可接受的语句语法类似于mysql命令行 Client 端的语句语法,包括对多行 C 样式 Comments 和定界符处理的支持,以启用存储程序的定义。

不要为 Management 帐户生成随机密码。

如果未指定--insecure,则必须在运行mysql_install_db后启动服务器,使用 Management 帐户连接并写入.mysql_secret文件的密码,然后指定新的 Management 密码。在完成此操作之前,Management 帐户不能用于其他任何用途。要更改密码,可以使用SET PASSWORD语句(例如,对于mysqlmysqladminClient 端)。重置密码后,删除.mysql_secret文件;否则,如果运行mysql_secure_installation,则该命令可能会看到该文件并再次使root密码过期,这是确保安全部署的一部分。

用于错误消息的语言环境。默认值为en_US。该参数将转换为语言名称,并与--lc-messages-dir的值组合以产生错误消息文件的位置。参见第 10.12 节“设置错误消息语言”

错误消息所在的目录。该值与--lc-messages的值一起使用以产生错误消息文件的位置。参见第 10.12 节“设置错误消息语言”

如果指定了--login-path=file_name选项,则从中读取登录路径的文件。默认文件为.mylogin.cnf

.mylogin.cnf登录路径文件中的命名登录路径读取选项。默认的登录路径是client。 (要读取其他文件,请使用--login-file=name选项。)“登录路径”是一个选项组,其中包含用于指定要连接到哪个 MySQL 服务器以及要作为身份验证的帐户的选项。要创建或修改登录路径文件,请使用mysql_config_editorUtil。参见第 4.6.6 节“ mysql_config_editor-MySQL 配置 Util”

如果指定了--login-path选项,则将从登录路径获取用户,主机和密码值,并将其用于创建 Management 帐户。除非已指定--insecure选项,否则必须在登录路径中定义密码,否则会发生错误。此外,对于--login-path,任何--admin-host--admin-user选项都将被忽略。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

要执行的mysqld二进制文件的路径名。选项值必须是绝对路径名,否则会发生错误。

如果未提供此选项,则mysql_install_db在以下位置搜索mysqld

  • --basedir选项值下的bin目录中(如果已指定该选项)。

    • --srcdir选项值下的bin目录中(如果已指定该选项)。

    • --builddir选项值下的bin目录中(如果已指定该选项)。

    • 在本地目录以及本地目录下的binsbin目录中。

    • /usr/bin/usr/sbin/usr/local/bin/usr/local/sbin/opt/local/bin/opt/local/sbin中。

  • --no-defaults

有关此选项的行为,请参见--defaults的描述。

有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”

要在其中写入 Management 帐户的随机生成的密码的文件的路径名。选项值必须是绝对路径名,否则会发生错误。默认值为$HOME/.mysql_secret

mysql_install_db安装sys模式。 --skip-sys-schema选项禁止此行为。

供内部使用。此选项指定mysql_install_db在其下查找支持文件的目录,例如错误消息文件和用于填充帮助 table 的文件。

用于运行mysqld的系统(登录)用户名。 mysqld创建的文件和目录将归该用户所有。您必须是系统root用户才能使用此选项。默认情况下,mysqld使用您当前的登录名运行,它创建的文件和目录将归您所有。

详细模式。打印有关程序功能的更多信息。您可以使用此选项查看mysql_install_db调用的mysqld命令以引导方式启动服务器。

显示版本信息并退出。