5.1.6 服务器命令选项

启动mysqld服务器时,可以使用第 4.2.2 节“指定程序选项”中描述的任何方法指定程序选项。最常见的方法是在选项文件或命令行中提供选项。但是,在大多数情况下,需要确保服务器每次运行时都使用相同的选项。确保这一点的最佳方法是在选项文件中列出它们。参见第 4.2.2.2 节“使用选项文件”。该部分还描述了选项文件格式和语法。

mysqld[mysqld][server]组中读取选项。 mysqld_safe[mysqld][server][mysqld_safe][safe_mysqld]组中读取选项。 mysql.server[mysqld][mysql.server]组中读取选项。

嵌入式 MySQL 服务器通常从[server][embedded][xxxxx_SERVER]组中读取选项,其中* xxxxx *是服务器所嵌入的应用程序的名称。

mysqld接受许多命令选项。作为简短摘要,请执行以下命令:

mysqld --help

要查看完整列 table,请使用以下命令:

mysqld --verbose --help

列 table 中的某些项目实际上是可以在服务器启动时设置的系统变量。这些可以在运行时使用SHOW VARIABLES语句显示。前面的mysqld命令显示的某些项目不会出现在SHOW VARIABLES输出中。这是因为它们仅是选项,而不是系统变量。

以下列 table 显示了一些最常见的服务器选项。其他部分中介绍了其他选项:

一些选项控制缓冲区或高速缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常是从分配给缓冲区的总内存中分配的,所需的空间量可能取决于平台。这意味着,当您将值分配给控制缓冲区大小的选项时,实际可用空间量可能与分配的值不同。在某些情况下,该金额可能小于分配的值。服务器也可能向上调整一个值。例如,如果您将最小值为 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语句更改大多数系统变量的值。参见第 13.7.4.1 节“变量分配的 SET 语法”

第 5.1.7 节“服务器系统变量”,提供所有变量的完整说明,以及在服务器启动和运行时设置它们的其他信息。有关更改系统变量的信息,请参见第 5.1.1 节“配置服务器”

PropertyValue
Command-Line Format--help

显示简短帮助消息并退出。同时使用--verbose--help选项查看完整的消息。

PropertyValue
Command-Line Format--allow-suspicious-udfs[={OFF|ON}]
TypeBoolean
Default ValueOFF

此选项控制是否可以加载仅具有主函数xxx符号的用户定义函数。默认情况下,该选项处于关闭状态,并且只有具有至少一个辅助符号的 UDF 可以加载;这样可以防止尝试从共享目标文件(而不是包含合法 UDF 的文件)中加载功能。参见UDF 安全注意事项

PropertyValue
Command-Line Format--ansi

使用标准(ANSI)SQL 语法而不是 MySQL 语法。为了更精确地控制服务器 SQL 模式,请改用--sql-mode选项。参见第 1.8 节“ MySQL 标准符合性”第 5.1.10 节“服务器 SQL 模式”

PropertyValue
Command-Line Format--basedir=dir_name
System Variablebasedir
ScopeGlobal
DynamicNo
TypeDirectory name
Default Valueconfiguration-dependent default

MySQL 安装目录的路径。此选项设置basedir系统变量。

PropertyValue
Command-Line Format--bootstrap
DeprecatedYes

mysql_install_db程序使用此选项来创建 MySQL 特权 table,而不必启动完整的 MySQL 服务器。

Note

不推荐使用mysql_install_db,因为它的功能已集成到 MySQL 服务器mysqld中。因此,也不建议使用mysql_install_db传递给mysqld--bootstrap服务器选项。要初始化 MySQL 安装,请使用--initialize--initialize-insecure选项调用mysqld。有关更多信息,请参见第 2.10.1 节“初始化数据目录”mysql_install_db--bootstrap服务器选项将在将来的 MySQL 版本中删除。

--bootstrap--daemonize--initialize--initialize-insecure互斥。

使用--bootstrap时,不会禁用全局事务标识符(GTID)。使用了--bootstrap(缺陷号 20980271)。参见第 16.1.3 节“使用全局事务标识符进行复制”

当服务器以引导方式运行时,某些功能将不可用,从而限制了由init_file系统变量命名的任何文件中允许的语句。有关更多信息,请参见该变量的描述。此外,disabled_storage_engines系统变量无效。

PropertyValue
Command-Line Format--character-set-client-handshake[={OFF|ON}]
TypeBoolean
Default ValueON

不要忽略 Client 端发送的字符集信息。要忽略 Client 端信息并使用默认服务器字符集,请使用--skip-character-set-client-handshake;这使得 MySQL 的行为类似于 MySQL 4.0.

PropertyValue
Command-Line Format--chroot=dir_name
TypeDirectory name

在启动过程中,使用chroot()系统调用将mysqld服务器置于封闭环境中。这是推荐的安全措施。使用此选项在某种程度上限制了LOAD DATA选择...进入外档

PropertyValue
Command-Line Format--console
Platform SpecificWindows

(仅 Windows.)将错误日志写入stderrstdout(控制台)。如果使用此选项,mysqld不会关闭控制台窗口。

如果两者均给出,则--console优先于--log-error。 (在 MySQL 5.5 和 5.6 中,这是相反的:如果同时给出--log-error,则优先于--console。)

PropertyValue
Command-Line Format--core-file[={OFF|ON}]
TypeBoolean
Default ValueOFF

如果mysqld死了,请写一个核心文件。核心文件的名称和位置取决于系统。在 Linux 上,将名为core.pid的核心文件写入进程的当前工作目录,其中mysqld是数据目录。 * pid *table 示服务器进程的进程 ID。在 macOS 上,名为core.pid的核心文件被写入/cores目录。在 Solaris 上,使用 coreadm 命令指定在哪里写入核心文件以及如何命名它。

对于某些系统,要获取核心文件,您还必须为mysqld_safe指定--core-file-size选项。参见第 4.3.2 节“ mysqld_safe-MySQL 服务器启动脚本”。在某些系统(例如 Solaris)上,如果您还使用--user选项,则不会获得核心文件。可能存在其他限制或限制。例如,可能有必要在启动服务器之前执行 ulimit -c unlimited 。请查阅系统文档。

PropertyValue
Command-Line Format--daemonize[={OFF|ON}]
TypeBoolean
Default ValueOFF

此选项使服务器作为传统的分支守护程序运行,从而使其可以与使用 systemd 进行过程控制的 os 一起使用。有关更多信息,请参见第 2.5.10 节“使用 systemdManagementMySQL 服务器”

--daemonize--bootstrap--initialize--initialize-insecure互斥。

PropertyValue
Command-Line Format--datadir=dir_name
System Variabledatadir
ScopeGlobal
DynamicNo
TypeDirectory name

MySQL 服务器数据目录的路径。此选项设置datadir系统变量。请参阅该变量的描述。

PropertyValue
Command-Line Format--debug[=debug_options]
System Variabledebug
ScopeGlobal, Session
DynamicYes
TypeString
预设值(Windows)d:t:i:O,\mysqld.trace
预设值(Unix)d:t:i:o,/tmp/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

有关更多信息,请参见第 28.5.3 节“ DBUG 软件包”

PropertyValue
Command-Line Format--debug-sync-timeout[=#]
TypeInteger

控制是否启用用于测试和调试的“调试同步”工具。要使用 Debug Sync,需要使用-DENABLE_DEBUG_SYNC=1 CMake 选项(请参阅第 2.9.7 节“ MySQL 源配置选项”)配置 MySQL。如果未编译调试同步,则此选项不可用。选项值是以秒为单位的超时。默认值为 0,这将禁用“调试同步”。要启用它,请指定一个大于 0 的值。该值也成为各个同步点的默认超时。如果给出的选项没有值,则超时设置为 300 秒。

有关“调试同步”功能以及如何使用同步点的说明,请参见MySQL 内部:测试同步

PropertyValue
Command-Line Format--default-time-zone=name
TypeString

设置默认服务器时区。此选项设置全局time_zone系统变量。如果未指定此选项,则默认时区与系统时区相同(由system_time_zone系统变量的值提供)。

在全局选项文件之后但在用户选项文件之前(在 Unix 上)读取此选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。如果使用它,它必须是命令行上的第一个选项。

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

仅读取给定的选项文件。如果该文件不存在或无法访问,则发生错误。 * file_name *如果是相对路径名而不是完整路径名,则相对于当前目录进行解释。

Note

如果使用了命令行,则它必须是命令行上的第一个选项,但如果服务器是使用--defaults-file--install(或--install-manual)选项启动的,则必须首先使用--install(或--install-manual)。

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

不仅阅读常规选项组,还阅读具有常规名称和后缀* str *的组。例如,mysqld通常读取[mysqld]组。如果提供了--defaults-group-suffix=_other选项,则mysqld也会读取[mysqld_other]组。

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

PropertyValue
Command-Line Format--des-key-file=file_name
DeprecatedYes

从该文件中读取默认的 DES 密钥。 DES_ENCRYPT()DES_DECRYPT()函数使用这些键。

Note

DES_ENCRYPT()DES_DECRYPT()函数在 MySQL 5.7 中已弃用,将在以后的 MySQL 版本中删除,并且不再使用。因此,--des-key-file也已弃用,将被删除。

PropertyValue
Command-Line Format--disable-partition-engine-check[={OFF|ON}]
Introduced5.7.17
Deprecated5.7.17
TypeBoolean
默认值(≥5.7.21)ON
默认值(≥5.7.17,≤5.7.20)OFF

是否对具有 nonlocal 分区的 table 禁用启动检查。

从 MySQL 5.7.17 开始,当预期用于给定 table 的存储引擎将提供其自己的(“本机”)分区处理程序时,将不建议使用 MySQL 服务器中的通用分区处理程序,并在 MySQL 8.0 中将其删除。当前,只有InnoDBNDB存储引擎可以执行此操作。

将 table 与 nonlocal 分区一起使用会产生ER_WARN_DEPRECATED_SYNTAX警告。在 MySQL 5.7.17 到 5.7.20 中,服务器会在启动时自动执行检查以识别使用 nonlocal 分区的 table。对于找到的任何内容,服务器将一条消息写入其错误日志。要禁用此检查,请使用--disable-partition-engine-check选项。在 MySQL 5.7.21 和更高版本中,执行此检查;在这些版本中,如果希望服务器使用通用分区处理程序检查 table(错误#85830,错误#25846957),则必须使用--disable-partition-engine-check=false启动服务器。

将 table 与 nonlocal 分区一起使用会产生ER_WARN_DEPRECATED_SYNTAX警告。另外,服务器在启动时执行检查,以识别使用 nonlocal 分区的 table。对于找到的任何内容,服务器将一条消息写入其错误日志。要禁用此检查,请使用--disable-partition-engine-check选项。

为了准备迁移到 MySQL 8.0,应将具有 nonlocal 分区的任何 table 更改为使用提供本地分区的引擎,或者使其变为非分区的。例如,要将 table 更改为InnoDB,请执行以下语句:

ALTER TABLE table_name ENGINE = INNODB;

PropertyValue
Command-Line Format--early-plugin-load=plugin_list
Introduced5.7.11
TypeString
默认值(≥5.7.12)empty string
默认值(5.7.11)keyring_file plugin library file name

此选项告诉服务器在加载强制性内置插件之前和存储引擎初始化之前要加载哪些插件。如果给出多个--early-plugin-load选项,则仅使用最后一个。

选项值是* name * = * plugin_library plugin_library *值的分号分隔列 table。每个name是要加载的插件的名称,每个plugin_library是包含插件代码的库文件的名称。如果命名的插件库没有任何前面的插件名称,则服务器会将所有插件加载到该库中。服务器在plugin_dir系统变量命名的目录中查找插件库文件。

例如,如果名为myplug1myplug2的插件具有库文件myplug1.somyplug2.so,请使用此选项执行早期插件加载:

shell> 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指定的插件将被加载但未初始化。此行为可确保在帮助消息中显示插件选项。

从 MySQL 5.7.12 开始,默认的--early-plugin-load值为空。要加载所选的密钥环插件,必须使用显式的--early-plugin-load选项,该选项具有非空值。

Important

在 MySQL 5.7.11 中,默认的--early-plugin-load值为keyring_file插件库文件的名称,因此默认情况下已加载该插件。 InnoDBtable 空间加密要求在InnoDB初始化之前先加载keyring_file插件,因此默认--early-plugin-load值的此更改引入了从 5.7.11 升级到 5.7.12 或更高版本的不兼容性。加密InnoDBtable 空间的 Management 员必须采取显式操作,以确保 continue 加载keyring_file插件:使用名为插件库文件的--early-plugin-load选项启动服务器。有关更多信息,请参见第 6.4.4.1 节“安装 Keyring 插件”

InnoDBtable 空间加密功能依赖于keyring_file插件来进行加密密钥 Management,并且必须在存储引擎初始化之前加载keyring_file插件以促进InnoDB恢复加密 table。在 MySQL 5.7.11 中,如果您不想在服务器启动时加载keyring_file插件,请指定一个空字符串(--early-plugin-load="")。

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

PropertyValue
Command-Line Format--exit-info[=flags]
TypeInteger

这是可用于调试mysqld服务器的不同标志的位掩码。除非您完全知道它的作用,否则不要使用此选项!

PropertyValue
Command-Line Format--external-locking[={OFF|ON}]
TypeBoolean
Default ValueOFF

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

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

外部锁定仅影响MyISAMtable 访问。有关更多信息,包括可以使用和不能使用它的条件,请参阅第 8.11.5 节“外部锁定”

PropertyValue
Command-Line Format--flush[={OFF|ON}]
System Variableflush
ScopeGlobal
DynamicYes
TypeBoolean
Default ValueOFF

在每个 SQL 语句之后刷新(同步)对磁盘的所有更改。通常,MySQL 仅在每个 SQL 语句之后才将所有更 Rewrite 入磁盘,并让 os 处理与磁盘的同步。参见第 B.4.3.3 节“如果 MySQLcontinue 崩溃该怎么办”

Note

如果指定了--flush,则flush_time的值无关紧要,更改为flush_time不会影响刷新行为。

PropertyValue
Command-Line Format--gdb[={OFF|ON}]
TypeBoolean
Default ValueOFF

SIGINT安装中断处理程序(需要通过^C停止mysqld来设置断点),并禁用堆栈跟踪和核心文件处理。参见第 28.5.1.4 节“在 gdb 下调试 mysqld”

PropertyValue
Command-Line Format--ignore-db-dir=dir_name
Deprecated5.7.16
TypeDirectory name

此选项告诉服务器出于SHOW DATABASES语句或INFORMATION_SCHEMAtable 的目的而忽略给定的目录名称。例如,如果 MySQL 配置将数据目录定位在 Unix 上文件系统的根目录下,则系统可能会在其中创建lost+found目录,服务器应忽略该目录。使用--ignore-db-dir=lost+found启动服务器会导致该名称不作为数据库列出。

要指定多个名称,请多次使用此选项,每个名称一次。将选项指定为空值(即--ignore-db-dir=)会将目录列 table 重置为空列 table。

服务器启动时给出的此选项的实例用于设置ignore_db_dirs系统变量。

MySQL 5.7 中不推荐使用此选项。随着 MySQL 8.0 中数据字典的引入,它变得多余,并在该版本中被删除。

PropertyValue
Command-Line Format--initialize[={OFF|ON}]
TypeBoolean
Default ValueOFF

此选项用于通过创建数据目录并填充mysql系统数据库中的 table 来初始化 MySQL 安装。有关更多信息,请参见第 2.10.1 节“初始化数据目录”

当服务器以--initialize启动时,某些功能不可用,从而限制了init_file系统变量命名的任何文件中允许的语句。有关更多信息,请参见该变量的描述。此外,disabled_storage_engines系统变量无效。

在 MySQL NDB Cluster 7.5.4 和更高版本中,与--initialize一起使用时,将忽略--ndbcluster选项。 (缺陷#81689,错误#23518923)

--initialize--bootstrap--daemonize互斥。

PropertyValue
Command-Line Format--initialize-insecure[={OFF|ON}]
TypeBoolean
Default ValueOFF

此选项用于通过创建数据目录并填充mysql系统数据库中的 table 来初始化 MySQL 安装。此选项 table 示--initialize。有关更多信息,请参见该选项的说明和第 2.10.1 节“初始化数据目录”

--initialize-insecure--bootstrap--daemonize互斥。

  • --innodb-xxx

设置InnoDB存储引擎的选项。 第 14.15 节“ InnoDB 启动选项和系统变量”中列出了InnoDB选项。

PropertyValue
Command-Line Format--install [service_name]
Platform SpecificWindows

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

Note

如果使用--defaults-file--install选项启动服务器,则必须先使用--install

PropertyValue
Command-Line Format--install-manual [service_name]
Platform SpecificWindows

(仅 Windows)将服务器安装为必须手动启动的 Windows 服务。 Windows 启动期间它不会自动启动。如果未提供* service_name *值,则默认服务名称为MySQL。有关更多信息,请参见第 2.3.4.8 节“将 MySQL 作为 Windows 服务启动”

Note

如果使用--defaults-file--install-manual选项启动服务器,则必须先使用--install-manual

PropertyValue
Command-Line Format--language=name
Deprecated是;改用lc-messages-dir
System Variablelanguage
ScopeGlobal
DynamicNo
TypeDirectory name
Default Value/usr/local/mysql/share/mysql/english/

错误消息使用的语言。 * lang_name *可以指定为语言名称,也可以指定为安装语言文件的目录的完整路径名。参见第 10.12 节“设置错误消息语言”

不应使用--lc-messages-dir--lc-messages而不是--language,后者已弃用(并作为--lc-messages-dir的同义词处理)。 --language选项将在将来的 MySQL 版本中删除。

PropertyValue
Command-Line Format--large-pages[={OFF|ON}]
System Variablelarge_pages
ScopeGlobal
DynamicNo
Platform SpecificLinux
TypeBoolean
Default ValueOFF

某些硬件/os 体系结构支持的内存页大于默认值(通常为 4KB)。此支持的实际实现取决于底层硬件和 os。由于减少了转换后备缓冲区(TLB)丢失,因此执行大量内存访问的应用程序可以通过使用大页面来提高性能。

MySQL 支持大页面支持的 Linux 实现(在 Linux 中称为 HugeTLB)。参见第 8.12.4.2 节,“启用大页面支持”。对于大页面的 Solaris 支持,请参见--super-large-pages选项的描述。

默认情况下,禁用--large-pages

PropertyValue
Command-Line Format--lc-messages=name
System Variablelc_messages
ScopeGlobal, Session
DynamicYes
TypeString
Default Valueen_US

用于错误消息的语言环境。默认值为en_US。服务器将参数转换为语言名称,并将其与--lc-messages-dir的值组合以生成错误消息文件的位置。参见第 10.12 节“设置错误消息语言”

PropertyValue
Command-Line Format--lc-messages-dir=dir_name
System Variablelc_messages_dir
ScopeGlobal
DynamicNo
TypeDirectory name

错误消息所在的目录。服务器使用该值和--lc-messages的值来生成错误消息文件的位置。参见第 10.12 节“设置错误消息语言”

PropertyValue
Command-Line Format--local-service

(仅 Windows)服务名称后的--local-service选项使服务器使用具有有限系统特权的LocalService Windows 帐户运行。如果在服务名称后同时给出了--defaults-file--local-service,则它们可以采用任何 Sequences。参见第 2.3.4.8 节“将 MySQL 作为 Windows 服务启动”

PropertyValue
Command-Line Format--log-error[=file_name]
System Variablelog_error
ScopeGlobal
DynamicNo
TypeFile name

将错误日志和启动消息写入此文件。参见第 5.4.2 节“错误日志”

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

如果该选项为文件命名,则错误日志文件将具有该名称(如果名称没有后缀,则添加.err后缀),该名称位于数据目录下,除非给出了绝对路径名以指定其他位置。

在 Windows 上,如果同时指定了--console,则优先于--log-error。在这种情况下,服务器将错误日志写入控制台而不是文件。 (在 MySQL 5.5 和 5.6 中,这是相反的:如果同时给出--log-error,则优先于--console。)

PropertyValue
Command-Line Format--log-isam[=file_name]
TypeFile name

将所有MyISAM个更改记录到此文件中(仅在调试MyISAM时使用)。

PropertyValue
Command-Line Format--log-raw[={OFF|ON}]
TypeBoolean
Default ValueOFF

服务器将重写某些写入通用查询日志,慢速查询日志和二进制日志的语句中的密码,以使它们不会 true 以纯文本形式出现。通过使用--log-raw选项启动服务器,可以抑制常规查询日志的密码重写。此选项可能对诊断目的很有用,可以查看服务器接收到的确切语句文本,但是出于安全原因,不建议将其用于生产。

如果安装了查询重写插件,则--log-raw选项将影响语句记录,如下所示:

  • 如果没有--log-raw,服务器将记录查询重写插件返回的语句。这可能与收到的声明有所不同。

    • 使用--log-raw,服务器会将原始语句记录为已接收。

有关更多信息,请参见第 6.1.2.3 节“密码和日志记录”

PropertyValue
Command-Line Format--log-short-format[={OFF|ON}]
TypeBoolean
Default ValueOFF

如果已激活,请在慢速查询日志中记录较少的信息。

PropertyValue
Command-Line Format--log-tc=file_name
TypeFile name
Default Valuetc.log

内存 Map 的事务协调器日志文件的名称(用于在禁用二进制日志时影响多个存储引擎的 XA 事务)。默认名称为tc.log。如果未提供完整路径名,则在数据目录下创建该文件。此选项未使用。

PropertyValue
Command-Line Format--log-tc-size=#
TypeInteger
默认值(64 位平台,≥5.7.21)6 * page size
默认值(64 位平台,≤5.7.20)24576
默认值(32 位平台,≥5.7.21)6 * page size
默认值(32 位平台,≤5.7.20)24576
Minimum Value6 * page size
最大值(64 位平台)18446744073709551615
最大值(32 位平台)4294967295

内存 Map 的事务协调器日志的大小(以字节为单位)。默认值和最小值是页面大小的 6 倍,并且该值必须是页面大小的倍数。 (在 MySQL 5.7.21 之前,默认大小为 24KB.)

PropertyValue
Command-Line Format--log-warnings[=#]
DeprecatedYes
System Variablelog_warnings
ScopeGlobal
DynamicYes
TypeInteger
Default Value2
Minimum Value0
最大值(64 位平台)18446744073709551615
最大值(32 位平台)4294967295

Note

log_error_verbosity系统变量优先于--log-warnings选项或log_warnings系统变量,因此应优先使用它们。有关更多信息,请参见log_error_verbositylog_warnings的描述。 --log-warnings命令行选项和log_warnings系统变量已弃用,并将在以后的 MySQL 版本中删除。

是否对错误日志产生其他警告消息。默认情况下启用此选项。要禁用它,请使用--log-warnings=0。指定不带* level *值的选项会使当前值增加 1.如果该值大于 0,服务器将记录有关不安全的语句的消息(如果该值大于 0,则为基于语句的日志记录)。新连接尝试的异常终止连接和访问拒绝错误为如果该值大于 1,则记录日志。请参见第 B.4.2.10 节,“通信错误和中止的连接”

PropertyValue
Command-Line Format--memlock[={OFF|ON}]
TypeBoolean
Default ValueOFF

mysqld进程锁定在内存中。如果您在 os 导致mysqld交换到磁盘上遇到问题时,此选项可能会有所帮助。

--memlock在支持mlockall()系统调用的系统上工作;这包括 Solaris,使用 2.4 或更高版本内核的大多数 Linux 发行版,以及其他 Unix 系统。在 Linux 系统上,您可以通过检查是否在系统mman.h文件中定义了mlockall()(因此支持此选项)来判断它是否受支持,如下所示:

shell> grep mlockall /usr/include/sys/mman.h

如果支持mlockall(),则应该在上一条命令的输出中看到类似以下内容的内容:

extern int mlockall (int __flags) __THROW;

Important

使用此选项可能需要您以root的身份运行服务器,出于安全考虑,通常不是一个好主意。参见第 6.1.5 节“如何以普通用户身份运行 MySQL”

在 Linux 以及其他系统上,可以通过更改limits.conf文件来避免以root身份运行服务器。请参阅有关第 8.12.4.2 节,“启用大页面支持”中的密码锁限制的 Comments。

您不得在不支持mlockall()系统调用的系统上尝试使用此选项;如果这样做,mysqld很可能会在您尝试启动它时崩溃。

PropertyValue
Command-Line Format--myisam-block-size=#
TypeInteger
Default Value1024
Minimum Value1024
Maximum Value16384

用于MyISAM索引页的块大小。

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

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

PropertyValue
Command-Line Format--old-style-user-limits[={OFF|ON}]
TypeBoolean
Default ValueOFF

启用旧式用户限制。 (在 MySQL 5.0.3 之前,帐户资源限制是针对用户所连接的每个主机而不是usertable 中的每个帐户行分别计算的.)请参见第 6.2.16 节“设置帐户资源限制”

PropertyValue
Command-Line Format--partition[={OFF|ON}]
Deprecated5.7.16
Disabled byskip-partition
TypeBoolean
Default ValueON

在 MySQL 服务器中启用或禁用用户定义的分区支持。

此选项在 MySQL 5.7.16 中已弃用,并已从 MySQL 8.0 中删除,因为在 MySQL 8.0 中,分区引擎已被本机分区替换,不能被禁用。

  • --performance-schema-xxx

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

PropertyValue
Command-Line Format--plugin-load=plugin_list
System Variableplugin_load
ScopeGlobal
DynamicNo
TypeString

此选项告诉服务器在启动时加载命名的插件。如果给出多个--plugin-load选项,则仅使用最后一个。可以使用--plugin-load-add选项指定要加载的其他插件。

选项值是* name * = * plugin_library plugin_library *值的分号分隔列 table。每个name是要加载的插件的名称,每个plugin_library是包含插件代码的库文件的名称。如果命名的插件库没有任何前面的插件名称,则服务器会将所有插件加载到该库中。服务器在plugin_dir系统变量命名的目录中查找插件库文件。

例如,如果名为myplug1myplug2的插件具有库文件myplug1.somyplug2.so,请使用此选项执行早期插件加载:

shell> mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"

此处的引号周围使用引号,因为否则某些命令解释器会将分号(;)解释为特殊字符。 (例如,Unix shell 将其视为命令终止符.)

每个命名的插件仅针对mysqld的一次调用而加载。重新启动后,除非再次使用--plugin-load,否则不会加载该插件。与INSTALL PLUGIN相反,INSTALL PLUGINmysql.pluginstable 添加了一个条目,以使插件在每次正常服务器启动时都被加载。

在正常启动下,服务器通过读取mysql.plugins系统 table 来确定要加载的插件。如果服务器使用--skip-grant-tables选项启动,则它不会查询mysql.pluginstable,并且不会加载此处列出的插件。 --plugin-load允许加载插件,即使给出--skip-grant-tables也是如此。 --plugin-load还允许在启动时加载无法在运行时加载的插件。

有关插件加载的其他信息,请参见第 5.5.1 节“安装和卸载插件”

PropertyValue
Command-Line Format--plugin-load-add=plugin_list
System Variableplugin_load_add
ScopeGlobal
DynamicNo
TypeString

此选项是--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

有关插件加载的其他信息,请参见第 5.5.1 节“安装和卸载插件”

指定与服务器插件有关的选项。例如,许多存储引擎可以构建为插件,并且对于此类引擎,可以使用--plugin前缀来指定它们的选项。因此,可以将InnoDB--innodb-file-per-table选项指定为--plugin-innodb-file-per-table

对于可以启用或禁用的布尔选项,还支持--skip前缀和其他替代格式(请参见第 4.2.2.4 节“程序选项修饰符”)。例如,--skip-plugin-innodb-file-per-table禁用innodb-file-per-table

--plugin前缀的基本原理是,如果与内置服务器选项发生名称冲突,则可以明确指定插件选项。例如,如果一个插件编写者将一个插件命名为“ sql”并实现一个“ mode”选项,则该选项名称可能为--sql-mode,这将与同名的内置选项发生冲突。在这种情况下,可以使用内置选项来解决对冲突名称的引用。为了避免歧义,用户可以将 plugin 选项指定为--plugin-sql-mode。建议对插件选项使用--plugin前缀,以避免任何歧义问题。

PropertyValue
Command-Line Format--port=port_num
System Variableport
ScopeGlobal
DynamicNo
TypeInteger
Default Value3306
Minimum Value0
Maximum Value65535

侦听 TCP/IP 连接时使用的端口号。在 Unix 和类似 Unix 的系统上,除非服务器由rootos 用户启动,否则端口号必须为 1024 或更高。将此选项设置为 0 将导致使用默认值。

PropertyValue
Command-Line Format--port-open-timeout=#
TypeInteger
Default Value0

在某些系统上,当服务器停止时,TCP/IP 端口可能不会立即变为可用。如果服务器此后迅速重新启动,则其重新打开端口的尝试可能会失败。此选项指示如果无法打开,服务器应 awaitTCP/IP 端口空闲多少秒。默认为不 await。

打印程序名称及其从选项文件中获取的所有选项。密码值被屏蔽。如果使用了该选项,则它必须是命令行上的第一个选项,但可以在--defaults-file--defaults-extra-file之后立即使用。

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

PropertyValue
Command-Line Format--remove [service_name]
Platform SpecificWindows

(仅 Windows)删除 MySQL Windows 服务。如果未提供* service_name *值,则默认服务名称为MySQL。有关更多信息,请参见第 2.3.4.8 节“将 MySQL 作为 Windows 服务启动”

PropertyValue
Command-Line Format--safe-user-create[={OFF|ON}]
TypeBoolean
Default ValueOFF

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

GRANT INSERT(user) ON mysql.user TO 'user_name'@'host_name';

这样可以确保用户不能直接更改任何特权列,而必须使用GRANT语句将特权授予其他用户。

PropertyValue
Command-Line Format--skip-grant-tables[={OFF|ON}]
TypeBoolean
Default ValueOFF

此选项影响服务器启动 Sequences:

  • --skip-grant-tables导致服务器不读取mysql系统数据库中的授权 table,因此完全不使用特权系统就可以启动。这样,任何人都可以访问服务器对所有数据库的访问不受限制

要使以--skip-grant-tables开头的服务器在运行时加载授权 table,请执行特权刷新操作,该操作可以通过以下方式完成:

启动后执行的其他操作也可能隐式发生特权刷新,从而导致服务器开始使用授权 table。例如,mysql_upgrade在升级过程中刷新特权。

PropertyValue
Command-Line Format--skip-host-cache

禁用内部主机缓存,以加快名称到 IP 的解析。在禁用缓存的情况下,每次 Client 端连接时,服务器都会执行 DNS 查找。

--skip-host-cache的使用类似于将host_cache_size系统变量设置为 0,但是host_cache_size更加灵活,因为它还可以用于在运行时调整大小,启用或禁用主机缓存,而不仅仅是在服务器启动时。

如果使用--skip-host-cache启动服务器,这不会阻止更改host_cache_size的值,但是这种更改无效,即使host_cache_size设置为大于 0,也不会重新启用缓存。

有关主机缓存如何工作的更多信息,请参见第 5.1.11.2 节“ DNS 查找和主机缓存”

禁用InnoDB存储引擎。在这种情况下,因为默认存储引擎为InnoDB,否则服务器将不会启动,除非您还使用--default-storage-engine--default-tmp-storage-engine将永久 table 和TEMPORARYtable 的默认值设置为其他某种引擎。

不能禁用InnoDB存储引擎,并且--skip-innodb选项已弃用且无效。它的使用会导致警告。在以后的 MySQL 版本中将删除此选项。

PropertyValue
Command-Line Format--skip-new

此选项禁用(以前认为是)新的可能不安全的行为。结果为以下设置:delay_key_write=OFFconcurrent_insert=NEVERautomatic_sp_privileges=OFF。对于不支持OPTIMIZE TABLE的存储引擎,这也会导致OPTIMIZE TABLEMap 到ALTER TABLE

PropertyValue
Command-Line Format--skip-partition

--disable-partition
Deprecated5.7.16

禁用用户定义的分区。可以使用SHOW TABLES或查询INFORMATION_SCHEMA.TABLEStable 来查看已分区 table,但是无法创建或修改分区 table,也无法访问此类 table 中的数据。 INFORMATION_SCHEMA.PARTITIONStable 中的所有特定于分区的列都显示NULL

由于DROP TABLE删除了 table 定义(.frm)文件,因此即使使用该选项禁用了分区,该语句也适用于分区 table。但是,在这种情况下,该语句不会删除与分区 table 关联的分区定义。因此,您应该避免删除禁用了分区的分区 table,或者采取措施手动删除孤立的.par文件(如果存在)。

Note

在 MySQL 5.7 中,不再为分区的InnoDBtable 创建分区定义(.par)文件。而是将分区定义存储在InnoDB内部数据字典中。分区定义(.par)文件 continue 用于分区的MyISAMtable。

此选项在 MySQL 5.7.16 中已弃用,并已从 MySQL 8.0 中删除,因为在 MySQL 8.0 中,分区引擎已被本机分区替换,不能被禁用。

PropertyValue
Command-Line Format--skip-show-database
System Variableskip_show_database
ScopeGlobal
DynamicNo

此选项设置skip_show_database系统变量,该变量控制允许谁使用SHOW DATABASES语句。参见第 5.1.7 节“服务器系统变量”

PropertyValue
Command-Line Format--skip-stack-trace

不要写堆栈跟踪。当您在调试器下运行mysqld时,此选项很有用。在某些系统上,您还必须使用此选项来获取核心文件。参见第 28.5 节“调试和移植 MySQL”

PropertyValue
Command-Line Format--slow-start-timeout=#
TypeInteger
Default Value15000

此选项控制 Windows 服务控制 Management 器的服务启动超时。该值是服务控制 Management 器在尝试在启动期间终止 Windows 服务之前 await 的最大毫秒数。默认值为 15000(15 秒)。如果 MySQL 服务启动时间过长,则可能需要增加此值。值为 0table 示没有超时。

PropertyValue
Command-Line Format--socket={file_name|pipe_name}
System Variablesocket
ScopeGlobal
DynamicNo
TypeString
默认值(其他)/tmp/mysql.sock
预设值(Windows)MySQL

在 Unix 上,此选项指定侦听本地连接时要使用的 Unix 套接字文件。默认值为/tmp/mysql.sock。如果指定了此选项,则服务器将在数据目录中创建文件,除非指定了绝对路径名以指定其他目录。在 Windows 上,该选项指定侦听使用命名管道的本地连接时要使用的管道名称。默认值为MySQL(不区分大小写)。

PropertyValue
Command-Line Format--sql-mode=name
System Variablesql_mode
ScopeGlobal, Session
DynamicYes
TypeSet
Default ValueONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
Valid ValuesALLOW_INVALID_DATES

ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_CREATE_USER
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_FIELD_OPTIONS
NO_KEY_OPTIONS
NO_TABLE_OPTIONS
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

设置 SQL 模式。参见第 5.1.10 节“服务器 SQL 模式”

Note

MySQL 安装程序可能会在安装过程中配置 SQL 模式。如果 SQL 模式不同于默认模式或期望的模式,请检查服务器在启动时读取的选项文件中的设置。

PropertyValue
Command-Line Format--ssl[={OFF|ON}]
Disabled byskip-ssl
TypeBoolean
Default ValueON

--ssl选项指定服务器允许但不要求加密连接。默认情况下启用此选项。

--ssl可以以否定形式指定为--skip-ssl或同义词(--ssl=OFF--disable-ssl)。在这种情况下,此选项指定服务器不允许* 5 *加密连接,而不考虑tls_xxxssl_xxx系统变量的设置。

有关配置服务器是否允许 Client 端使用 SSL 连接以及指示在何处查找 SSL 密钥和证书的更多信息,请参阅第 6.3.1 节“配置 MySQL 以使用加密连接”,它还描述了用于证书和密钥文件自动生成和自动发现的服务器功能。考虑至少在服务器端设置ssl_certssl_key系统变量,并在 Client 端设置--ssl-ca(或--ssl-capath)选项。

PropertyValue
Command-Line Format--standalone
Platform SpecificWindows

仅在 Windows 上可用;指示 MySQL 服务器不要作为服务运行。

PropertyValue
Command-Line Format--super-large-pages[={OFF|ON}]
Platform SpecificSolaris
TypeBoolean
Default ValueOFF

MySQL 中大页面的标准用法尝试使用支持的最大大小,最大为 4MB。在 Solaris 下,“超大页面”功能允许使用最大 256MB 的页面。此功能可用于最新的 SPARC 平台。可以使用--super-large-pages--skip-super-large-pages选项启用或禁用它。

PropertyValue
Command-Line Format--symbolic-links[={OFF|ON}]
TypeBoolean
Default ValueON

启用或禁用符号链接支持。在 Unix 上,启用符号链接意味着您可以使用CREATE TABLE语句的INDEX DIRECTORYDATA DIRECTORY选项将MyISAM索引文件或数据文件链接到另一个目录。如果删除或重命名该 table,则其符号链接指向的文件也将被删除或重命名。参见第 8.12.3.2 节,“在 Unix 上为 MyISAMtable 使用符号链接”

在 Windows 上,此选项没有任何意义。

PropertyValue
Command-Line Format--sysdate-is-now[={OFF|ON}]
TypeBoolean
Default ValueOFF

默认情况下,SYSDATE()返回其执行时间,而不是发生它的语句开始执行的时间。这与NOW()的行为不同。此选项使SYSDATE()成为NOW()的同义词。有关二进制日志记录和复制的含义的信息,请参见第 12.6 节“日期和时间函数”中对SYSDATE()第 5.1.7 节“服务器系统变量”中对SET TIMESTAMP的描述。

PropertyValue
Command-Line Format--tc-heuristic-recover=name
TypeEnumeration
Default ValueOFF
Valid ValuesOFF

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.

PropertyValue
Command-Line Format--temp-pool[={OFF|ON}]
Deprecated5.7.18
TypeBoolean
默认值(其他)OFF
预设值(Linux)ON

除 Linux 以外,此选项将被忽略。在 Linux 上,这会使服务器创建的大多数临时文件使用一小组名称,而不是每个新文件使用唯一名称。这可以解决 Linux 内核中处理使用不同名称创建许多新文件的问题。在旧的行为下,Linux 似乎“泄漏”了内存,因为它被分配给目录条目缓存而不是磁盘缓存。

从 MySQL 5.7.18 开始,此选项已被弃用,并在 MySQL 8.0 中删除。

PropertyValue
Command-Line Format--transaction-isolation=name
系统变量(≥5.7.20)transaction_isolation
范围(≥5.7.20)Global, Session
动态(≥5.7.20)Yes
TypeEnumeration
Default ValueREPEATABLE-READ
Valid ValuesREAD-UNCOMMITTED

READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE

设置默认的事务隔离级别。 level的值可以是READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE。参见第 13.3.6 节“ SET TRANSACTION 语句”

默认事务隔离级别也可以在运行时使用SET TRANSACTION语句或通过设置tx_isolation(或从 MySQL 5.7.20 开始,transaction_isolation)设置系统变量来设置。

PropertyValue
Command-Line Format--transaction-read-only[={OFF|ON}]
系统变量(≥5.7.20)transaction_read_only
范围(≥5.7.20)Global, Session
动态(≥5.7.20)Yes
TypeBoolean
Default ValueOFF

设置默认的事务访问模式。默认情况下,只读模式为禁用状态,因此该模式为读/写。

要在运行时设置默认的事务访问模式,请使用SET TRANSACTION语句或设置tx_read_only(或者,从 MySQL 5.7.20 开始,设置transaction_read_only)系统变量。参见第 13.3.6 节“ SET TRANSACTION 语句”

PropertyValue
Command-Line Format--tmpdir=dir_name
System Variabletmpdir
ScopeGlobal
DynamicNo
TypeDirectory name

用于创建临时文件的目录的路径。如果默认的/tmp目录驻留在一个太小而无法容纳临时 table 的分区上,则可能会很有用。此选项接受以循环方式使用的多个路径。路径应在 Unix 上用冒号(:)和在 Windows 上用分号(;)分隔。

--tmpdir可以是非永久位置,例如基于内存的文件系统上的目录或服务器主机重新启动时将清除的目录。如果 MySQL 服务器充当复制从属服务器,并且您为--tmpdir使用了非永久位置,请考虑使用slave_load_tmpdir系统变量为从属服务器设置其他临时目录。对于复制从属服务器,用于复制LOAD DATA语句的临时文件存储在此目录中,因此具有永久位置,它们可以在计算机重新启动后幸存下来,尽管如果删除了临时文件,复制现在可以在重新启动后 continue。

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

PropertyValue
Command-Line Format--user=name
TypeString

以具有名称* user_name *或数字用户 ID * user_id *的用户身份运行mysqld服务器。 (在此上下文中,“用户”是指系统登录帐户,而不是授权 table 中列出的 MySQL 用户.)

当以root形式启动mysqld时,此选项是*必需的。服务器在其启动 Sequences 期间更改其用户 ID,从而使其以该特定用户而不是root的身份运行。参见第 6.1.1 节“安全准则”

为了避免可能的安全漏洞,用户在my.cnf文件中添加--user=root选项(从而导致服务器以root的身份运行),mysqld仅使用指定的第一个--user选项,并在存在多个--user选项时发出警告。 /etc/my.cnf$MYSQL_HOME/my.cnf中的选项在命令行选项之前进行处理,因此建议您将--user选项放在/etc/my.cnf中,并指定root以外的值。 /etc/my.cnf中的选项位于任何其他--user选项之前,以确保服务器以root以外的用户身份运行,并且如果找到任何其他--user选项,则会发出警告。

将此选项与--help选项一起使用可获得详细帮助。

显示版本信息并退出。