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语句(例如,对于mysql或mysqladminClient 端)。重置密码后,删除.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_upgrade而不是mysql_install_db。参见第 4.4.7 节“ mysql_upgrade-检查和升级 MySQLtable”。
-
如果数据目录不存在,但mysql_install_db失败,则必须删除任何部分创建的数据目录,然后再次运行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_path和innodb_log_file_size配置参数的设置在 MySQL configuration file中已经存在。还要确保根据需要指定其他影响InnoDB
文件创建和位置的参数,例如innodb_data_home_dir和innodb_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 帐户的多个方面:
-
要更改帐户名的用户或主机部分,请使用--login-path或--admin-user和--admin-host。
-
--insecure禁止生成随机密码。
-
--admin-auth-plugin指定身份验证插件。
-
--admin-require-ssl指定帐户是否必须使用 SSL 连接。
有关更多信息,请参见这些选项的描述。
mysql_install_db为mysql.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 Name | Description |
---|---|
--admin-auth-plugin | Management 帐户身份验证插件 |
--admin-host | Management 帐户名称主机部分 |
--admin-require-ssl | 需要 SSL 来 Management 帐户 |
--admin-user | Management 帐户名称用户部分 |
--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-file | mysqld 二进制文件的路径 |
--no-defaults | 不读取选项文件 |
--random-password-file | 在其中写入 Management 帐户随机密码的文件 |
--skip-sys-schema | 不要安装或升级 sys 模式 |
--srcdir | 供内部使用 |
--user | 用来执行 mysqld 的 os 用户 |
--verbose | Verbose mode |
--version | 显示版本信息并退出 |
- --help,
-?
显示帮助消息并退出。
用于 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 节“影响选项文件处理的命令行选项”。
- --extra-sql-file=file_name,
-f file_name
此选项命名一个文件,该文件包含要在标准引导语句之后执行的其他 SQL 语句。文件中可接受的语句语法类似于mysql命令行 Client 端的语句语法,包括对多行 C 样式 Comments 和定界符处理的支持,以启用存储程序的定义。
不要为 Management 帐户生成随机密码。
如果未指定--insecure,则必须在运行mysql_install_db后启动服务器,使用 Management 帐户连接并写入.mysql_secret
文件的密码,然后指定新的 Management 密码。在完成此操作之前,Management 帐户不能用于其他任何用途。要更改密码,可以使用SET PASSWORD语句(例如,对于mysql或mysqladminClient 端)。重置密码后,删除.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
目录中(如果已指定该选项)。 -
在本地目录以及本地目录下的
bin
和sbin
目录中。 -
在
/usr/bin
,/usr/sbin
,/usr/local/bin
,/usr/local/sbin
,/opt/local/bin
,/opt/local/sbin
中。
-
有关此选项的行为,请参见--defaults的描述。
有关此选项和其他选项文件选项的更多信息,请参见第 4.2.2.3 节“影响选项文件处理的命令行选项”。
要在其中写入 Management 帐户的随机生成的密码的文件的路径名。选项值必须是绝对路径名,否则会发生错误。默认值为$HOME/.mysql_secret
。
mysql_install_db安装sys
模式。 --skip-sys-schema选项禁止此行为。
供内部使用。此选项指定mysql_install_db在其下查找支持文件的目录,例如错误消息文件和用于填充帮助 table 的文件。
- --user=user_name,
-u user_name
用于运行mysqld的系统(登录)用户名。 mysqld创建的文件和目录将归该用户所有。您必须是系统root
用户才能使用此选项。默认情况下,mysqld使用您当前的登录名运行,它创建的文件和目录将归您所有。
- --verbose,
-v
详细模式。打印有关程序功能的更多信息。您可以使用此选项查看mysql_install_db调用的mysqld命令以引导方式启动服务器。
- --version,
-V
显示版本信息并退出。