文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  服务器命令选项

7.1.7 服务器命令选项

启动 mysqld 服务器时,可以使用 第 6.2.2 节 “指定程序选项” 中描述的任何方法来指定程序选项。最常用的方法是在选项文件或命令行中提供选项。但是,在大多数情况下,最好确保服务器每次运行时都使用相同的选项。确保这一点的最佳方法是在选项文件中列出它们。请参阅 第 6.2.2.2 节 “使用选项文件”。该节还描述了选项文件格式和语法。

mysqld[mysqld][server] 组中读取选项。mysqld_safe[mysqld][server][mysqld_safe][safe_mysqld] 组中读取选项。mysql.server[mysqld][mysql.server] 组中读取选项。

mysqld 接受许多命令选项。有关简要概述,请执行以下命令:

mysqld --help

要查看完整列表,请使用以下命令:

mysqld --verbose --help

列表中的一些项目实际上是可以在服务器启动时设置的系统变量。这些变量可以在运行时使用 SHOW VARIABLES 语句显示。前面的 mysqld 命令显示的某些项目没有出现在 SHOW VARIABLES 输出中;这是因为它们只是选项,而不是系统变量。

以下列表显示了一些最常见的服务器选项。其他选项在其他部分中进行了描述:

某些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常是从分配给缓冲区的总内存中分配的,并且所需的空间量可能取决于平台。这意味着,当你为控制缓冲区大小的选项分配值时,实际可用的空间量可能与分配的值不同。在某些情况下,该数量可能小于分配的值。服务器也有可能向上调整某个值。例如,如果你为最小值为 1024 的选项分配值 0,则服务器会将该值设置为 1024。

除非另有说明,否则缓冲区大小、长度和堆栈大小的值均以字节为单位。

某些选项采用文件名值。除非另有说明,否则如果该值为相对路径名,则默认文件位置为数据目录。要显式指定位置,请使用绝对路径名。假设数据目录为 /var/mysql/data。如果文件值选项作为相对路径名给出,则它位于 /var/mysql/data 下。如果该值为绝对路径名,则其位置由路径名给出。

您也可以在服务器启动时使用变量名称作为选项来设置服务器系统变量的值。要为服务器系统变量赋值,请使用 --var_name=value 形式的选项。例如,--sort_buffer_size=384Msort_buffer_size 变量设置为 384MB。

当您为变量赋值时,MySQL 可能会自动更正该值以使其保持在给定范围内,或者如果只允许某些值,则将该值调整为最接近的允许值。

要使用 SET 语句限制系统变量在运行时可以设置的最大值,请在服务器启动时使用 --maximum-var_name=value 形式的选项来指定此最大值。

您可以使用 SET 语句在运行时更改大多数系统变量的值。请参阅 第 15.7.6.1 节“SET 语法(用于变量赋值)”

第 7.1.8 节“服务器系统变量” 提供了所有变量的完整描述,以及在服务器启动和运行时设置它们的附加信息。有关更改系统变量的信息,请参阅 第 7.1.1 节“配置服务器”

  • --help, -?

    命令行格式 --help

    显示简短帮助消息并退出。同时使用 --verbose--help 选项可查看完整消息。

  • --allow-suspicious-udfs

    命令行格式 --allow-suspicious-udfs[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    此选项控制是否可以加载只有主函数的 xxx 符号的可加载函数。默认情况下,此选项处于关闭状态,并且只能加载至少有一个辅助符号的可加载函数;这可以防止尝试从包含合法函数以外的共享对象文件加载函数。请参阅 可加载函数安全注意事项

  • --ansi

    命令行格式 --ansi

    使用标准 (ANSI) SQL 语法而不是 MySQL 语法。要更精确地控制服务器 SQL 模式,请改用 --sql-mode 选项。请参阅 第 1.7 节“MySQL 标准合规性”第 7.1.11 节“服务器 SQL 模式”

  • --basedir=dir_name, -b dir_name

    命令行格式 --basedir=dir_name
    系统变量 basedir
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 目录名称
    默认值 mysqld 安装目录的父目录

    MySQL 安装目录的路径。此选项设置 basedir 系统变量。请参阅该变量的说明。

    服务器可执行文件在启动时确定其自身的完整路径名,并使用其所在目录的父目录作为默认的 basedir 值。这反过来又使服务器能够在搜索服务器相关信息(例如包含错误消息的 share 目录)时使用该 basedir

  • --chroot=dir_name, -r dir_name

    命令行格式 --chroot=dir_name
    类型 目录名称

    通过使用 chroot() 系统调用,在启动期间将 mysqld 服务器置于封闭环境中。这是一种建议的安全措施。使用此选项会在一定程度上限制 LOAD DATASELECT ... INTO OUTFILE

  • --console

    命令行格式 --console
    平台特定 Windows

    (仅限 Windows。)使默认错误日志目标为控制台。这会影响将自身输出目标基于默认目标的日志接收器。请参阅 第 7.4.2 节“错误日志”。如果使用此选项,则 mysqld 不会关闭控制台窗口。

    如果同时给出 --console--log-error,则 --console 优先。

  • --core-file

    命令行格式 --core-file

    使用此选项时,如果 mysqld 终止,则写入核心转储文件;不需要(或接受)任何参数。核心转储文件的名称和位置取决于系统。在 Linux 上,名为 core.pid 的核心转储文件将写入进程的当前工作目录,对于 mysqld 来说,该目录是数据目录。pid 表示服务器进程的进程 ID。在 macOS 上,名为 core.pid 的核心转储文件将写入 /cores 目录。在 Solaris 上,使用 coreadm 命令指定核心转储文件的写入位置及其命名方式。

    对于某些系统,要获取核心转储文件,您还必须为 mysqld_safe 指定 --core-file-size 选项。请参阅 第 6.3.2 节“mysqld_safe — MySQL 服务器启动脚本”。在某些系统上(例如 Solaris),如果您还使用了 --user 选项,则不会获取核心转储文件。可能还有其他限制或限制。例如,可能需要在启动服务器之前执行 ulimit -c unlimited。请参阅您的系统文档。

    innodb_buffer_pool_in_core_file 变量可用于减少支持它的操作系统上的核心转储文件的大小。有关更多信息,请参阅 第 17.8.3.7 节“从核心文件中排除或包含缓冲池页面”

  • --daemonize, -D

    命令行格式 --daemonize[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    此选项使服务器作为传统的派生守护进程运行,允许它与使用 systemd 进行进程控制的操作系统一起工作。有关更多信息,请参阅 第 2.5.9 节“使用 systemd 管理 MySQL 服务器”

    --daemonize--initialize--initialize-insecure 互斥。

    如果使用 --daemonize 选项启动服务器并且未连接到 tty 设备,则在没有显式日志记录选项的情况下,将使用 --log-error="" 的默认错误日志记录选项,以将错误输出定向到默认日志文件。

    -D--daemonize 的同义词。

  • --datadir=dir_name, -h dir_name

    命令行格式 --datadir=dir_name
    系统变量 datadir
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 目录名称

    MySQL 服务器数据目录的路径。此选项设置 datadir 系统变量。请参阅该变量的说明。

  • --debug[=debug_options], -# [debug_options]

    命令行格式 --debug[=debug_options]
    系统变量 debug
    作用域 全局,会话
    动态
    SET_VAR 提示适用
    类型 字符串
    默认值 (Unix) d:t:i:o,/tmp/mysqld.trace
    默认值 (Windows) d:t:i:O,\mysqld.trace

    如果使用 -DWITH_DEBUG=1 CMake 选项配置 MySQL,则可以使用此选项来获取 mysqld 正在执行的操作的跟踪文件。典型的 debug_options 字符串是 d:t:o,file_name。默认值在 Unix 上为 d:t:i:o,/tmp/mysqld.trace,在 Windows 上为 d:t:i:O,\mysqld.trace

    使用 -DWITH_DEBUG=1 配置支持调试的 MySQL,您可以在启动服务器时使用 --debug="d,parser_debug" 选项。这将导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出将写入错误日志。

    此选项可以给出多次。以 +- 开头的值将添加到或从上一个值中减去。例如,--debug=T --debug=+P 将值设置为 P:T

    有关更多信息,请参阅 第 7.9.4 节“DBUG 包”

  • --debug-sync-timeout[=N]

    命令行格式 --debug-sync-timeout[=#]
    类型 整数

    控制是否启用用于测试和调试的“调试同步”功能。使用“调试同步”需要使用 -DWITH_DEBUG=ON CMake 选项配置 MySQL(请参阅 第 2.8.7 节“MySQL 源配置选项”);否则,此选项不可用。选项值是以秒为单位的超时。默认值为 0,表示禁用“调试同步”。要启用它,请指定大于 0 的值;此值也成为各个同步点的默认超时。如果给出选项时不带值,则超时设置为 300 秒。

    有关“调试同步”功能以及如何使用同步点的说明,请参阅 MySQL 内部:测试同步

  • --default-time-zone=timezone

    命令行格式 --default-time-zone=名称
    类型 字符串

    设置默认服务器时区。此选项设置全局 time_zone 系统变量。如果未给出此选项,则默认时区与系统时区相同(由 system_time_zone 系统变量的值给出)。

    system_time_zone 变量与 time_zone 不同。尽管它们可能具有相同的值,但后者用于初始化连接的每个客户端的时区。请参阅第 7.1.15 节 “MySQL 服务器时区支持”

  • --defaults-extra-file=file_name

    在全局选项文件之后但(在 Unix 上)在用户选项文件之前读取此选项文件。如果文件不存在或无法访问,则会发生错误。如果 file_name 不是绝对路径名,则相对于当前目录解释它。如果使用此选项,则它必须是命令行上的第一个选项。

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

  • --defaults-file=file_name

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

    例外:即使使用 --defaults-filemysqld 也会读取 mysqld-auto.cnf

    注意

    如果使用此选项,则它必须是命令行上的第一个选项,但如果使用 --defaults-file--install(或 --install-manual)选项启动服务器,则 --install(或 --install-manual)必须是第一个。

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

  • --defaults-group-suffix=str

    不仅读取通常的选项组,还读取具有通常名称和后缀 str 的组。例如,mysqld 通常读取 [mysqld] 组。如果将此选项指定为 --defaults-group-suffix=_other,则 mysqld 还会读取 [mysqld_other] 组。

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

  • --early-plugin-load=plugin_list

    命令行格式 --early-plugin-load=插件列表
    类型 字符串
    默认值 空字符串

    此选项告诉服务器在加载强制内置插件和存储引擎初始化之前要加载哪些插件。仅使用 PLUGIN_OPT_ALLOW_EARLY 编译的插件才支持早期加载。如果给出了多个 --early-plugin-load 选项,则仅最后一个选项适用。

    选项值是以分号分隔的 plugin_libraryname=plugin_library 值的列表。每个 plugin_library 是包含插件代码的库文件的名称,每个 name 是要加载的插件的名称。如果插件库的命名没有前面的插件名称,则服务器会加载库中的所有插件。如果前面有插件名称,则服务器仅从库中加载命名的插件。服务器在 plugin_dir 系统变量命名的目录中查找插件库文件。

    例如,如果名为 myplug1myplug2 的插件包含在插件库文件 myplug1.somyplug2.so 中,请使用此选项执行早期插件加载

    mysqld --early-plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"

    引号包围参数值,因为否则某些命令解释器会将分号 (;) 解释为特殊字符。(例如,Unix shell 将其视为命令终止符。)

    每个命名的插件仅在单次调用 mysqld 时才会进行早期加载。重启后,除非再次使用 --early-plugin-load,否则不会进行早期加载。

    如果使用 --initialize--initialize-insecure 启动服务器,则不会加载 --early-plugin-load 指定的插件。

    如果使用 --help 运行服务器,则会加载 --early-plugin-load 指定的插件,但不会对其进行初始化。此行为可确保在帮助消息中显示插件选项。

    InnoDB 表空间加密依赖于 MySQL 密钥环进行加密密钥管理,并且必须在存储引擎初始化之前加载要使用的密钥环插件,以便于对加密表进行 InnoDB 恢复。例如,希望在启动时加载 keyring_okv 插件的管理员应使用 --early-plugin-load 和相应的选项值(例如 Unix 和类 Unix 系统上的 keyring_okv.so 或 Windows 上的 keyring_okv.dll)。

    有关 InnoDB 表空间加密的信息,请参阅第 17.13 节 “InnoDB 静态数据加密”。有关插件加载的常规信息,请参阅第 7.6.1 节 “安装和卸载插件”

    注意

    对于 MySQL 密钥环,仅当使用密钥环插件管理密钥库时,才使用此选项。如果密钥库管理使用密钥环组件而不是插件,请使用清单文件指定组件加载;请参阅第 8.4.4.2 节 “密钥环组件安装”

  • --exit-info[=flags], -T [flags]

    命令行格式 --exit-info[=标志]
    类型 整数

    这是一个位掩码,包含可用于调试 mysqld 服务器的不同标志。除非您确切地知道它的作用,否则不要使用此选项!

  • --external-locking

    命令行格式 --external-locking[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    启用默认情况下禁用的外部锁定(系统锁定)。如果在 lockd 无法完全正常工作的系统(例如 Linux)上使用此选项,则 mysqld 很容易发生死锁。

    要显式禁用外部锁定,请使用 --skip-external-locking

    外部锁定仅影响 MyISAM 表的访问。有关更多信息,包括可以使用和不能使用它的条件,请参阅第 10.11.5 节 “外部锁定”

  • --flush

    命令行格式 --flush[={OFF|ON}]
    系统变量 刷新
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    在每个 SQL 语句后将所有更改刷新(同步)到磁盘。通常,MySQL 仅在每个 SQL 语句后才将所有更改写入磁盘,并让操作系统处理与磁盘的同步。请参阅第 B.3.3.3 节 “如果 MySQL 不断崩溃该怎么办”

    注意

    如果指定了 --flush,则 flush_time 的值无关紧要,并且对 flush_time 的更改不会影响刷新行为。

  • --gdb

    命令行格式 --gdb[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    SIGINT 安装中断处理程序(需要使用 ^C 停止 mysqld 以设置断点)并禁用堆栈跟踪和核心文件处理。请参阅第 7.9.1.4 节 “在 gdb 下调试 mysqld”

    在 Windows 上,此选项还会禁止用于实现 RESTART 语句的派生:派生允许一个进程充当另一个进程的监视器,而另一个进程充当服务器。但是,派生使得确定要附加到哪个服务器进程进行调试变得更加困难,因此使用 --gdb 启动服务器会禁止派生。对于使用此选项启动的服务器,RESTART 只会退出而不会重启。

    在非调试设置中,可以使用 --no-monitor 来禁止派生监视器进程。

  • --initialize, -I

    命令行格式 --initialize[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    此选项用于通过创建数据目录和填充 mysql 系统模式中的表来初始化 MySQL 安装。有关更多信息,请参阅第 2.9.1 节 “初始化数据目录”

    此选项会限制 MySQL 服务器的许多其他启动选项的效果,或者与之不兼容。这里列出了一些最常见的问题

    • 我们强烈建议,在使用 --initialize 初始化数据目录时,除了 --datadir、用于设置目录位置的其他选项(如 --basedir)以及可能需要的 --user 之外,不要指定其他选项。完成初始化并且 mysqld 关闭后,可以在启动 MySQL 服务器时指定运行它的选项。这在使用 --initialize-insecure 而不是 --initialize 时也适用。

    • 使用 --initialize 启动服务器时,某些功能不可用,这会限制 init_file 系统变量命名的文件中允许使用的语句。有关更多信息,请参阅该变量的说明。此外,disabled_storage_engines 系统变量不起作用。

    • --initialize 一起使用时,--ndbcluster 选项将被忽略。

    • --initialize--bootstrap--daemonize 互斥。

    当使用 --initialize-insecure 选项初始化服务器时,前面列表中的项目也适用。

  • --initialize-insecure

    命令行格式 --initialize-insecure[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    此选项用于通过创建数据目录并在 mysql 系统模式中填充表来初始化 MySQL 安装。此选项意味着 --initialize,并且适用相同的限制;有关更多信息,请参阅该选项的说明以及第 2.9.1 节“初始化数据目录”

    警告

    此选项将创建一个密码为空的 MySQL root 用户,这是不安全的。因此,请勿在生产环境中使用它,除非手动设置此密码。有关如何执行此操作的信息,请参阅初始化后 root 密码分配

  • --innodb-xxx

    设置 InnoDB 存储引擎的选项。InnoDB 选项列在第 17.14 节“InnoDB 启动选项和系统变量”中。

  • --install [service_name]

    命令行格式 --install [服务名称]
    平台特定 Windows

    (仅限 Windows)将服务器安装为在 Windows 启动期间自动启动的 Windows 服务。如果未指定 service_name 值,则默认服务名称为 MySQL。有关更多信息,请参阅第 2.3.3.8 节“将 MySQL 作为 Windows 服务启动”

    注意

    如果使用 --defaults-file--install 选项启动服务器,则 --install 必须位于首位。

  • --install-manual [service_name]

    命令行格式 --install-manual [服务名称]
    平台特定 Windows

    (仅限 Windows)将服务器安装为必须手动启动的 Windows 服务。它不会在 Windows 启动期间自动启动。如果未指定 service_name 值,则默认服务名称为 MySQL。有关更多信息,请参阅第 2.3.3.8 节“将 MySQL 作为 Windows 服务启动”

    注意

    如果使用 --defaults-file--install-manual 选项启动服务器,则 --install-manual 必须位于首位。

  • --large-pages

    命令行格式 --large-pages[={OFF|ON}]
    系统变量 large_pages
    作用域 全局
    动态
    SET_VAR 提示适用
    平台特定 Linux
    类型 布尔值
    默认值 OFF

    某些硬件/操作系统体系结构支持大于默认值(通常为 4KB)的内存页。此类支持的实际实现取决于底层硬件和操作系统。由于减少了转换后备缓冲区 (TLB) 未命中,因此执行大量内存访问的应用程序可以通过使用大页面来提高性能。

    MySQL 支持 Linux 对大页面支持的实现(在 Linux 中称为 HugeTLB)。请参阅第 10.12.3.3 节“启用大页面支持”。有关 Solaris 对大页面的支持,请参阅 --super-large-pages 选项的说明。

    --large-pages 默认情况下处于禁用状态。

  • --lc-messages=locale_name

    命令行格式 --lc-messages=名称
    系统变量 lc_messages
    作用域 全局,会话
    动态
    SET_VAR 提示适用
    类型 字符串
    默认值 en_US

    用于错误消息的语言环境。默认值为 en_US。服务器会将参数转换为语言名称,并将其与 --lc-messages-dir 的值组合起来,以生成错误消息文件的位置。请参阅第 12.12 节“设置错误消息语言”

  • --lc-messages-dir=dir_name

    命令行格式 --lc-messages-dir=目录名称
    系统变量 lc_messages_dir
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 目录名称

    错误消息所在的目录。服务器将此值与 --lc-messages 的值一起使用,以生成错误消息文件的位置。请参阅第 12.12 节“设置错误消息语言”

  • --local-service

    命令行格式 --local-service

    (仅限 Windows)服务名称后面的 --local-service 选项使服务器使用系统权限有限的 LocalService Windows 帐户运行。如果在服务名称后面同时指定了 --defaults-file--local-service,则它们的顺序可以任意。请参阅第 2.3.3.8 节“将 MySQL 作为 Windows 服务启动”

  • --log-error[=file_name]

    命令行格式 --log-error[=文件名]
    系统变量 log_error
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 文件名

    将默认错误日志目标设置为指定的文件。这会影响将自己的输出目标基于默认目标的日志接收器。请参阅第 7.4.2 节“错误日志”

    如果该选项未指定文件,则 Unix 和类 Unix 系统上的默认错误日志目标是在数据目录中名为 host_name.err 的文件。Windows 上的默认目标与此相同,除非指定了 --pid-file 选项。在这种情况下,文件名是在数据目录中,PID 文件基本名称后缀为 .err 的文件。

    如果该选项指定了一个文件,则默认目标是该文件(如果名称没有后缀,则添加 .err 后缀),该文件位于数据目录下,除非指定了绝对路径名以指定其他位置。

    如果无法将错误日志输出重定向到错误日志文件,则会发生错误并且启动失败。

    在 Windows 上,如果同时指定了 --console--log-error,则 --console 优先。在这种情况下,默认错误日志目标是控制台而不是文件。

  • --log-isam[=file_name]

    命令行格式 --log-isam[=文件名]
    类型 文件名

    将所有 MyISAM 更改记录到此文件(仅在调试 MyISAM 时使用)。

  • --log-raw

    命令行格式 --log-raw[={OFF|ON}]
    系统变量 log_raw
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    写入到常规查询日志、慢查询日志和二进制日志的某些语句中的密码会被服务器重写,以避免以纯文本形式出现。可以通过使用 --log-raw 选项启动服务器来禁止对常规查询日志进行密码重写。此选项可能有助于诊断,以便查看服务器接收到的语句的确切文本,但出于安全原因,不建议在生产环境中使用。

    如果安装了查询重写插件,则 --log-raw 选项会按如下方式影响语句日志记录

    • 如果没有 --log-raw,则服务器会记录查询重写插件返回的语句。这可能与接收到的语句不同。

    • 使用 --log-raw 时,服务器会记录接收到的原始语句。

    有关更多信息,请参阅第 8.1.2.3 节“密码和日志记录”

  • --log-short-format

    命令行格式 --log-short-format[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    如果已激活慢查询日志,则记录到其中的信息会更少。

  • --log-tc=file_name

    命令行格式 --log-tc=文件名
    类型 文件名
    默认值 tc.log

    内存映射事务协调器日志文件的名称(用于在禁用二进制日志时影响多个存储引擎的 XA 事务)。默认名称为 tc.log。如果未指定完整路径名,则会在数据目录下创建该文件。此选项未使用。

  • --log-tc-size=size

    命令行格式 --log-tc-size=#
    类型 整数
    默认值 6 * 页面大小
    最小值 6 * 页面大小
    最大值(64 位平台) 18446744073709551615
    最大值(32 位平台) 4294967295

    内存映射事务协调器日志的大小(以字节为单位)。默认值和最小值为页面大小的 6 倍,并且该值必须是页面大小的倍数。

  • --memlock

    命令行格式 --memlock[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    mysqld 进程锁定在内存中。如果操作系统导致 mysqld 交换到磁盘,则此选项可能会有所帮助。

    --memlock 适用于支持 mlockall() 系统调用的系统;这包括 Solaris、大多数使用 2.4 或更高版本内核的 Linux 发行版,以及其他一些 Unix 系统。在 Linux 系统上,您可以通过检查 mlockall()(以及此选项)是否在系统 mman.h 文件中定义来判断它是否受支持,如下所示

    $> grep mlockall /usr/include/sys/mman.h

    如果支持 mlockall(),则您应该在上一个命令的输出中看到类似于以下内容的内容

    extern int mlockall (int __flags) __THROW;
    重要提示

    使用此选项可能需要您以 root 用户身份运行服务器,出于安全原因,通常不建议这样做。请参阅第 8.1.5 节“如何以普通用户身份运行 MySQL”

    在 Linux 和其他一些系统上,您可以通过更改 limits.conf 文件来避免以 root 用户身份运行服务器的需要。请参阅第 10.12.3.3 节“启用大页面支持”中有关 memlock 限制的说明。

    您不得在不支持 mlockall() 系统调用的系统上使用此选项;如果这样做,mysqld 很可能会在您尝试启动它时立即退出。

  • --myisam-block-size=N

    命令行格式 --myisam-block-size=#
    类型 整数
    默认值 1024
    最小值 1024
    最大值 16384

    用于 MyISAM 索引页的块大小。

  • --mysql-native-password

    命令行格式 --mysql-native-password={OFF|ON}
    已弃用
    类型 布尔值
    默认值 OFF

    启用 mysql_native_password 身份验证插件,该插件在 MySQL 8.4 中默认禁用。

    有关更多信息,请参阅 第 8.4.1.1 节“原生可插拔身份验证”

  • --no-defaults

    不读取任何选项文件。如果程序启动由于从选项文件读取未知选项而失败,则可以使用 --no-defaults 来防止读取它们。如果使用此选项,则它必须是命令行上的第一个选项。

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

  • --no-monitor

    命令行格式 --no-monitor[={OFF|ON}]
    平台特定 Windows
    类型 布尔值
    默认值 OFF

    (仅限 Windows)。此选项禁止用于实现 RESTART 语句的派生:派生使一个进程充当另一个进程(充当服务器)的监视器。对于使用此选项启动的服务器,RESTART 只是退出,不会重新启动。

  • --performance-schema-xxx

    配置 Performance Schema 选项。有关详细信息,请参阅 第 29.14 节“Performance Schema 命令选项”

  • --plugin-load=plugin_list

    命令行格式 --plugin-load=plugin_list
    类型 字符串

    此选项告诉服务器在启动时加载指定的插件。如果给出了多个 --plugin-load 选项,则只有最后一个选项适用。可以使用 --plugin-load-add 选项指定要加载的其他插件。

    选项值是以分号分隔的 plugin_libraryname=plugin_library 值的列表。每个 plugin_library 是包含插件代码的库文件的名称,每个 name 是要加载的插件的名称。如果插件库的命名没有前面的插件名称,则服务器会加载库中的所有插件。如果前面有插件名称,则服务器仅从库中加载命名的插件。服务器在 plugin_dir 系统变量命名的目录中查找插件库文件。

    例如,如果名为 myplug1myplug2 的插件包含在插件库文件 myplug1.somyplug2.so 中,请使用此选项执行早期插件加载

    mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"

    引号包围参数值,因为否则某些命令解释器会将分号 (;) 解释为特殊字符。(例如,Unix shell 将其视为命令终止符。)

    每个命名的插件仅为 mysqld 的单次调用加载。重新启动后,除非再次使用 --plugin-load,否则不会加载该插件。这与 INSTALL PLUGIN 形成对比,后者会将一条条目添加到 mysql.plugins 表中,以使插件在每次正常服务器启动时都加载。

    在正常的启动顺序期间,服务器通过读取 mysql.plugins 系统表来确定要加载哪些插件。如果使用 --skip-grant-tables 选项启动服务器,则不会加载在 mysql.plugins 表中注册的插件,并且这些插件不可用。--plugin-load 即使在给出了 --skip-grant-tables 的情况下也可以加载插件。--plugin-load 还可以在启动时加载无法在运行时加载的插件。

    此选项不会设置相应的系统变量。SHOW PLUGINS 的输出提供了有关已加载插件的信息。可以在 Information Schema PLUGINS 表中找到更多详细信息。请参阅 第 7.6.2 节“获取服务器插件信息”

    有关插件加载的其他信息,请参阅 第 7.6.1 节“安装和卸载插件”

  • --plugin-load-add=plugin_list

    命令行格式 --plugin-load-add=plugin_list
    类型 字符串

    此选项是对 --plugin-load 选项的补充。--plugin-load-add 将一个或多个插件添加到要在启动时加载的插件集中。参数格式与 --plugin-load 的格式相同。--plugin-load-add 可用于避免将大量插件指定为单个冗长且难以处理的 --plugin-load 参数。

    可以在没有 --plugin-load 的情况下给出 --plugin-load-add,但出现在 --plugin-load 之前的任何 --plugin-load-add 实例都无效,因为 --plugin-load 会重置要加载的插件集。换句话说,这些选项

    --plugin-load=x --plugin-load-add=y

    等效于此选项

    --plugin-load="x;y"

    但是这些选项

    --plugin-load-add=y --plugin-load=x

    等效于此选项

    --plugin-load=x

    此选项不会设置相应的系统变量。SHOW PLUGINS 的输出提供了有关已加载插件的信息。可以在 Information Schema PLUGINS 表中找到更多详细信息。请参阅 第 7.6.2 节“获取服务器插件信息”

    有关插件加载的其他信息,请参阅 第 7.6.1 节“安装和卸载插件”

  • --plugin-xxx

    指定与服务器插件相关的选项。例如,许多存储引擎都可以构建为插件,对于此类引擎,可以使用 --plugin 前缀指定它们的选项。因此,InnoDB--innodb-file-per-table 选项可以指定为 --plugin-innodb-file-per-table

    对于可以启用或禁用的布尔选项,也支持 --skip 前缀和其他替代格式(请参阅 第 6.2.2.4 节“程序选项修饰符”)。例如,--skip-plugin-innodb-file-per-table 禁用 innodb-file-per-table

    --plugin 前缀的基本原理是,如果与内置服务器选项存在名称冲突,则可以使用它明确指定插件选项。例如,如果插件编写者将插件命名为“sql”并实现“mode”选项,则选项名称可能为 --sql-mode,这将与同名的内置选项冲突。在这种情况下,对冲突名称的引用将解析为内置选项。为了避免歧义,用户可以将插件选项指定为 --plugin-sql-mode。建议对插件选项使用 --plugin 前缀,以避免出现任何歧义问题。

  • --port=port_num, -P port_num

    命令行格式 --port=port_num
    系统变量 port
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 整数
    默认值 3306
    最小值 0
    最大值 65535

    侦听 TCP/IP 连接时要使用的端口号。在 Unix 和类 Unix 系统上,除非服务器是由 root 操作系统用户启动的,否则端口号必须为 1024 或更高。将此选项设置为 0 将导致使用默认值。

  • --port-open-timeout=num

    命令行格式 --port-open-timeout=#
    类型 整数
    默认值 0

    在某些系统上,当服务器停止时,TCP/IP 端口可能不会立即可用。如果服务器随后很快重新启动,则它尝试重新打开端口可能会失败。此选项指示如果无法打开 TCP/IP 端口,则服务器应等待多少秒才能使该端口变为空闲。默认设置是不等待。

  • --print-defaults

    打印程序名称以及它从选项文件中获取的所有选项。密码值会被屏蔽。如果使用此选项,则它必须是命令行上的第一个选项,但它可以在 --defaults-file--defaults-extra-file 之后立即使用。

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

  • --remove [service_name]

    命令行格式 --remove [service_name]
    平台特定 Windows

    (仅限 Windows)删除 MySQL Windows 服务。如果没有给出 service_name 值,则默认服务名称为 MySQL。有关更多信息,请参阅 第 2.3.3.8 节“将 MySQL 作为 Windows 服务启动”

  • --safe-user-create

    命令行格式 --safe-user-create[={OFF|ON}]
    已弃用
    类型 布尔值
    默认值 OFF

    如果启用此选项,则用户无法使用 GRANT 语句创建新的 MySQL 用户,除非该用户对 mysql.user 系统表或该表中的任何列具有 INSERT 权限。如果希望用户能够创建具有该用户有权授予的权限的新用户,则应向该用户授予以下权限

    GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';

    这可确保用户无法直接更改任何权限列,而必须使用 GRANT 语句将权限授予其他用户。

  • --skip-grant-tables

    命令行格式 --skip-grant-tables[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    此选项会影响服务器启动顺序

  • --skip-new

    命令行格式 --skip-new
    已弃用

    此选项会禁用(以前被认为)新的、可能不安全的行为。它会导致以下设置:delay_key_write=OFFconcurrent_insert=NEVERautomatic_sp_privileges=OFF。它还会导致 OPTIMIZE TABLE 对于不支持 OPTIMIZE TABLE 的存储引擎映射到 ALTER TABLE

    此选项已弃用,并将在未来版本中删除。

  • --skip-show-database

    命令行格式 --skip-show-database
    系统变量 skip_show_database
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    此选项设置 skip_show_database 系统变量,该变量控制允许谁使用 SHOW DATABASES 语句。请参阅 第 7.1.8 节 “服务器系统变量”

  • --skip-stack-trace

    命令行格式 --skip-stack-trace

    不写入堆栈跟踪。当您在调试器下运行 mysqld 时,此选项很有用。在某些系统上,您还必须使用此选项才能获取核心文件。请参阅 第 7.9 节 “调试 MySQL”

  • --slow-start-timeout=timeout

    命令行格式 --slow-start-timeout=#
    类型 整数
    默认值 15000

    此选项控制 Windows 服务控制管理器的服务启动超时。该值是服务控制管理器在启动期间尝试终止 Windows 服务之前等待的最大毫秒数。默认值为 15000(15 秒)。如果 MySQL 服务启动时间过长,您可能需要增加此值。值为 0 表示没有超时。

  • --socket=path

    命令行格式 --socket={file_name|pipe_name}
    系统变量 socket
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 字符串
    默认值 (Windows) MySQL
    默认值(其他) /tmp/mysql.sock

    在 Unix 上,此选项指定在侦听本地连接时使用的 Unix 套接字文件。默认值为 /tmp/mysql.sock。如果指定了此选项,则服务器会在数据目录中创建该文件,除非指定了绝对路径名以指定其他目录。在 Windows 上,此选项指定在侦听使用命名管道的本地连接时使用的管道名称。默认值为 MySQL(不区分大小写)。

  • --sql-mode=value[,value[,value...]]

    命令行格式 --sql-mode=name
    系统变量 sql_mode
    作用域 全局,会话
    动态
    SET_VAR 提示适用
    类型 设置
    默认值 ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
    有效值

    ALLOW_INVALID_DATES

    ANSI_QUOTES

    ERROR_FOR_DIVISION_BY_ZERO

    HIGH_NOT_PRECEDENCE

    IGNORE_SPACE

    NO_AUTO_VALUE_ON_ZERO

    NO_BACKSLASH_ESCAPES

    NO_DIR_IN_CREATE

    NO_ENGINE_SUBSTITUTION

    NO_UNSIGNED_SUBTRACTION

    NO_ZERO_DATE

    NO_ZERO_IN_DATE

    ONLY_FULL_GROUP_BY

    PAD_CHAR_TO_FULL_LENGTH

    PIPES_AS_CONCAT

    REAL_AS_FLOAT

    STRICT_ALL_TABLES

    STRICT_TRANS_TABLES

    TIME_TRUNCATE_FRACTIONAL

    设置 SQL 模式。请参阅 第 7.1.11 节 “服务器 SQL 模式”

    注意

    MySQL 安装程序可能会在安装过程中配置 SQL 模式。

    如果 SQL 模式与默认模式或您期望的模式不同,请检查服务器在启动时读取的选项文件中的设置。

  • --standalone

    命令行格式 --standalone
    平台特定 Windows

    仅在 Windows 上可用;指示 MySQL 服务器不要作为服务运行。

  • --super-large-pages

    命令行格式 --super-large-pages[={OFF|ON}]
    平台特定 Solaris
    类型 布尔值
    默认值 OFF

    MySQL 中大页面的标准用法是尝试使用支持的最大大小(最大 4MB)。在 Solaris 下,“超大页面”功能可以使用最大 256MB 的页面。此功能适用于最新的 SPARC 平台。可以使用 --super-large-pages--skip-super-large-pages 选项启用或禁用此功能。

  • --symbolic-links, --skip-symbolic-links

    命令行格式 --symbolic-links[={OFF|ON}]
    已弃用
    类型 布尔值
    默认值 OFF

    启用或禁用符号链接支持。在 Unix 上,启用符号链接意味着您可以使用 CREATE TABLE 语句的 INDEX DIRECTORYDATA DIRECTORY 选项将 MyISAM 索引文件或数据文件链接到另一个目录。如果删除或重命名表,则其符号链接指向的文件也会被删除或重命名。请参阅 第 10.12.2.2 节 “在 Unix 上对 MyISAM 表使用符号链接”

    注意

    符号链接支持以及控制它的 --symbolic-links 选项已弃用;您应该预计它将在未来版本的 MySQL 中删除。此外,默认情况下禁用此选项。相关的 have_symlink 系统变量也已弃用;预计它将在未来版本的 MySQL 中删除。

    此选项在 Windows 上没有意义。

  • --sysdate-is-now

    命令行格式 --sysdate-is-now[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    默认情况下,SYSDATE() 返回其执行的时间,而不是包含它的语句开始执行的时间。这与 NOW() 的行为不同。此选项使 SYSDATE() 成为 NOW() 的同义词。有关二进制日志记录和复制的影响的信息,请参阅 第 14.7 节 “日期和时间函数”SYSDATE() 的说明以及 第 7.1.8 节 “服务器系统变量”SET TIMESTAMP 的说明。

  • --tc-heuristic-recover={COMMIT|ROLLBACK}

    命令行格式 --tc-heuristic-recover=name
    类型 枚举
    默认值 OFF
    有效值

    OFF

    COMMIT

    ROLLBACK

    在手动启发式恢复中使用的决定。

    如果指定了 --tc-heuristic-recover 选项,则无论手动启发式恢复是否成功,服务器都会退出。

    在具有多个能够进行两阶段提交的存储引擎的系统上,ROLLBACK 选项是不安全的,会导致恢复停止并出现以下错误

    [ERROR] --tc-heuristic-recover rollback
    strategy is not safe on systems with more than one 2-phase-commit-capable
    storage engine. Aborting crash recovery.
  • --transaction-isolation=level

    命令行格式 --transaction-isolation=name
    系统变量 transaction_isolation
    作用域 全局,会话
    动态
    SET_VAR 提示适用
    类型 枚举
    默认值 REPEATABLE-READ
    有效值

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ

    SERIALIZABLE

    设置默认事务隔离级别。level 值可以是 READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE。请参阅 第 15.3.7 节 “SET TRANSACTION 语句”

    也可以在运行时使用 SET TRANSACTION 语句或通过设置 transaction_isolation 系统变量来设置默认事务隔离级别。

  • --transaction-read-only

    命令行格式 --transaction-read-only[={OFF|ON}]
    系统变量 transaction_read_only
    作用域 全局,会话
    动态
    SET_VAR 提示适用
    类型 布尔值
    默认值 OFF

    设置默认事务访问模式。默认情况下,只读模式处于禁用状态,因此模式为读/写。

    要在运行时设置默认事务访问模式,请使用 SET TRANSACTION 语句或设置 transaction_read_only 系统变量。请参阅 第 15.3.7 节 “SET TRANSACTION 语句”

  • --tmpdir=dir_name, -t dir_name

    命令行格式 --tmpdir=dir_name
    系统变量 tmpdir
    作用域 全局
    动态
    SET_VAR 提示适用
    类型 目录名称

    用于创建临时文件的目录的路径。如果您的默认 /tmp 目录位于太小而无法容纳临时表的 Partiton 上,则此选项可能会有用。此选项接受以循环方式使用的多个路径。在 Unix 上,路径应以冒号 (:) 分隔;在 Windows 上,路径应以分号 (;) 分隔。

    --tmpdir 可以是非永久性位置,例如基于内存的文件系统上的目录或服务器主机重新启动时清除的目录。如果 MySQL 服务器充当副本,并且您正在对 --tmpdir 使用非永久性位置,请考虑使用 replica_load_tmpdir 系统变量为副本设置不同的临时目录。对于副本,用于复制 LOAD DATA 语句的临时文件存储在此目录中,因此使用永久性位置,它们可以在机器重新启动后继续存在,尽管如果临时文件已被删除,复制现在可以在重新启动后继续。

    有关临时文件存储位置的更多信息,请参阅 第 B.3.3.5 节“MySQL 存储临时文件的位置”

  • --upgrade=

    命令行格式 --upgrade=值
    类型 枚举
    默认值 AUTO
    有效值

    AUTO

    NONE

    MINIMAL

    FORCE

    此选项控制服务器在启动时是否以及如何执行自动升级。自动升级涉及两个步骤

    • 步骤 1:数据字典升级。

      此步骤升级

      • mysql 模式中的数据字典表。如果实际数据字典版本低于当前预期版本,则服务器会升级数据字典。如果无法升级或被阻止升级,则服务器无法运行。

      • 性能模式和 INFORMATION_SCHEMA

    • 步骤 2:服务器升级。

      此步骤包括所有其他升级任务。如果现有安装数据的 MySQL 版本低于服务器预期的版本,则必须升级

      • mysql 模式中的系统表(其余的非数据字典表)。

      • sys 模式。

      • 用户模式。

    有关升级步骤 1 和 2 的详细信息,请参阅 第 3.4 节“MySQL 升级过程升级的内容”

    允许使用以下 --upgrade 选项值

    • AUTO

      服务器会自动升级它发现的任何过时内容(步骤 1 和 2)。如果未显式指定 --upgrade,则这是默认操作。

    • NONE

      服务器在启动过程中不执行任何自动升级步骤(跳过步骤 1 和 2)。因为此选项值会阻止数据字典升级,所以如果发现数据字典已过期,服务器将退出并显示错误

      [ERROR] [MY-013381] [Server] Server shutting down because upgrade is
      required, yet prohibited by the command line option '--upgrade=NONE'.
      [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
      [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
    • MINIMAL

      服务器会根据需要升级数据字典、性能模式和 INFORMATION_SCHEMA(步骤 1)。请注意,使用此选项进行升级后,将无法启动组复制,因为复制内部依赖的系统表未更新,并且在其他区域也可能会出现功能减少的情况。

    • FORCE

      服务器会根据需要升级数据字典、性能模式和 INFORMATION_SCHEMA(步骤 1)。此外,服务器会强制升级所有其他内容(步骤 2)。使用此选项时,服务器启动时间会更长,因为服务器会检查所有模式中的所有对象。

      如果服务器认为不需要执行步骤 2 操作,则 FORCE 可用于强制执行步骤 2 操作。例如,您可能认为系统表丢失或已损坏,并且想要强制修复。

    下表总结了服务器针对每个选项值采取的操作。

    选项值 服务器是否执行步骤 1? 服务器是否执行步骤 2?
    AUTO 如有必要 如有必要
    NONE
    MINIMAL 如有必要
    FORCE 如有必要
  • --user={用户名|用户 ID}, -u {用户名|用户 ID}

    命令行格式 --user=名称
    类型 字符串

    以具有名称 用户名 或数字用户 ID 用户 ID 的用户身份运行 mysqld 服务器。(此上下文中的“用户”是指系统登录帐户,而不是授权表中列出的 MySQL 用户。)

    root 身份启动 mysqld 时,此选项是 必需的。服务器会在其启动序列期间更改其用户 ID,从而使其以该特定用户的身份运行,而不是以 root 的身份运行。请参阅 第 8.1.1 节“安全准则”

    为避免用户将 --user=root 选项添加到 my.cnf 文件(从而导致服务器以 root 身份运行)的潜在安全漏洞,mysqld 仅使用指定的第一个 --user 选项,如果存在多个 --user 选项,则会生成警告。在命令行选项之前处理 /etc/my.cnf$MYSQL_HOME/my.cnf 中的选项,因此建议您在 /etc/my.cnf 中放置一个 --user 选项,并指定一个非 root 的值。/etc/my.cnf 中的选项位于任何其他 --user 选项之前,这可确保服务器以非 root 的用户身份运行,并且如果发现任何其他 --user 选项,则会生成警告。

  • --validate-config

    命令行格式 --validate-config[={OFF|ON}]
    类型 布尔值
    默认值 OFF

    验证服务器启动配置。如果没有发现错误,则服务器将以退出代码 0 终止。如果发现错误,则服务器将显示诊断消息并以退出代码 1 终止。根据 log_error_verbosity 值,也可能会显示警告和信息消息,但不会导致立即验证终止或退出代码 1。有关更多信息,请参阅 第 7.1.3 节“服务器配置验证”

  • --validate-user-plugins[={OFF|ON}]

    命令行格式 --validate-user-plugins[={OFF|ON}]
    类型 布尔值
    默认值 ON

    如果启用此选项(默认),则服务器将检查每个用户帐户,如果发现会导致帐户不可用的情况,则会生成警告

    • 该帐户需要一个未加载的身份验证插件。

    • 该帐户需要 sha256_password(已弃用)或 caching_sha2_password 身份验证插件,但服务器是在未按照插件要求启用 SSL 或 RSA 的情况下启动的。

    启用 --validate-user-plugins 会降低服务器初始化和 FLUSH PRIVILEGES 的速度。如果您不需要额外的检查,可以在启动时禁用此选项,以避免性能下降。

  • --verbose, -v

    将此选项与 --help 选项一起使用以获取详细帮助。

  • --version, -V

    显示版本信息并退出。