Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.4 安装相关程序  /  4.4.3 mysql_install_db——初始化MySQL数据目录

4.4.3 mysql_install_db——初始化MySQL数据目录

mysql_install_db初始化 MySQL 数据目录并创建它包含的系统表(如果它们不存在)。它还初始化管理表所需的 系统表空间 和相关数据结构 InnoDB。从 MySQL 5.6.8 开始, mysql_install_db是一个 Perl 脚本,可以在任何安装了 Perl 的系统上使用。在 5.6.8 之前,它是一个 shell 脚本,只能在 Unix 平台上使用。

从 MySQL 5.6.8 开始,在 Unix 平台上, mysql_install_db创建一个my.cnf在基本安装目录中命名的默认选项文件。该文件是根据分发包中包含的模板创建的,名为my-default.cnf. 您可以在基本安装目录中或下找到该模板。当开始使用mysqld_safe时,服务器my.cnf默认使用文件。如果 my.cnf已经存在, mysql_install_db假定它正在使用并写入一个名为的新文件my-new.cnf

除了一个例外,默认选项文件中的设置被注释掉并且没有效果。例外情况是文件将sql_mode系统变量设置为 NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES. 此设置生成的服务器配置会导致错误,而不是在修改事务表的操作中对错误数据发出警告。请参阅第 5.1.10 节,“服务器 SQL 模式”

要调用mysql_install_db,请使用以下语法:

mysql_install_db [options]

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

scripts/mysql_install_db --user=mysql \
    --basedir=/opt/mysql/mysql \
    --datadir=/opt/mysql/mysql/data
笔记

mysql_install_db设置 InnoDB 系统表空间后,对某些表空间特性的更改需要设置一个全新的 实例。这包括系统表空间中第一个文件的文件名和撤消日志的数量。如果不想使用默认值,请确保 innodb_data_file_path和 配置参数的设置在运行 mysql_install_db之前在 MySQL配置文件innodb_log_file_size 中就位 。还要确保根据需要指定影响创建和位置的其他参数InnoDB文件,例如 innodb_data_home_dirinnodb_log_group_home_dir.

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

笔记

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

mysql_install_db支持以下选项,可以在命令行或 [mysql_install_db]选项文件组中指定。(也可以在组中指定mysqld通用的[mysqld]选项。)其他选项传递给mysqld。有关 MySQL 程序使用的选项文件的信息,请参阅 第 4.2.2.2 节,“使用选项文件”

表 4.7 mysql_install_db 选项

选项名称 描述 介绍 弃用
--basedir 基本目录的路径
--builddir 构建目录的路径(用于源外构建)
--交叉引导 供内部使用
--数据目录 数据目录路径
--defaults-extra-file 除了通常的选项文件外,还读取命名的选项文件
--defaults-文件 只读命名选项文件
- 力量 即使 DNS 不起作用也运行
- 帮助 显示帮助信息并退出
--keep-my-cnf 保留现有的 my.cnf 文件,不要创建新文件 5.6.20 5.6.20
--ldata --datadir 的同义词
--no-defaults 不读取选项文件
--随机密码 生成管理账户随机密码
--rpm 供内部使用
--skip-name-resolve 在授权表中使用 IP 地址而不是主机名
--srcdir 供内部使用
- 用户 执行mysqld的操作系统用户
--冗长 详细模式
- 视窗 供内部使用

  • --help

    显示帮助信息并退出。

  • --basedir=dir_name

    MySQL 安装目录的路径。

  • --builddir=dir_name

    --srcdir源代码构建一起使用。将其设置为构建文件所在目录的位置。

  • --cross-bootstrap

    供内部使用。此选项用于在一台主机上为另一台主机构建系统表。

  • --datadir=dir_name

    MySQL 数据目录的路径。从 MySQL 5.6.8 开始,mysql_install_db对选项值更加严格。如果路径名的最后一个组件不存在,则只创建它;父目录必须已经存在,否则会发生错误。

  • --defaults-extra-file=file_name

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

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

  • --defaults-file=file_name

    仅使用给定的选项文件。如果该文件不存在或无法访问,则会发生错误。如果 file_name不是绝对路径名,则将其解释为相对于当前目录。

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

  • --force

    使 mysql_install_db 在DNS 不工作的情况下运行。通常使用主机名创建的授权表条目使用 IP 地址代替。

  • --keep-my-cnf

    告诉mysql_install_db保留任何现有my.cnf文件而不创建新的默认my.cnf文件。这个选项是在 MySQL 5.6.20 中添加的。

  • --ldata=dir_name

    的同义词 --datadir

  • --no-defaults

    不要读取任何选项文件。如果程序启动因从选项文件中读取未知选项而失败, --no-defaults可用于防止它们被读取。

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

  • --random-passwords

    在 Unix 平台上,此选项提供更安全的 MySQL 安装。调用 mysql_install_db--random-passwords 导致它在正常操作之外执行以下操作:

    • 安装过程会创建一个随机密码,将其分配给初始 MySQLroot 帐户,并为这些帐户设置密码过期 标志。

    • 初始随机root密码写入 环境变量.mysql_secret命名目录下的文件中。HOME根据操作系统的不同,使用sudo等命令可能会导致 的值HOME引用root系统用户的主目录。

      如果.mysql_secret已经存在,则将新密码信息附加到它。每个密码条目都包含一个时间戳,以便在进行多个安装操作时,可以确定与每个密码相关联的密码。

      .mysql_secret以模式 600 创建,仅供创建它的操作系统用户访问。

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

    由于这些操作,安装后必须启动服务器, root使用写入 .mysql_secret文件的密码进行连接,并指定新 root密码。在此之前, root不能做任何其他事情。必须为root您打算使用的每个帐户完成此操作。要更改密码,您可以使用 SET PASSWORD语句(例如,使用mysql客户端)。您还可以使用mysqladminmysql_secure_installation

    新的 RPM 安装操作(不是升级) 使用该 选项调用mysql_install_db 。--random-passwords(使用 Unbreakable Linux Network 的 RPM 的安装操作不受影响,因为它们不使用 mysql_install_db。)

    从 MySQL 5.6.9 开始,新的 Solaris PKG 安装操作(不是升级)使用该选项 调用mysql_install_db 。--random-passwords

    对于使用二进制 .tar.gz分发或源代码分发的安装操作,您可以手动调用 带有该 选项的mysql_install_db--random-passwords以使您的 MySQL 安装更安全。建议这样做,尤其是对于具有敏感数据的站点。

  • --rpm

    供内部使用。此选项在 MySQL 安装过程中用于使用 RPM 包执行的安装操作。

  • --skip-name-resolve

    创建授权表条目时使用 IP 地址而不是主机名。如果您的 DNS 不起作用,此选项会很有用。

  • --srcdir=dir_name

    For internal use. This option specifies the directory under which mysql_install_db looks for support files such as the error message file and the file for populating the help tables.

  • --user=user_name

    The system (login) user name to use for running mysqld. Files and directories created by mysqld are owned by this user. You must be the system root user to use this option. By default, mysqld runs using your current login name and files and directories that it creates are owned by you.

  • --verbose

    Verbose mode. Print more information about what the program does.

  • --windows

    供内部使用。此选项用于创建 Windows 发行版。