启动 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 输出中;这是因为它们只是选项,而不是系统变量。
以下列表显示了一些最常见的服务器选项。其他部分描述了其他选项
影响安全性的选项:参见 第 8.1.4 节,“与安全性相关的 mysqld 选项和变量”.
与 SSL 相关的选项:参见 加密连接的命令选项.
二进制日志控制选项:参见 第 7.4.4 节,“二进制日志”.
与复制相关的选项:参见 第 19.1.6 节,“复制和二进制日志记录选项和变量”.
用于加载插件(例如可插拔存储引擎)的选项:参见 第 7.6.1 节,“安装和卸载插件”.
特定于特定存储引擎的选项:参见 第 17.14 节,“InnoDB 启动选项和系统变量” 和 第 18.2.1 节,“MyISAM 启动选项”.
某些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从分配给缓冲区的总内存中分配,并且所需的存储空间可能与平台相关。这意味着,当您为控制缓冲区大小的选项分配一个值时,实际可用的存储空间可能与分配的值不同。在某些情况下,数量可能小于分配的值。服务器也可能向上调整值。例如,如果您为最小值为 1024 的选项分配 0 的值,则服务器将该值设置为 1024。
除非另有说明,缓冲区大小、长度和堆栈大小的值以字节为单位。
某些选项采用文件名值。除非另有说明,否则默认文件位置是数据目录,如果该值是相对路径名。要显式指定位置,请使用绝对路径名。假设数据目录是 /var/mysql/data。如果文件值选项被指定为相对路径名,则它位于 /var/mysql/data 下。如果该值是绝对路径名,则其位置由路径名指定。
您也可以在服务器启动时使用变量名作为选项来设置服务器系统变量的值。要为服务器系统变量分配值,请使用以下形式的选项:--。例如,var_name=value--sort_buffer_size=384M 将sort_buffer_size 变量设置为 384MB。
当您为变量分配值时,MySQL 可能会自动校正该值以保持在给定范围内,或者如果只允许某些值,则调整该值以使其成为最接近的允许值。
要使用SET 语句限制在运行时可以设置的系统变量的最大值,请在服务器启动时使用以下形式的选项指定此最大值:--maximum-。var_name=value
您可以使用SET 语句在运行时更改大多数系统变量的值。请参阅 第 15.7.6.1 节,“SET 语法用于变量分配”。
第 7.1.8 节,“服务器系统变量” 提供了所有变量的完整描述,以及在服务器启动和运行时设置它们的附加信息。有关更改系统变量的信息,请参阅 第 7.1.1 节,“配置服务器”。
--help,-?命令行格式 --help-
命令行格式 --allow-suspicious-udfs[={OFF|ON}]类型 布尔值 默认值 OFF此选项控制是否可以加载仅具有主函数的
xxx符号的可加载函数。默认情况下,该选项处于关闭状态,并且仅可以加载具有至少一个辅助符号的可加载函数;这可以防止尝试从包含合法函数以外的共享对象文件加载函数。请参阅 可加载函数安全注意事项。 -
命令行格式 --ansi使用标准 (ANSI) SQL 语法而不是 MySQL 语法。要更精确地控制服务器 SQL 模式,请改用
--sql-mode选项。请参阅 第 1.7 节,“MySQL 标准符合性” 和 第 7.1.11 节,“服务器 SQL 模式”。 --basedir=,dir_name-bdir_nameMySQL 安装目录的路径。此选项设置
basedir系统变量。服务器可执行文件在启动时确定其自身的完整路径名,并使用其所在目录的父目录作为默认的
basedir值。这反过来使服务器能够在搜索与服务器相关的信息(例如包含错误消息的share目录)时使用该basedir。--chroot=,dir_name-rdir_name命令行格式 --chroot=dir_name类型 目录名称 通过使用
chroot()系统调用,在启动时将 mysqld 服务器置于封闭环境中。这是推荐的安全措施。使用此选项会稍微限制LOAD DATA和SELECT ... INTO OUTFILE。-
命令行格式 --console平台特定 Windows (仅限 Windows。) 使默认的错误日志目标为控制台。这会影响基于默认目标的日志接收器。请参阅 第 7.4.2 节,“错误日志”。如果使用此选项,mysqld 不会关闭控制台窗口。
如果同时给出
--console和--log-error,则--console优先。 -
命令行格式 --core-file使用此选项时,如果 mysqld 意外终止,则会写入一个核心文件;不需要(或不接受)任何参数。核心文件的名称和位置取决于系统。在 Linux 上,一个名为
core.的核心文件将写入进程的当前工作目录,对于 mysqld 来说,它是数据目录。pidpid代表服务器进程的进程 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-hdir_nameMySQL 服务器数据目录的路径。此选项设置
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=1CMake 选项进行配置,则可以使用此选项来获取 mysqld 所做操作的跟踪文件。典型的debug_options字符串是d:t:o,。默认情况下,在 Unix 上为file_named: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[=#]类型 整数 控制用于测试和调试的 Debug Sync 功能是否启用。使用 Debug Sync 需要 MySQL 使用
-DWITH_DEBUG=ONCMake 选项进行配置(请参阅 第 2.8.7 节,“MySQL 源代码配置选项”);否则,此选项将不可用。选项值是以秒为单位的超时时间。默认值为 0,它禁用 Debug Sync。要启用它,请指定大于 0 的值;此值也将成为各个同步点的默认超时时间。如果在没有值的情况下给出选项,则超时时间设置为 300 秒。有关 Debug Sync 功能的说明以及如何使用同步点的说明,请参阅 MySQL 内部:测试同步。
-
命令行格式 --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 节,“影响选项文件处理的命令行选项”。
仅读取给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name不是绝对路径名,则它将相对于当前目录进行解释。例外:即使使用
--defaults-file,mysqld 也会读取mysqld-auto.cnf。注意如果使用此选项,它必须是命令行上的第一个选项,但如果服务器使用
--defaults-file和--install(或--install-manual)选项启动,则--install(或--install-manual)必须放在前面。有关此选项和其他选项文件选项的更多信息,请参见 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
不仅读取通常的选项组,还读取具有通常名称和
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_library和name=plugin_library值列表。每个plugin_library是包含插件代码的库文件名称,每个name是要加载的插件名称。如果插件库的名称没有任何前面的插件名称,则服务器将加载库中的所有插件。如果前面有插件名称,则服务器将仅加载库中命名的插件。服务器在由plugin_dir系统变量指定的目录中查找插件库文件。例如,如果名为
myplug1和myplug2的插件包含在插件库文件myplug1.so和myplug2.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[={OFF|ON}]类型 布尔值 默认值 OFF启用外部锁定(系统锁定),默认情况下禁用。如果在
lockd无法正常工作的系统(例如 Linux)上使用此选项,mysqld 很容易死锁。要显式禁用外部锁定,请使用
--skip-external-locking。外部锁定仅影响
MyISAM表访问。有关更多信息,包括可以在哪些情况下使用和不能使用它的条件,请参见 第 10.11.5 节,“外部锁定”。 -
在每个 SQL 语句之后刷新(同步)所有更改到磁盘。通常,MySQL 仅在每个 SQL 语句之后将所有更改写入磁盘,并让操作系统处理同步到磁盘。参见 第 B.3.3.3 节,“如果 MySQL 持续崩溃,该怎么办”。
注意如果指定了
--flush,则flush_time的值无关紧要,对flush_time的更改不会影响刷新行为。 -
命令行格式 --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[={OFF|ON}]类型 布尔值 默认值 OFF此选项用于通过创建数据目录并填充
mysql系统模式中的表来初始化MySQL安装。此选项意味着--initialize,并且相同的限制和局限性适用;有关更多信息,请参见该选项的描述以及第2.9.1节,“初始化数据目录”。警告此选项创建了一个没有密码的MySQL
root用户,这是不安全的。因此,在生产环境中,不要在不手动设置此密码的情况下使用它。有关如何执行此操作的信息,请参见初始化后root密码分配。 --innodb-xxx为
InnoDB存储引擎设置一个选项。InnoDB选项列在第17.14节,“InnoDB启动选项和系统变量”中。-
命令行格式 --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[={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=name系统变量 lc_messages范围 全局,会话 动态 是 SET_VAR提示适用否 类型 字符串 默认值 en_US用于错误消息的区域设置。默认值为
en_US。服务器将参数转换为语言名称,并将其与--lc-messages-dir的值组合起来,以生成错误消息文件的路径。请参见第12.12节,“设置错误消息语言”。 -
命令行格式 --lc-messages-dir=dir_name系统变量 lc_messages_dir范围 全局 动态 否 SET_VAR提示适用否 类型 目录名称 错误消息所在的目录。服务器使用该值以及
--lc-messages的值来生成错误消息文件的路径。请参见第12.12节,“设置错误消息语言”。 -
命令行格式 --local-service(仅限Windows) 服务名称后面的
--local-service选项会导致服务器使用具有有限系统特权的LocalServiceWindows帐户运行。如果服务名称后面同时提供了--defaults-file和--local-service,则它们可以按任何顺序排列。请参见第2.3.3.8节,“将MySQL作为Windows服务启动”。 -
将默认错误日志目标设置为指定的文件。这会影响基于其自身输出目标的默认目标的日志接收器。请参见第7.4.2节,“错误日志”。
如果选项没有指定文件,则Unix和类似Unix的系统上的默认错误日志目标是在数据目录中名为
的文件。Windows上的默认目标相同,除非指定了host_name.err--pid-file选项。在这种情况下,文件名是在数据目录中带有.err后缀的PID文件基本名称。如果选项指定了文件,则默认目标是该文件(如果名称没有后缀,则添加
.err后缀),位于数据目录下,除非给出绝对路径名称以指定其他位置。如果错误日志输出无法重定向到错误日志文件,则会发生错误,启动失败。
在Windows上,如果同时给出
--console和--log-error,则--console优先。在这种情况下,默认错误日志目标是控制台而不是文件。 -
命令行格式 --log-isam[=file_name]类型 文件名 将所有
MyISAM更改记录到此文件(仅在调试MyISAM时使用)。 -
服务器将某些写入通用查询日志、慢速查询日志和二进制日志的语句中的密码重写,使其不会以纯文本形式出现。可以使用
--log-raw选项启动服务器,以抑制对通用查询日志的密码重写。此选项可能对诊断有用,以查看服务器收到的语句的确切文本,但出于安全原因,不建议在生产环境中使用。如果安装了查询重写插件,则
--log-raw选项会影响语句记录,如下所示:有关更多信息,请参见第8.1.2.3节,“密码和日志记录”。
-
命令行格式 --log-short-format[={OFF|ON}]类型 布尔值 默认值 OFF如果已激活慢速查询日志,则记录到慢速查询日志的信息更少。
-
命令行格式 --log-tc=file_name类型 文件名 默认值 tc.log内存映射事务协调器日志文件的文件名(用于在禁用二进制日志时影响多个存储引擎的XA事务)。默认名称为
tc.log。如果未给出完整路径名,则该文件将创建在数据目录下。此选项未被使用。 -
命令行格式 --log-tc-size=#类型 整数 默认值 6 * 页面大小最小值 6 * 页面大小最大值(64位平台) 18446744073709551615最大值(32位平台) 4294967295内存映射事务协调器日志的大小(以字节为单位)。默认值和最小值是页面大小的6倍,并且该值必须是页面大小的倍数。
-
命令行格式 --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=#类型 整数 默认值 1024最小值 1024最大值 16384用于
MyISAM索引页面的块大小。 不读取任何选项文件。如果程序启动因从选项文件读取未知选项而失败,则可以使用
--no-defaults阻止读取它们。如果使用,这必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --no-monitor[={OFF|ON}]平台特定 Windows 类型 布尔值 默认值 OFF(仅限 Windows)。此选项抑制用于实现
RESTART语句的 fork 操作:Fork 操作使一个进程能够充当另一个进程的监控器,而另一个进程充当服务器。对于使用此选项启动的服务器,RESTART只会退出,不会重新启动。 --performance-schema-xxx配置性能模式选项。有关详细信息,请参阅 第 29.14 节,“性能模式命令选项”。
-
命令行格式 --plugin-load=plugin_list类型 字符串 此选项指示服务器在启动时加载指定的插件。如果给出多个
--plugin-load选项,则只有最后一个选项适用。可以使用--plugin-load-add选项来指定要加载的额外插件。选项值为一个以分号分隔的
plugin_library和name=plugin_library值列表。每个plugin_library是包含插件代码的库文件名称,每个name是要加载的插件名称。如果插件库的名称没有任何前面的插件名称,则服务器将加载库中的所有插件。如果前面有插件名称,则服务器将仅加载库中命名的插件。服务器在由plugin_dir系统变量指定的目录中查找插件库文件。例如,如果名为
myplug1和myplug2的插件包含在插件库文件myplug1.so和myplug2.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 SchemaPLUGINS表中找到更多详细信息。请参阅 第 7.6.2 节,“获取服务器插件信息”。有关插件加载的更多信息,请参阅 第 7.6.1 节,“安装和卸载插件”。
-
命令行格式 --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 SchemaPLUGINS表中找到更多详细信息。请参阅 第 7.6.2 节,“获取服务器插件信息”。有关插件加载的更多信息,请参阅 第 7.6.1 节,“安装和卸载插件”。
指定一个与服务器插件相关的选项。例如,许多存储引擎可以作为插件构建,对于此类引擎,可以使用
--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-Pport_num监听 TCP/IP 连接时要使用的端口号。在 Unix 和类 Unix 系统上,除非服务器由
root操作系统用户启动,否则端口号必须为 1024 或更高。将此选项设置为 0 将导致使用默认值。-
命令行格式 --port-open-timeout=#类型 整数 默认值 0在某些系统上,当服务器停止时,TCP/IP 端口可能不会立即可用。如果服务器随后很快重新启动,它尝试重新打开端口可能会失败。此选项指示服务器在无法打开 TCP/IP 端口时应等待多少秒,以使该端口变为可用。默认情况下不等待。
打印程序名称和它从选项文件获取的所有选项。密码值被屏蔽。如果使用,这必须是命令行上的第一个选项,但它可以在
--defaults-file或--defaults-extra-file之后立即使用。有关此选项和其他选项文件选项的更多信息,请参见 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
命令行格式 --remove [service_name]平台特定 Windows (仅限 Windows) 删除 MySQL Windows 服务。如果未给出
service_name值,则默认服务名称为MySQL。有关更多信息,请参阅 第 2.3.3.8 节,“将 MySQL 作为 Windows 服务启动”。 -
命令行格式 --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[={OFF|ON}]类型 布尔值 默认值 OFF此选项会影响服务器启动序列
--skip-grant-tables会导致服务器不读取mysql系统架构中的授权表,因此在不使用权限系统的情况下启动。这将使任何有权访问服务器的人 不受限制地访问所有数据库。由于使用
--skip-grant-tables启动服务器会禁用身份验证检查,因此服务器还会通过启用skip_networking来禁用这种情况下的远程连接。要使使用
--skip-grant-tables启动的服务器在运行时加载授权表,请执行授权刷新操作,这可以通过以下方式完成连接到服务器后,发出 MySQL
FLUSH PRIVILEGES语句。从命令行执行 mysqladmin flush-privileges 或 mysqladmin reload 命令。
授权刷新也可能在启动后执行的其他操作的结果中隐式发生,从而导致服务器开始使用授权表。例如,如果服务器在启动序列期间执行升级,则它将刷新授权。
--skip-grant-tables会禁用失败登录跟踪和临时帐户锁定,因为这些功能依赖于授权表。请参阅 第 8.2.15 节,“密码管理”。--skip-grant-tables会导致服务器不加载在数据字典或mysql系统架构中注册的某些其他对象使用
CREATE EVENT安装并在events数据字典表中注册的计划事件。使用
INSTALL PLUGIN安装并在mysql.plugin系统表中注册的插件。即使使用
--skip-grant-tables,也可以使用--plugin-load或--plugin-load-add选项加载插件。使用
CREATE FUNCTION安装并注册在mysql.func系统表中的可加载函数。
--skip-grant-tables不会抑制启动时组件的加载。
-
命令行格式 --skip-new已弃用 是 此选项禁用(以前被认为是)新的、可能不安全的行为。它会导致以下设置:
delay_key_write=OFF,concurrent_insert=NEVER,automatic_sp_privileges=OFF。它还会导致OPTIMIZE TABLE映射到ALTER TABLE,用于不支持OPTIMIZE TABLE的存储引擎。此选项已弃用,将在将来的版本中删除。
-
命令行格式 --skip-show-database系统变量 skip_show_database范围 全局 动态 否 SET_VAR提示适用否 类型 布尔值 默认值 OFF此选项设置
skip_show_database系统变量,该变量控制谁被允许使用SHOW DATABASES语句。参见第 7.1.8 节,“服务器系统变量”。 -
命令行格式 --skip-stack-trace不写入堆栈跟踪。当您在调试器下运行mysqld时,此选项很有用。在某些系统上,您还必须使用此选项才能获得核心文件。参见第 7.9 节,“调试 MySQL”。
-
命令行格式 --slow-start-timeout=#类型 整数 默认值 15000此选项控制 Windows 服务控制管理器的服务启动超时。该值为服务控制管理器在启动期间尝试杀死 Windows 服务之前等待的最大毫秒数。默认值为 15000(15 秒)。如果 MySQL 服务启动时间过长,您可能需要增加此值。值为 0 表示没有超时。
-
命令行格式 --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_DATESANSI_QUOTESERROR_FOR_DIVISION_BY_ZEROHIGH_NOT_PRECEDENCEIGNORE_SPACENO_AUTO_VALUE_ON_ZERONO_BACKSLASH_ESCAPESNO_DIR_IN_CREATENO_ENGINE_SUBSTITUTIONNO_UNSIGNED_SUBTRACTIONNO_ZERO_DATENO_ZERO_IN_DATEONLY_FULL_GROUP_BYPAD_CHAR_TO_FULL_LENGTHPIPES_AS_CONCATREAL_AS_FLOATSTRICT_ALL_TABLESSTRICT_TRANS_TABLESTIME_TRUNCATE_FRACTIONAL设置 SQL 模式。参见第 7.1.11 节,“服务器 SQL 模式”。
注意MySQL 安装程序可能会在安装过程中配置 SQL 模式。
如果 SQL 模式与默认值或您的预期值不同,请检查服务器在启动时读取的选项文件中的设置。
-
命令行格式 --standalone平台特定 Windows 仅在 Windows 上可用;指示 MySQL 服务器不要作为服务运行。
-
命令行格式 --super-large-pages[={OFF|ON}]平台特定 Solaris 类型 布尔值 默认值 OFFMySQL 中大型页面的标准使用尝试使用支持的最大尺寸,最高可达 4MB。在 Solaris 下,“超大型页面”功能支持使用高达 256MB 的页面。此功能适用于最新的 SPARC 平台。可以通过使用
--super-large-pages或--skip-super-large-pages选项来启用或禁用此功能。 --symbolic-links,--skip-symbolic-links命令行格式 --symbolic-links[={OFF|ON}]已弃用 是 类型 布尔值 默认值 OFF启用或禁用符号链接支持。在 Unix 上,启用符号链接意味着您可以使用
INDEX DIRECTORY或DATA DIRECTORY选项将MyISAM索引文件或数据文件链接到另一个目录CREATE TABLE语句。如果您删除或重命名表,其符号链接指向的文件也会被删除或重命名。参见第 10.12.2.2 节,“在 Unix 上使用 MyISAM 表的符号链接”。注意符号链接支持以及控制它的
--symbolic-links选项已弃用;您应该预计它将在 MySQL 的未来版本中被删除。此外,默认情况下该选项被禁用。相关的have_symlink系统变量也已弃用;预计它将在 MySQL 的未来版本中被删除。此选项在 Windows 上没有意义。
-
命令行格式 --sysdate-is-now[={OFF|ON}]类型 布尔值 默认值 OFFSYSDATE()默认返回它执行的时间,而不是包含它的语句开始执行的时间。这与NOW()的行为不同。此选项会导致SYSDATE()成为NOW()的同义词。有关二进制日志记录和复制的影响的信息,请参见第 14.7 节,“日期和时间函数”中对SYSDATE()的描述,以及第 7.1.8 节,“服务器系统变量”中对SET TIMESTAMP的描述。 --tc-heuristic-recover={COMMIT|ROLLBACK}命令行格式 --tc-heuristic-recover=name类型 枚举 默认值 OFF有效值 OFFCOMMITROLLBACK手动启发式恢复中要使用的决定。
如果指定了
--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=name系统变量 transaction_isolation范围 全局,会话 动态 是 SET_VAR提示适用否 类型 枚举 默认值 REPEATABLE-READ有效值 READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE设置默认的事务隔离级别。
level值可以是READ-UNCOMMITTED,READ-COMMITTED,REPEATABLE-READ,或SERIALIZABLE。参见第 15.3.7 节,“SET TRANSACTION 语句”。默认事务隔离级别也可以在运行时使用
SET TRANSACTION语句设置,或者通过设置transaction_isolation系统变量设置。 -
命令行格式 --transaction-read-only[={OFF|ON}]系统变量 transaction_read_only范围 全局,会话 动态 是 SET_VAR提示适用否 类型 布尔值 默认值 OFF设置默认的事务访问模式。默认情况下,只读模式被禁用,因此该模式为读/写。
要设置默认的事务访问模式,请在运行时使用
SET TRANSACTION语句或设置transaction_read_only系统变量。参见第 15.3.7 节,“SET TRANSACTION 语句”。 --tmpdir=,dir_name-tdir_name用于创建临时文件的目录的路径。如果您的默认
/tmp目录位于太小的分区上,无法容纳临时表,这可能会有用。此选项接受多个路径,这些路径以循环方式使用。路径应在 Unix 上用冒号字符 (:) 分隔,在 Windows 上用分号字符 (;) 分隔。--tmpdir可以是非永久性位置,例如基于内存的文件系统上的目录或在服务器主机重新启动时清除的目录。如果 MySQL 服务器充当副本,并且您正在为--tmpdir使用非永久性位置,请考虑使用replica_load_tmpdir系统变量为副本设置一个不同的临时目录。对于副本,用于复制LOAD DATA语句的临时文件存储在此目录中,因此,使用永久性位置,它们可以在机器重新启动后存活,尽管如果临时文件已被删除,复制现在可以在重新启动后继续。有关临时文件存储位置的更多信息,请参见第 B.3.3.5 节,“MySQL 在哪里存储临时文件”。
-
命令行格式 --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[={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的速度。如果您不需要额外的检查,可以在启动时禁用此选项,以避免性能下降。将此选项与
--help选项一起使用以获取详细的帮助信息。--version,-V显示版本信息并退出。