文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

    如果 MySQL 使用 -DWITH_DEBUG=1 CMake 选项进行配置,则可以使用此选项来获取 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[=#]
    类型 整数

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

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

  • --default-time-zone=timezone

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

    设置默认服务器时区。此选项设置全局 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_list
    类型 字符串
    默认值 空字符串

    此选项告诉服务器在加载强制性内置插件和存储引擎初始化之前加载哪些插件。早期加载仅支持使用 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 Keyring 进行加密密钥管理,并且要使用的 keyring 插件必须在存储引擎初始化之前加载,以便为加密的表提供 InnoDB 恢复。例如,希望在启动时加载 keyring_okv 插件的管理员应该将 --early-plugin-load 与适当的选项值一起使用(例如,在 Unix 和类 Unix 系统上使用 keyring_okv.so,在 Windows 上使用 keyring_okv.dll)。

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

    注意

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

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

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

    这是一个用于调试 mysqld 服务器的不同标志的位掩码。除非你完全了解它的作用,否则不要使用此选项!

  • --external-locking

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

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

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

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

  • --flush

    命令行格式 --flush[={OFF|ON}]
    系统变量 flush
    范围 全局
    动态
    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 [service_name]
    平台特定 Windows

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

    注意

    如果服务器使用--defaults-file--install选项启动,则--install必须放在前面。

  • --install-manual [service_name]

    命令行格式 --install-manual [service_name]
    平台特定 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=name
    系统变量 lc_messages
    范围 全局,会话
    动态
    SET_VAR 提示适用
    类型 字符串
    默认值 en_US

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

  • --lc-messages-dir=dir_name

    命令行格式 --lc-messages-dir=dir_name
    系统变量 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[=file_name]
    系统变量 log_error
    范围 全局
    动态
    SET_VAR 提示适用
    类型 文件名

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

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

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

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

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

  • --log-isam[=file_name]

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

    将所有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=file_name
    类型 文件名
    默认值 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 索引页面的块大小。

  • --no-defaults

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

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

  • --no-monitor

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

    (仅限 Windows)。此选项抑制用于实现 RESTART 语句的 fork 操作:Fork 操作使一个进程能够充当另一个进程的监控器,而另一个进程充当服务器。对于使用此选项启动的服务器,RESTART 只会退出,不会重新启动。

  • --performance-schema-xxx

    配置性能模式选项。有关详细信息,请参阅 第 29.14 节,“性能模式命令选项”

  • --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

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

    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映射到ALTER TABLE,用于不支持OPTIMIZE 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 上,启用符号链接意味着您可以使用INDEX DIRECTORYDATA DIRECTORY选项将MyISAM索引文件或数据文件链接到另一个目录CREATE TABLE语句。如果您删除或重命名表,其符号链接指向的文件也会被删除或重命名。参见第 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-READ,或SERIALIZABLE。参见第 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目录位于太小的分区上,无法容纳临时表,这可能会有用。此选项接受多个路径,这些路径以循环方式使用。路径应在 Unix 上用冒号字符 (:) 分隔,在 Windows 上用分号字符 (;) 分隔。

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

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

  • --upgrade=value

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

    自动

    最小

    强制

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

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

      此步骤升级

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

      • 性能模式和INFORMATION_SCHEMA

    • 步骤 2:服务器升级。

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

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

      • The sys 模式。

      • 用户模式。

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

    以下--upgrade 选项值是允许的

    • 自动

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

    • 服务器在启动过程中不会执行任何自动升级步骤(跳过步骤 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.
    • 最小

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

    • 强制

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

      FORCE 用于强制执行步骤 2 操作,即使服务器认为这些操作不是必需的。例如,您可能认为系统表丢失或已损坏,并希望强制执行修复。

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

    选项值 服务器执行步骤 1 吗? 服务器执行步骤 2 吗?
    自动 如果需要 如果需要
    最小 如果需要
    强制 如果需要
  • --user={user_name|user_id}, -u {user_name|user_id}

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

    以具有名称user_name 或数字用户 IDuser_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 中的选项,因此建议您将--user 选项放在/etc/my.cnf 中,并指定除 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_passwordcaching_sha2_password 身份验证插件,但服务器启动时未启用 SSL 或 RSA,而这两种方法是插件所需的。

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

  • --verbose, -v

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

  • --version, -V

    显示版本信息并退出。