启动 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
-b
dir_name
MySQL 安装目录的路径。此选项设置
basedir
系统变量。服务器可执行文件在启动时确定其自身的完整路径名,并使用其所在目录的父目录作为默认的
basedir
值。这反过来使服务器能够在搜索与服务器相关的信息(例如包含错误消息的share
目录)时使用该basedir
。--chroot=
,dir_name
-r
dir_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 来说,它是数据目录。pid
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
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,
。默认情况下,在 Unix 上为file_name
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[=#]
类型 整数 控制用于测试和调试的 Debug Sync 功能是否启用。使用 Debug Sync 需要 MySQL 使用
-DWITH_DEBUG=ON
CMake 选项进行配置(请参阅 第 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
选项会导致服务器使用具有有限系统特权的LocalService
Windows帐户运行。如果服务名称后面同时提供了--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
-P
port_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_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
平台特定 Windows 仅在 Windows 上可用;指示 MySQL 服务器不要作为服务运行。
-
命令行格式 --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 DIRECTORY
或DATA DIRECTORY
选项将MyISAM
索引文件或数据文件链接到另一个目录CREATE TABLE
语句。如果您删除或重命名表,其符号链接指向的文件也会被删除或重命名。参见第 10.12.2.2 节,“在 Unix 上使用 MyISAM 表的符号链接”。注意符号链接支持以及控制它的
--symbolic-links
选项已弃用;您应该预计它将在 MySQL 的未来版本中被删除。此外,默认情况下该选项被禁用。相关的have_symlink
系统变量也已弃用;预计它将在 MySQL 的未来版本中被删除。此选项在 Windows 上没有意义。
-
命令行格式 --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=name
系统变量 transaction_isolation
范围 全局,会话 动态 是 SET_VAR
提示适用否 类型 枚举 默认值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
设置默认的事务隔离级别。
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
-t
dir_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
显示版本信息并退出。