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
输出中,因为它们是选项,而不是系统变量。
以下是最常用的服务器选项列表。其他选项在其他部分中描述:
-
影响安全的选项:见第8.1.4节,“安全相关的 mysqld 选项和变量”。
-
SSL 相关选项:见加密连接选项。
-
二进制日志控制选项:见第7.4.4节,“二进制日志”。
-
复制相关选项:见第19.1.6节,“复制和二进制日志选项和变量”。
-
加载插件选项,例如可插拔存储引擎:见第7.6.1节,“安装和卸载插件”。
-
特定存储引擎的选项:见第17.14节,“InnoDB启动选项和系统变量”和第18.2.1节,“MyISAM启动选项”。
一些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从缓冲区的总内存中分配,需要的空间可能取决于平台。因此,当您将一个控制缓冲区大小的选项的值分配给服务器时,实际可用的空间可能不同于分配的值。在某些情况下,实际可用的空间可能小于分配的值。服务器也可能会将值上调。例如,如果您将一个选项的值分配为0,而该选项的最小值为1024,服务器将将值设置为1024。
缓冲区大小、长度和堆栈大小的值除非另有指定,否则以字节为单位。
一些选项需要文件名值。除非另有指定,文件的默认位置是数据目录。如果值是相对路径名,文件将位于数据目录下。如果值是绝对路径名,文件的位置将是路径名指定的。
您也可以在服务器启动时使用变量名称作为选项来设置服务器系统变量。要将值分配给服务器系统变量,请使用以下形式的选项:--
。例如,var_name
=value
--sort_buffer_size=384M
将sort_buffer_size
变量设置为384MB。
当您将值分配给变量时,MySQL可能会自动将值调整到一个给定的范围内,或者将值调整到最近的可允许的值,如果只有某些值是允许的。
要限制系统变量的最大值,可以在服务器启动时使用以下形式的选项:--maximum-
。var_name
=value
您可以使用SET
语句在运行时更改大多数系统变量的值。见第15.7.6.1节,“SET Syntax for Variable Assignment”。
第7.1.8节,“服务器系统变量”中提供了所有变量的详细描述,以及在服务器启动和运行时设置它们的信息。关于更改系统变量的信息,请参见第7.1.1节,“配置服务器”。
-
--help
,-?
Command-Line Format --help
-
Command-Line Format --allow-suspicious-udfs[={OFF|ON}]
Type 布尔 Default Value OFF
该选项控制是否可以加载具有主函数的可加载函数,但只有在具有至少一个辅助符的可加载函数时才可以加载;这可以防止从其他共享对象文件中加载函数。详见可加载函数安全预防措施。
-
Command-Line Format --ansi
使用标准(ANSI)SQL语法代替MySQL语法。对于更精确地控制服务器SQL模式,请使用
--sql-mode
选项。详见第1.7节,“MySQL标准兼容性”和第7.1.11节,“服务器SQL模式”。 -
--basedir=
,dir_name
-b
dir_name
Command-Line Format --basedir=dir_name
System Variable basedir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名称 Default Value MySQL安装目录的父目录
MySQL安装目录的路径。这选项设置
basedir
系统变量。服务器可执行文件在启动时确定自己的完整路径名,并将其所在目录的父目录作为默认
basedir
值。这使得服务器可以使用该basedir
来搜索相关信息,例如错误信息的share
目录。 -
--chroot=
,dir_name
-r
dir_name
Command-Line Format --chroot=dir_name
Type 目录名称 在启动时使用
chroot()
系统调用将mysqld服务器置于封闭环境中。这是一种安全建议。使用该选项将限制LOAD DATA
和SELECT ... INTO OUTFILE
。 -
Command-Line Format --console
Platform Specific Windows (仅适用于Windows.)将默认错误日志目标设置为控制台。这将影响基于默认目标的日志汇聚器。请参阅第7.4.2节,“错误日志”。mysqld不会关闭控制台窗口,如果使用了该选项。
--console
优先于--log-error
如果同时使用。 -
Command-Line Format --core-file
如果使用了该选项,mysqld将在崩溃时生成核心文件;不需要或接受任何参数。核心文件的名称和位置取决于系统。例如,在Linux上,核心文件名为
core.
,写入进程当前工作目录中,该目录为服务器的数据目录。pid
pid
表示服务器进程的ID。在macOS上,核心文件名为core.
,写入pid
/cores
目录中。在Solaris上,使用coreadm命令来指定核心文件的位置和名称。对于某些系统,获取核心文件还需要指定
--core-file-size
选项给mysqld_safe。请参阅第6.3.2节,“mysqld_safe — MySQL Server Startup Script”。在某些系统,例如Solaris,您不能在使用--user
选项的情况下获取核心文件。可能还存在其他限制或限制。例如,您可能需要执行ulimit -c unlimited命令,然后启动服务器。请参阅您的系统文档。可以使用
innodb_buffer_pool_in_core_file
变量来减少支持该操作系统的核心文件大小。更多信息,请参阅第17.8.3.7节,“Excluding or Including Buffer Pool Pages from Core Files”。 -
--daemonize
,-D
Command-Line Format --daemonize[={OFF|ON}]
Type Boolean Default Value OFF
该选项使服务器以传统的守护进程方式运行,从而允许它在使用systemd进行进程控制的操作系统上运行。更多信息,请参阅第2.5.9节,“Managing MySQL Server with systemd”。
--daemonize
与--initialize
和--initialize-insecure
选项是互斥的。如果使用
--daemonize
选项启动服务器,并且不连接到TTY设备,则在缺省情况下,错误日志将被写入到默认日志文件中。-D
是--daemonize
的同义词。 -
--datadir=
,dir_name
-h
dir_name
Command-Line Format --datadir=dir_name
System Variable datadir
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Directory name MySQL服务器数据目录的路径。这选项设置
datadir
系统变量。请参阅该变量的描述。 -
--debug[=
,debug_options
]-# [
debug_options
]Command-Line Format --debug[=debug_options]
System Variable debug
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value (Unix) d:t:i:o,/tmp/mysqld.trace
Default Value (Windows) d:t:i:O,\mysqld.trace
如果 MySQL 配置了
-DWITH_DEBUG=1
CMake 选项,您可以使用该选项获取 mysqld 的跟踪文件。一个典型的debug_options
字符串是d:t:o,<em class="replaceable"><code>file_name</code></em>
。默认情况下,在 Unix 上是d:t:i:o,/tmp/mysqld.trace
,在 Windows 上是d:t:i:O,\mysqld.trace
。使用
-DWITH_DEBUG=1
配置 MySQL 时启用调试支持,可以在启动服务器时使用--debug="d,parser_debug"
选项。这将导致 Bison 解析器在处理 SQL 语句时将解析器跟踪写入到服务器的标准错误输出中。通常,这些输出将写入到错误日志中。该选项可以多次给出。以
+
或-
开头的值将添加到或从前一个值中减去。例如,--debug=T
--debug=+P
将设置值为P:T
。更多信息,请见 第7.9.4节,“The DBUG Package”。
-
Command-Line Format --debug-sync-timeout[=#]
Type 整数 控制 Debug Sync 测试和调试的启用。使用 Debug Sync 需要 MySQL 配置了
-DWITH_DEBUG=ON
CMake 选项(见 第2.8.7节,“MySQL Source-Configuration Options”);否则,这个选项不可用。该选项值是一个秒数。默认值为 0,禁用 Debug Sync。要启用它,请指定一个大于 0 的值;这个值也将成为单个同步点的默认超时。如果没有指定选项值,超时将设置为 300 秒。关于 Debug Sync 设施的描述和同步点使用方法,请见MySQL Internals: Test Synchronization。
-
Command-Line Format --default-time-zone=name
Type 字符串 设置服务器的默认时区。这选项设置了全局
time_zone
系统变量。如果不给出该选项,服务器的默认时区将是系统时区(由system_time_zone
系统变量指定的值。需要注意的是
system_time_zone
变量不同于time_zone
。虽然它们可能具有相同的值,但后者用于初始化每个客户端连接的时区。请见第7.1.15节,“MySQL Server Time Zone Support”。 -
在全局选项文件后读取,但是在 Unix 上是在用户选项文件之前读取。如果文件不存在或无法访问,出现错误。如果
文件名
不是绝对路径名,它将相对于当前目录解释。如果该选项在命令行中使用,必须是第一个选项。关于该选项和其他选项文件选项的更多信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”。
-
只读取给定的选项文件。如果文件不存在或无法访问,出现错误。如果
文件名
不是绝对路径名,它将相对于当前目录解释。例外:即使使用
--defaults-file
,mysqld仍然读取mysqld-auto.cnf
。Note这必须是命令行的第一个选项,如果使用服务器时,除非使用
--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
Command-Line Format --early-plugin-load=plugin_list
Type 字符串 Default Value 空字符串
这个选项告诉服务器在加载必需的内置插件和存储引擎初始化之前加载哪些插件。早期加载仅支持编译了
PLUGIN_OPT_ALLOW_EARLY
的插件。如果提供多个--early-plugin-load
选项,只有最后一个生效。该选项值是一个由
插件库
和名称
=
插件库
组成的分号分隔列表。每个插件库
是包含插件代码的库文件的名称,每个名称
是要加载的插件的名称。如果插件库没有任何前缀的插件名称,服务器将加载该库中的所有插件。带有插件名称的插件库,服务器将只加载该库中的指定插件。服务器在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
启动,指定的插件将不被加载。如果服务器使用
--help
,指定的插件将被加载,但不被初始化。这确保了插件选项在帮助消息中显示。InnoDB
表空间加密依赖于MySQL Keyring进行加密密钥管理,需要在存储引擎初始化之前加载插件库,以便在加密表中恢复InnoDB
。例如,管理员想要在启动时加载keyring_okv
插件,可以使用--early-plugin-load
选项和适当的选项值(例如keyring_okv.so
在Unix和Unix-like系统上或keyring_okv.dll
在Windows上)。关于
InnoDB
表空间加密的信息,请见第17.13节,“InnoDB Data-at-Rest Encryption”。关于插件加载的常规信息,请见第7.6.1节,“Installing and Uninstalling Plugins”。Note对于 MySQL Keyring,仅在使用密钥环插件管理密钥库时使用该选项。如果使用密钥环组件,而不是插件,指定组件加载使用清单文件;见第8.4.4.2节,“密钥环组件安装”。
-
--exit-info[=
,flags
]-T [
flags
]Command-Line Format --exit-info[=flags]
Type Integer 这是一个位掩码,可以用来调试mysqld服务器。不要使用这个选项,除非你知道它做什么!
-
Command-Line Format --external-locking[={OFF|ON}]
Type Boolean Default Value OFF
启用外部锁定(系统锁定),默认情况下禁用。如果在使用mysqld时,系统锁定不完全工作(例如,Linux),那么mysqld很容易死锁。
要禁用外部锁定,请使用
--skip-external-locking
。外部锁定只影响
MyISAM
表访问。更多信息,包括什么情况下可以和不能使用,请见第10.11.5节,“外部锁定”。 -
Command-Line Format --flush[={OFF|ON}]
System Variable flush
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
将所有更改写入磁盘后,每个 SQL 语句。通常,MySQL 在每个 SQL 语句后将所有更改写入磁盘,并让操作系统处理磁盘同步。见第B.3.3.3节,“如果 MySQL 总是崩溃”。
Note如果指定
--flush
,则flush_time
的值无关紧要,并且更改flush_time
对flush行为无效。 -
Command-Line Format --gdb[={OFF|ON}]
Type Boolean Default Value OFF
安装中断处理程序以捕捉
SIGINT
(需要在使用mysqld时Ctrl+C来设置断点)并禁用堆栈跟踪和核心文件处理。请参阅第7.9.1.4节,“使用 GDB 调试 mysqld”。在 Windows 上,这个选项还将抑制用于实现
RESTART
语句的forking:forking使得一个进程可以作为监控器来监控另一个进程,该进程作为服务器。然而,forking使得确定要attach的服务器进程以进行调试变得更加困难,因此使用--gdb
选项可以抑制forking。对于使用该选项启动的服务器,RESTART
语句将简单地退出,而不重新启动。在非调试设置中,可以使用
--no-monitor
选项来抑制监控进程的forking。 -
--initialize
,-I
Command-Line Format --initialize[={OFF|ON}]
Type 布尔 Default Value OFF
这个选项用于初始化 MySQL 安装,创建数据目录并在
mysql
系统架构中填充表。更多信息,请参阅第2.9.1节,“初始化数据目录”。这个选项限制了其他 MySQL 服务器启动选项的效果。一些常见的问题在这里被注意:
-
我们强烈建议,在使用
--initialize
选项初始化数据目录时,不使用其他选项,除了--datadir
,设置目录位置选项,如--basedir
,以及可能的--user
选项。如果需要。启动 MySQL 服务器时,可以指定其他选项,以便在初始化完成后启动服务器。使用--initialize-insecure
代替--initialize
也适用。 -
当服务器以
--initialize
选项启动时,某些功能不可用,这限制了任何由init_file
系统变量指定的文件中的语句。有关该变量的描述,请参阅该变量的描述。另外,disabled_storage_engines
系统变量无效。 -
--ndbcluster
选项在与--initialize
选项一起使用时将被忽略。 -
--initialize
与--bootstrap
和--daemonize
选项是互斥的。
以下列表中的项目也适用于使用
--initialize-insecure
选项初始化服务器时。 -
-
Command-Line Format --initialize-insecure[={OFF|ON}]
Type 布尔 Default Value OFF
该选项用于初始化MySQL安装,创建数据目录并在
mysql
系统架构中填充表。这选项隐含--initialize
,并且同样适用限制和限制;有关该选项的描述,请参阅该选项的描述,以及Section 2.9.1, “Initializing the Data Directory”。Warning该选项创建一个MySQL
root
用户,并将其密码设置为空,这是非安全的。因此,在生产环境中不要使用该选项,除非手动设置该密码。请参阅Post-Initialization root Password Assignment,了解如何进行该操作。 -
--innodb-
xxx
设置InnoDB存储引擎的选项。InnoDB选项列表见Section 17.14, “InnoDB Startup Options and System Variables”。
-
Command-Line Format --install [service_name]
Platform Specific Windows (仅限Windows) 将服务器安装为 Windows 服务,以便在 Windows 启动时自动启动。默认服务名称为
MySQL
,如果不指定service_name
值。更多信息,请见第2.3.3.8节,“Starting MySQL as a Windows Service”。Note如果服务器使用
--defaults-file
和--install
选项启动,--install
必须首先。 -
--install-manual [
service_name
]Command-Line Format --install-manual [service_name]
Platform Specific Windows (仅限Windows) 将服务器安装为 Windows 服务,但需要手动启动。它不在 Windows 启动时自动启动。默认服务名称为
MySQL
,如果不指定service_name
值。更多信息,请见第2.3.3.8节,“Starting MySQL as a Windows Service”。Note如果服务器使用
--defaults-file
和--install-manual
选项启动,--install-manual
必须首先。 -
Command-Line Format --large-pages[={OFF|ON}]
System Variable large_pages
Scope Global Dynamic No SET_VAR
Hint AppliesNo Platform Specific Linux Type Boolean Default Value OFF
某些硬件/操作系统架构支持大于默认值(通常为4KB)的内存页。实际实现的支持取决于硬件和操作系统。执行大量内存访问的应用程序可能通过使用大页获得性能改进,因为 Translation Lookaside Buffer(TLB) misses 减少。
MySQL 支持 Linux 实现的大页支持(称为 HugeTLB 在 Linux 中)。请见第10.12.3.3节,“Enabling Large Page Support”。对于 Solaris 的大页支持,请见
--super-large-pages
选项的描述。--large-pages
默认禁用。 -
Command-Line Format --lc-messages=name
System Variable lc_messages
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value en_US
错误信息的地区设置。默认为
en_US
。服务器将参数转换为语言名称,并将其与--lc-messages-dir
的值组合,以生产错误信息文件的位置。请参阅第12.12节,“设置错误信息语言”。 -
Command-Line Format --lc-messages-dir=dir_name
System Variable lc_messages_dir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名称 错误信息的目录。服务器将该值与
--lc-messages
的值组合,以生产错误信息文件的位置。请参阅第12.12节,“设置错误信息语言”。 -
Command-Line Format --local-service
(仅限Windows)将
--local-service
选项添加到服务名称后,使服务器使用LocalService
Windows帐户,该帐户具有有限的系统权限。如果同时指定--defaults-file
和--local-service
,它们可以在任何顺序中出现。请参阅第2.3.3.8节,“作为Windows服务启动MySQL”。 -
Command-Line Format --log-error[=file_name]
System Variable log_error
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名称 将默认错误日志目标设置为指定的文件。这将影响基于默认目标的日志输出。请参阅第7.4.2节,“错误日志”。
如果选项名称不指定文件,Unix和Unix-like系统上的默认错误日志目标是一个名为
的文件,在数据目录中。如果在Windows上,除非指定主机名
.err--pid-file
选项,在这种情况下,文件名是PID文件的基础名,后缀为.err
,在数据目录中。如果选项名称指定了文件,default目标是该文件(如果名称没有后缀,添加
.err
后缀),在数据目录中,除非指定了绝对路径名以指定不同的位置。如果无法将错误日志输出重定向到错误日志文件,启动失败。
在Windows上,
--console
优先于--log-error
,如果都给出。在这种情况下,错误日志目标是控制台,而不是文件。 -
Command-Line Format --log-isam[=file_name]
Type 文件名 将所有
MyISAM
更改记录到该文件中(仅在调试MyISAM
时使用)。 -
Command-Line Format --log-raw[={OFF|ON}]
System Variable log_raw
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔 Default Value OFF
在通用查询日志、慢查询日志和二进制日志中写入的某些语句中的密码将被服务器重写,以避免在明文中出现。密码重写可以通过在服务器启动时指定
--log-raw
选项来抑制,以便在诊断时看到语句的确切文本,但由于安全原因,不建议在生产环境中使用。如果安装了查询重写插件,
--log-raw
选项将对语句日志的影响如下:更多信息,请见第8.1.2.3节,“密码和日志记录”。
-
Command-Line Format --log-short-format[={OFF|ON}]
Type 布尔 Default Value OFF
将少量信息写入慢查询日志,如果日志已经激活。
-
Command-Line Format --log-tc=file_name
Type 文件名 Default Value tc.log
记忆映射事务协调器日志文件的名称(对于影响多个存储引擎的XA事务,当binary log禁用时)。默认名称是
tc.log
。如果不指定完整路径名,文件将在数据目录下创建。这项选项目前无效。 -
Command-Line Format --log-tc-size=#
Type 整数 Default Value 6 * page size
Minimum Value 6 * page size
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
记忆映射事务协调器日志的大小(以字节为单位)。默认值和最小值都是6次页面大小,且必须是页面大小的倍数。
-
Command-Line Format --memlock[={OFF|ON}]
Type 布尔 Default Value OFF
锁定 mysqld 进程在内存中。这项选项可能有助于解决操作系统导致 mysqld 交换到磁盘的问题。
--memlock
在支持mlockall()
系统调用系统上有效,这包括 Solaris、大多数使用 2.4 或更高内核的 Linux 发行版,以及其他 Unix 系统。在 Linux 系统上,您可以通过检查mman.h
文件中是否定义了mlockall()
来确定是否支持该选项。$> grep mlockall /usr/include/sys/mman.h
使用该选项可能需要将服务器运行在
root
用户下,这通常不是一个好主意。请参阅 Section 8.1.5, “How to Run MySQL as a Normal User”。extern int mlockall (int __flags) __THROW;
Important在 Linux 和其他系统上,您可以通过修改
limits.conf
文件来避免需要将服务器运行在root
用户下。请参阅 Section 10.12.3.3, “Enabling Large Page Support”。On Linux and perhaps other systems, you can avoid the need to run the server as
root
by changing thelimits.conf
file. See the notes regarding the memlock limit in Section 10.12.3.3, “Enabling Large Page Support”.您不能在不支持
mlockall()
系统调用系统上使用这个选项;如果您这样做,mysqld很可能在您尝试启动它时立即退出。 -
Command-Line Format --myisam-block-size=#
Type Integer Default Value 1024
Minimum Value 1024
Maximum Value 16384
用于MyISAM索引页的块大小。
-
Command-Line Format --mysql-native-password={OFF|ON}
Type Boolean Default Value OFF
启用mysql_native_password身份验证插件,该插件在MySQL 8.4中默认禁用。
-
不要读取任何选项文件。如果程序启动失败,因为读取了未知选项从选项文件,
--no-defaults
可以防止它们被读取。这必须是命令行的第一个选项,如果使用。关于这个和其他选项文件选项的更多信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”。
-
Command-Line Format --no-monitor[={OFF|ON}]
Platform Specific Windows Type Boolean Default Value OFF
(Windows only). 这个选项将抑制forking,这是实现
RESTART
语句的方式:Forking使得一个进程作为监控进程,另一个进程作为服务器。对于使用这个选项启动的服务器,RESTART
将简单地退出,而不重新启动。 -
--performance-schema-xxx
配置性能Schema选项。更多信息,请见第29.14节,“Performance Schema Command Options”。
-
Command-Line Format --plugin-load=plugin_list
Type String 该选项告诉服务器在启动时加载指定的插件。如果提供了多个
--plugin-load
选项,只有最后一个生效。使用--plugin-load-add
选项可以指定额外的插件加载。选项值是一个分号分隔的列表,包含
插件库
和名称
=
插件库
值。每个插件库
是包含插件代码的库文件名,每个名称
是要加载的插件名。如果插件库名没有前缀的插件名,服务器加载库中的所有插件。有前缀的插件名,服务器只加载库中的指定插件。服务器在plugin_dir
系统变量指定的目录中查找插件库文件。例如,如果插件
myplug1
和myplug2
在插件库文件myplug1.so
和myplug2.so
中,使用该选项进行早期插件加载:mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"
因为一些命令解释器将分号(
;
)解释为特殊字符,使用引号将参数值括起来,以免解释器将其解释为命令结束符(例如,Unix shells将其解释为命令结束符)。每个命名插件仅在mysqld的单个调用中加载。重启后,插件不再加载,除非再次使用
--plugin-load
选项。这与INSTALL PLUGIN
不同,该语句将插件添加到mysql.plugins表中,以便在每个正常启动时加载插件。在正常启动序列中,服务器确定要加载哪些插件,通过读取mysql.plugins系统表。如果服务器使用
--skip-grant-tables
选项启动,注册在mysql.plugins表中的插件将不被加载且不可用。--plugin-load
使插件在给定--skip-grant-tables
选项的情况下也可以加载插件。--plugin-load
还使插件在启动时可加载,而不能在运行时加载。该选项不设置相应的系统变量。关于已加载插件的信息,可以查看
SHOW PLUGINS
的输出。更多详细信息,请查看信息架构PLUGINS
表。请参阅第7.6.2节,“获取服务器插件信息”.关于插件加载的更多信息,请查看第7.6.1节,“安装和卸载插件”.
-
Command-Line Format --plugin-load-add=plugin_list
Type 字符串 该选项补充了
--plugin-load
选项。--plugin-load-add
将插件或插件添加到启动时要加载的插件集中。参数格式与--plugin-load
相同。--plugin-load-add
可以避免指定一个长的插件列表作为--plugin-load
参数。--plugin-load-add
可以在--plugin-load
缺省情况下使用,但任何--plugin-load-add
在--plugin-load
之前出现的实例无效,因为--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
的输出。更多详细信息,请查看信息架构PLUGINS
表。请参阅第7.6.2节,“获取服务器插件信息”.关于插件加载的更多信息,请查看第7.6.1节,“安装和卸载插件”.
-
指定服务器插件的选项。例如,许多存储引擎可以作为插件构建,并且可以使用
--plugin
前缀指定这些引擎的选项。因此,--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
Command-Line Format --port=port_num
System Variable port
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Integer Default Value 3306
Minimum Value 0
Maximum Value 65535
用于监听TCP/IP连接的端口号。在Unix和Unix-like系统上,端口号必须为1024或更高,除非服务器由root操作系统用户启动。将该选项设置为0将使用默认值。
-
Command-Line Format --port-open-timeout=#
Type Integer Default Value 0
在某些系统上,当服务器停止时,TCP/IP端口可能不会立即变得可用。如果服务器快速重新启动,它的尝试重新打开端口可能会失败。这项选项指示服务器在无法打开端口时等待的秒数。默认情况下,不会等待。
-
打印程序名称和从选项文件获取的所有选项。密码值将被mask。除非它是命令行的第一个选项,否则不能使用它,除非它紧随
--defaults-file
或--defaults-extra-file
。关于这项选项和其他选项文件选项的详细信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”。
-
Command-Line Format --remove [service_name]
Platform Specific (Windows) (Windows only) 删除 MySQL Windows 服务。默认服务名称为
MySQL
,如果不提供service_name
值。更多信息,请见第2.3.3.8节,“Starting MySQL as a Windows Service”。 -
Command-Line Format --safe-user-create[={OFF|ON}]
Deprecated 是 Type 布尔 Default Value OFF
如果启用了这项选项,用户不能使用
GRANT
语句创建新的 MySQL 用户,除非用户具有INSERT
权限对mysql.user
系统表中的某一列。如果您想让用户能够创建具有权限的新用户,可以授予用户以下权限:GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';
这确保用户不能直接更改权限列,但是需要使用
GRANT
语句将权限授予其他用户。 -
Command-Line Format --skip-grant-tables[={OFF|ON}]
Type 布尔 Default Value 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
系统变量无效。
-
-
Command-Line Format --skip-new
Deprecated 是 该选项禁用了曾经被认为是新的、可能不安全的行为。结果是:
delay_key_write=OFF
,concurrent_insert=NEVER
,automatic_sp_privileges=OFF
。此外,还会将OPTIMIZE TABLE
映射到ALTER TABLE
,对于不支持OPTIMIZE TABLE
的存储引擎。该选项已被弃用,可能在未来版本中被删除。
-
Command-Line Format --skip-show-database
System Variable skip_show_database
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔 Default Value OFF
该选项设置
skip_show_database
系统变量,该变量控制谁可以使用SHOW DATABASES
语句。请参阅Section 7.1.8, “Server System Variables”。 -
Command-Line Format --skip-stack-trace
不要写入堆栈跟踪。这项选项对在调试器下运行mysqld非常有用。在某些系统上,您还需要使用该选项以获取核心文件。请参阅Section 7.9, “Debugging MySQL”。
-
Command-Line Format --slow-start-timeout=#
Type Integer Default Value 15000
该选项控制 Windows 服务控制管理器的服务启动超时。值是服务控制管理器在启动服务时等待的最大毫秒数。如果 MySQL 服务启动时间太长,您可能需要增加这个值。值为 0 表示没有超时。
-
Command-Line Format --socket={文件名|管道名}
System Variable socket
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value (Windows) MySQL
Default Value (Other) /tmp/mysql.sock
在 Unix 上,这个选项指定了 Unix 套接字文件的名称,以便监听本地连接。在 Windows 上,这个选项指定了使用命名管道的本地连接的名称。默认值是
/tmp/mysql.sock
。如果指定了这个选项,服务器将在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。 -
Command-Line Format --sql-mode=name
System Variable sql_mode
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 设置 Default Value ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
Valid Values 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 模式”。
NoteMySQL 安装程序可能在安装过程中配置 SQL 模式。
如果 SQL 模式与默认值或您期望的值不同,请检查服务器在启动时读取的选项文件中是否存在设置。
-
Command-Line Format --standalone
Platform Specific Windows 仅在 Windows 上可用;禁止 MySQL 服务器作为服务运行。
-
Command-Line Format --super-large-pages[={OFF|ON}]
Platform Specific Solaris Type 布尔 Default Value OFF
MySQL 的标准大页使用尝试使用支持的最大大小,直到 4MB。Solaris 上的“超大页”功能启用了使用页到 256MB 的使用。该功能适用于最近的 SPARC 平台。它可以通过使用
--super-large-pages
或--skip-super-large-pages
选项来启用或禁用。 -
--symbolic-links
,--skip-symbolic-links
Command-Line Format --symbolic-links[={OFF|ON}]
Deprecated 是 Type 布尔 Default Value OFF
启用或禁用符号链接支持。在 Unix 上启用符号链接意味着可以使用
CREATE TABLE
语句中的INDEX DIRECTORY
或DATA DIRECTORY
选项将 MyISAM 索引文件或数据文件链接到另一个目录。如果您删除或重命名表,符号链接指向的文件也将被删除或重命名。请参见第10.12.2.2节,“使用 Unix 上的符号链接来 MyISAM 表”。Note符号链接支持,包括
--symbolic-links
选项,已弃用;您应该期望在将来的 MySQL 版本中删除该选项。此外,该选项默认禁用。相关的have_symlink
系统变量也已弃用;您应该期望在将来的 MySQL 版本中删除该变量。该选项在 Windows 上无效。
-
Command-Line Format --sysdate-is-now[={OFF|ON}]
Type 布尔 Default Value OFF
SYSDATE()
默认情况下返回执行时的时间,而不是语句执行开始时的时间。这与NOW()
的行为不同。这项选项使SYSDATE()
等同于NOW()
。有关二进制日志记录和复制的影响,请参阅SYSDATE()
在第14.7节,“日期和时间函数”和第7.1.8节,“服务器系统变量”中的描述。 -
--tc-heuristic-recover={COMMIT|ROLLBACK}
Command-Line Format --tc-heuristic-recover=name
Type 枚举 Default Value OFF
Valid Values 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.
-
Command-Line Format --transaction-isolation=name
System Variable transaction_isolation
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value REPEATABLE-READ
Valid Values READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
设置默认事务隔离级别。
level
值可以是READ-UNCOMMITTED
、READ-COMMITTED
、REPEATABLE-READ
或SERIALIZABLE
。请参阅第15.3.7节,“SET TRANSACTION Statement”。默认事务隔离级别也可以在运行时使用
SET TRANSACTION
语句或设置transaction_isolation
系统变量。 -
Command-Line Format --transaction-read-only[={OFF|ON}]
System Variable transaction_read_only
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔 Default Value OFF
设置默认事务访问模式。默认情况下,读写模式是禁用的,因此模式是读写。
在运行时设置默认事务访问模式,请使用
SET TRANSACTION
语句或设置transaction_read_only
系统变量。请参阅第15.3.7节,“SET TRANSACTION Statement”。 -
--tmpdir=
,dir_name
-t
dir_name
Command-Line Format --tmpdir=dir_name
System Variable tmpdir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名称 临时文件的路径。可能是,如果您的默认
/tmp
目录位于一个太小的分区中,无法存储临时表。该选项接受多个路径,按顺序使用。路径应该使用Unix上的冒号字符(:
)或Windows上的分号字符(;
)分隔。--tmpdir
可以是一个非永久的位置,例如一个基于内存的文件系统或在服务器主机重新启动时被清除的目录。如果 MySQL 服务器作为副本,并且您使用了非永久的位置来存储--tmpdir
,请考虑为副本设置不同的临时目录使用replica_load_tmpdir
系统变量。对于副本,用于复制LOAD DATA
语句的临时文件将被存储在这个目录中,因此在机器重新启动时,这些文件可以存活,虽然复制可以继续进行,如果这些文件已经被删除。关于临时文件存储位置的更多信息,请见 第 B.3.3.5 节,“MySQL 中的临时文件存储位置”。
-
Command-Line Format --upgrade=value
Type 枚举 Default Value AUTO
Valid Values AUTO
NONE
MINIMAL
FORCE
这个选项控制服务器在启动时是否自动升级。自动升级涉及两个步骤:
-
步骤 1:数据字典升级。
这个步骤升级:
-
在
mysql
schema 中的数据字典表。如果实际数据字典版本低于当前期望版本,服务器将升级数据字典。如果不能或被禁止这样做,服务器不能运行。 -
性能 Schema 和
INFORMATION_SCHEMA
。
-
-
步骤 2:服务器升级。
这个步骤包括所有其他升级任务。如果现有安装数据的 MySQL 版本低于服务器期望的版本,必须升级:
-
在
mysql
schema 中的系统表(除了数据字典表之外的所有表)。 -
sys
schema。 -
用户 schema。
-
关于升级步骤 1 和 2 的详细信息,请见 第 3.4 节,“MySQL 升级过程升级了什么”。
这些
--upgrade
选项值是允许的:-
AUTO
服务器自动升级任何它发现的 outdated(步骤 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)。预计使用该选项时,服务器启动时间将更长,因为服务器检查所有对象在所有架构中。FORCE
有助于强制执行步骤2操作,如果服务器认为它们不必要。例如,您可能认为某个系统表丢失或损坏,想要强制修复。
以下表格总结了服务器对每个选项值的操作。
Option Value Server Performs Step 1? Server Performs Step 2? AUTO
如果必要 如果必要 NONE
否 否 MINIMAL
如果必要 否 FORCE
如果必要 是 -
-
--user={
,user_name
|user_id
}-u {
user_name
|user_id
}Command-Line Format --user=name
Type 字符串 以名为
user_name
或用户ID为user_id
的用户身份运行mysqld服务器。(“User”在这里指的是系统登录账户,而不是MySQL用户列表中的用户。)此选项在启动mysqld作为
root
时是强制的。服务器在启动序列中更改其用户ID,使其以该特定用户身份运行,而不是root
。请参阅第8.1.1节,“安全指南”。为了避免可能的安全漏洞,用户添加
--user=root
选项到my.cnf
文件中(因此使服务器以root
身份运行),mysqld只使用第一个--user
选项,并在遇到多个--user
选项时产生警告。Options in/etc/my.cnf
和$MYSQL_HOME/my.cnf
被处理在命令行选项之前,因此建议将--user
选项放置在/etc/my.cnf
中,并指定一个非root
的值。该选项在/etc/my.cnf
中被找到,确保服务器以非root
身份运行,并在遇到其他--user
选项时产生警告。 -
Command-Line Format --validate-config[={OFF|ON}]
Type Boolean Default Value OFF
验证服务器启动配置。如果没有错误被发现,服务器将以退出代码0退出。如果发现错误,服务器将显示诊断信息并以退出代码1退出。警告和信息消息也可能被显示,取决于
log_error_verbosity
值,但不会立即终止验证或产生退出代码1。更多信息,请见第7.1.3节,“Server Configuration Validation”。 -
--validate-user-plugins[={OFF|ON}]
Command-Line Format --validate-user-plugins[={OFF|ON}]
Type Boolean Default Value ON
如果启用了该选项(默认情况下),服务器将检查每个用户账户,并在发现条件使账户不可用时产生警告:
-
账户需要加载的身份验证插件。
-
账户需要
sha256_password
或caching_sha2_password
身份验证插件,但服务器在启动时没有启用SSL或RSA身份验证插件,违反插件要求。
启用
--validate-user-plugins
将延迟服务器初始化和FLUSH PRIVILEGES
。如果您不需要额外的检查,可以在启动时禁用该选项以避免性能下降。 -
-
使用该选项与
--help
选项获取详细帮助。 -
--version
,-V
显示版本信息并退出。