启动 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
如果使用
-DWITH_DEBUG=1
CMake 选项配置 MySQL,则可以使用此选项来获取 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[=#]
类型 整数 控制是否启用用于测试和调试的“调试同步”功能。使用“调试同步”需要使用
-DWITH_DEBUG=ON
CMake 选项配置 MySQL(请参阅 第 2.8.7 节“MySQL 源配置选项”);否则,此选项不可用。选项值是以秒为单位的超时。默认值为 0,表示禁用“调试同步”。要启用它,请指定大于 0 的值;此值也成为各个同步点的默认超时。如果给出选项时不带值,则超时设置为 300 秒。有关“调试同步”功能以及如何使用同步点的说明,请参阅 MySQL 内部:测试同步。
-
命令行格式 --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 节 “影响选项文件处理的命令行选项”。
仅读取给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
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_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 密钥环进行加密密钥管理,并且必须在存储引擎初始化之前加载要使用的密钥环插件,以便于对加密表进行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[={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 [服务名称]
平台特定 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[={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=名称
系统变量 lc_messages
作用域 全局,会话 动态 是 SET_VAR
提示适用否 类型 字符串 默认值 en_US
用于错误消息的语言环境。默认值为
en_US
。服务器会将参数转换为语言名称,并将其与--lc-messages-dir
的值组合起来,以生成错误消息文件的位置。请参阅第 12.12 节“设置错误消息语言”。 -
命令行格式 --lc-messages-dir=目录名称
系统变量 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
选项。在这种情况下,文件名是在数据目录中,PID 文件基本名称后缀为.err
的文件。如果该选项指定了一个文件,则默认目标是该文件(如果名称没有后缀,则添加
.err
后缀),该文件位于数据目录下,除非指定了绝对路径名以指定其他位置。如果无法将错误日志输出重定向到错误日志文件,则会发生错误并且启动失败。
在 Windows 上,如果同时指定了
--console
和--log-error
,则--console
优先。在这种情况下,默认错误日志目标是控制台而不是文件。 -
命令行格式 --log-isam[=文件名]
类型 文件名 将所有
MyISAM
更改记录到此文件(仅在调试MyISAM
时使用)。 -
写入到常规查询日志、慢查询日志和二进制日志的某些语句中的密码会被服务器重写,以避免以纯文本形式出现。可以通过使用
--log-raw
选项启动服务器来禁止对常规查询日志进行密码重写。此选项可能有助于诊断,以便查看服务器接收到的语句的确切文本,但出于安全原因,不建议在生产环境中使用。如果安装了查询重写插件,则
--log-raw
选项会按如下方式影响语句日志记录有关更多信息,请参阅第 8.1.2.3 节“密码和日志记录”。
-
命令行格式 --log-short-format[={OFF|ON}]
类型 布尔值 默认值 OFF
如果已激活慢查询日志,则记录到其中的信息会更少。
-
命令行格式 --log-tc=文件名
类型 文件名 默认值 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
索引页的块大小。 -
命令行格式 --mysql-native-password={OFF|ON}
已弃用 是 类型 布尔值 默认值 OFF
启用
mysql_native_password
身份验证插件,该插件在 MySQL 8.4 中默认禁用。有关更多信息,请参阅 第 8.4.1.1 节“原生可插拔身份验证”。
不读取任何选项文件。如果程序启动由于从选项文件读取未知选项而失败,则可以使用
--no-defaults
来防止读取它们。如果使用此选项,则它必须是命令行上的第一个选项。有关此选项文件选项和其他选项文件选项的更多信息,请参阅第 6.2.2.3 节 “影响选项文件处理的命令行选项”。
-
命令行格式 --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-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
如果启用此选项,则用户无法使用
GRANT
语句创建新的 MySQL 用户,除非该用户对mysql.user
系统表或该表中的任何列具有INSERT
权限。如果希望用户能够创建具有该用户有权授予的权限的新用户,则应向该用户授予以下权限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-grant-tables
会导致disabled_storage_engines
系统变量失效。
-
命令行格式 --skip-new
已弃用 是 此选项会禁用(以前被认为)新的、可能不安全的行为。它会导致以下设置:
delay_key_write=OFF
、concurrent_insert=NEVER
、automatic_sp_privileges=OFF
。它还会导致OPTIMIZE TABLE
对于不支持OPTIMIZE TABLE
的存储引擎映射到ALTER 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 上,启用符号链接意味着您可以使用
CREATE TABLE
语句的INDEX DIRECTORY
或DATA DIRECTORY
选项将MyISAM
索引文件或数据文件链接到另一个目录。如果删除或重命名表,则其符号链接指向的文件也会被删除或重命名。请参阅 第 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
目录位于太小而无法容纳临时表的 Partiton 上,则此选项可能会有用。此选项接受以循环方式使用的多个路径。在 Unix 上,路径应以冒号 (:
) 分隔;在 Windows 上,路径应以分号 (;
) 分隔。--tmpdir
可以是非永久性位置,例如基于内存的文件系统上的目录或服务器主机重新启动时清除的目录。如果 MySQL 服务器充当副本,并且您正在对--tmpdir
使用非永久性位置,请考虑使用replica_load_tmpdir
系统变量为副本设置不同的临时目录。对于副本,用于复制LOAD DATA
语句的临时文件存储在此目录中,因此使用永久性位置,它们可以在机器重新启动后继续存在,尽管如果临时文件已被删除,复制现在可以在重新启动后继续。有关临时文件存储位置的更多信息,请参阅 第 B.3.3.5 节“MySQL 存储临时文件的位置”。
-
命令行格式 --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[={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
显示版本信息并退出。