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-bdir_nameCommand-Line Format --basedir=dir_nameSystem Variable basedirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 Default Value MySQL安装目录的父目录MySQL安装目录的路径。这选项设置
basedir系统变量。服务器可执行文件在启动时确定自己的完整路径名,并将其所在目录的父目录作为默认
basedir值。这使得服务器可以使用该basedir来搜索相关信息,例如错误信息的share目录。 -
--chroot=,dir_name-rdir_nameCommand-Line Format --chroot=dir_nameType 目录名称 在启动时使用
chroot()系统调用将mysqld服务器置于封闭环境中。这是一种安全建议。使用该选项将限制LOAD DATA和SELECT ... INTO OUTFILE。 -
Command-Line Format --consolePlatform Specific Windows (仅适用于Windows.)将默认错误日志目标设置为控制台。这将影响基于默认目标的日志汇聚器。请参阅第7.4.2节,“错误日志”。mysqld不会关闭控制台窗口,如果使用了该选项。
--console优先于--log-error如果同时使用。 -
Command-Line Format --core-file如果使用了该选项,mysqld将在崩溃时生成核心文件;不需要或接受任何参数。核心文件的名称和位置取决于系统。例如,在Linux上,核心文件名为
core.,写入进程当前工作目录中,该目录为服务器的数据目录。pidpid表示服务器进程的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,-DCommand-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-hdir_nameCommand-Line Format --datadir=dir_nameSystem Variable datadirScope Global Dynamic No SET_VARHint AppliesNo Type Directory name MySQL服务器数据目录的路径。这选项设置
datadir系统变量。请参阅该变量的描述。 -
--debug[=,debug_options]-# [debug_options]Command-Line Format --debug[=debug_options]System Variable debugScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value (Unix) d:t:i:o,/tmp/mysqld.traceDefault Value (Windows) d:t:i:O,\mysqld.trace如果 MySQL 配置了
-DWITH_DEBUG=1CMake 选项,您可以使用该选项获取 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=ONCMake 选项(见 第2.8.7节,“MySQL Source-Configuration Options”);否则,这个选项不可用。该选项值是一个秒数。默认值为 0,禁用 Debug Sync。要启用它,请指定一个大于 0 的值;这个值也将成为单个同步点的默认超时。如果没有指定选项值,超时将设置为 300 秒。关于 Debug Sync 设施的描述和同步点使用方法,请见MySQL Internals: Test Synchronization。
-
Command-Line Format --default-time-zone=nameType 字符串 设置服务器的默认时区。这选项设置了全局
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_listCommand-Line Format --early-plugin-load=plugin_listType 字符串 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 flushScope Global Dynamic Yes SET_VARHint 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,-ICommand-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_pagesScope Global Dynamic No SET_VARHint 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=nameSystem Variable lc_messagesScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value en_US错误信息的地区设置。默认为
en_US。服务器将参数转换为语言名称,并将其与--lc-messages-dir的值组合,以生产错误信息文件的位置。请参阅第12.12节,“设置错误信息语言”。 -
Command-Line Format --lc-messages-dir=dir_nameSystem Variable lc_messages_dirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 错误信息的目录。服务器将该值与
--lc-messages的值组合,以生产错误信息文件的位置。请参阅第12.12节,“设置错误信息语言”。 -
Command-Line Format --local-service(仅限Windows)将
--local-service选项添加到服务名称后,使服务器使用LocalServiceWindows帐户,该帐户具有有限的系统权限。如果同时指定--defaults-file和--local-service,它们可以在任何顺序中出现。请参阅第2.3.3.8节,“作为Windows服务启动MySQL”。 -
Command-Line Format --log-error[=file_name]System Variable log_errorScope 全局 Dynamic 否 SET_VARHint 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_rawScope 全局 Dynamic 是 SET_VARHint 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_nameType 文件名 Default Value tc.log记忆映射事务协调器日志文件的名称(对于影响多个存储引擎的XA事务,当binary log禁用时)。默认名称是
tc.log。如果不指定完整路径名,文件将在数据目录下创建。这项选项目前无效。 -
Command-Line Format --log-tc-size=#Type 整数 Default Value 6 * page sizeMinimum Value 6 * page sizeMaximum Value (64-bit platforms) 18446744073709551615Maximum 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
rootby changing thelimits.conffile. 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 1024Minimum Value 1024Maximum 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_listType 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_listType 字符串 该选项补充了
--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-Pport_numCommand-Line Format --port=port_numSystem Variable portScope Global Dynamic No SET_VARHint AppliesNo Type Integer Default Value 3306Minimum Value 0Maximum 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-newDeprecated 是 该选项禁用了曾经被认为是新的、可能不安全的行为。结果是:
delay_key_write=OFF,concurrent_insert=NEVER,automatic_sp_privileges=OFF。此外,还会将OPTIMIZE TABLE映射到ALTER TABLE,对于不支持OPTIMIZE TABLE的存储引擎。该选项已被弃用,可能在未来版本中被删除。
-
Command-Line Format --skip-show-databaseSystem Variable skip_show_databaseScope 全局 Dynamic 否 SET_VARHint 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 socketScope 全局 Dynamic 否 SET_VARHint Applies否 Type 字符串 Default Value (Windows) MySQLDefault Value (Other) /tmp/mysql.sock在 Unix 上,这个选项指定了 Unix 套接字文件的名称,以便监听本地连接。在 Windows 上,这个选项指定了使用命名管道的本地连接的名称。默认值是
/tmp/mysql.sock。如果指定了这个选项,服务器将在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。 -
Command-Line Format --sql-mode=nameSystem Variable sql_modeScope 全局、会话 Dynamic 是 SET_VARHint 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_SUBSTITUTIONValid Values ALLOW_INVALID_DATESANSI_QUOTESERROR_FOR_DIVISION_BY_ZEROHIGH_NOT_PRECEDENCEIGNORE_SPACENO_AUTO_VALUE_ON_ZERONO_BACKSLASH_ESCAPESNO_DIR_IN_CREATENO_ENGINE_SUBSTITUTIONNO_UNSIGNED_SUBTRACTIONNO_ZERO_DATENO_ZERO_IN_DATEONLY_FULL_GROUP_BYPAD_CHAR_TO_FULL_LENGTHPIPES_AS_CONCATREAL_AS_FLOATSTRICT_ALL_TABLESSTRICT_TRANS_TABLESTIME_TRUNCATE_FRACTIONAL设置 SQL 模式。请参见第7.1.11节,“服务器 SQL 模式”。
NoteMySQL 安装程序可能在安装过程中配置 SQL 模式。
如果 SQL 模式与默认值或您期望的值不同,请检查服务器在启动时读取的选项文件中是否存在设置。
-
Command-Line Format --standalonePlatform Specific Windows 仅在 Windows 上可用;禁止 MySQL 服务器作为服务运行。
-
Command-Line Format --super-large-pages[={OFF|ON}]Platform Specific Solaris Type 布尔 Default Value OFFMySQL 的标准大页使用尝试使用支持的最大大小,直到 4MB。Solaris 上的“超大页”功能启用了使用页到 256MB 的使用。该功能适用于最近的 SPARC 平台。它可以通过使用
--super-large-pages或--skip-super-large-pages选项来启用或禁用。 -
--symbolic-links,--skip-symbolic-linksCommand-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 OFFSYSDATE()默认情况下返回执行时的时间,而不是语句执行开始时的时间。这与NOW()的行为不同。这项选项使SYSDATE()等同于NOW()。有关二进制日志记录和复制的影响,请参阅SYSDATE()在第14.7节,“日期和时间函数”和第7.1.8节,“服务器系统变量”中的描述。 -
--tc-heuristic-recover={COMMIT|ROLLBACK}Command-Line Format --tc-heuristic-recover=nameType 枚举 Default Value OFFValid Values OFFCOMMITROLLBACK手动故障恢复的决定。
如果指定了
--tc-heuristic-recover选项,服务器将在手动故障恢复成功或失败时退出。在具有多个存储引擎可执行两阶段提交的系统上,
ROLLBACK选项不安全,并且在以下错误中终止恢复:[ERROR] --tc-heuristic-recover rollback strategy is not safe on systems with more than one 2-phase-commit-capable storage engine. Aborting crash recovery. -
Command-Line Format --transaction-isolation=nameSystem Variable transaction_isolationScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 枚举 Default Value REPEATABLE-READValid Values READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE设置默认事务隔离级别。
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_onlyScope 全局、会话 Dynamic 是 SET_VARHint Applies否 Type 布尔 Default Value OFF设置默认事务访问模式。默认情况下,读写模式是禁用的,因此模式是读写。
在运行时设置默认事务访问模式,请使用
SET TRANSACTION语句或设置transaction_read_only系统变量。请参阅第15.3.7节,“SET TRANSACTION Statement”。 -
--tmpdir=,dir_name-tdir_nameCommand-Line Format --tmpdir=dir_nameSystem Variable tmpdirScope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 临时文件的路径。可能是,如果您的默认
/tmp目录位于一个太小的分区中,无法存储临时表。该选项接受多个路径,按顺序使用。路径应该使用Unix上的冒号字符(:)或Windows上的分号字符(;)分隔。--tmpdir可以是一个非永久的位置,例如一个基于内存的文件系统或在服务器主机重新启动时被清除的目录。如果 MySQL 服务器作为副本,并且您使用了非永久的位置来存储--tmpdir,请考虑为副本设置不同的临时目录使用replica_load_tmpdir系统变量。对于副本,用于复制LOAD DATA语句的临时文件将被存储在这个目录中,因此在机器重新启动时,这些文件可以存活,虽然复制可以继续进行,如果这些文件已经被删除。关于临时文件存储位置的更多信息,请见 第 B.3.3.5 节,“MySQL 中的临时文件存储位置”。
-
Command-Line Format --upgrade=valueType 枚举 Default Value AUTOValid Values AUTONONEMINIMALFORCE这个选项控制服务器在启动时是否自动升级。自动升级涉及两个步骤:
-
步骤 1:数据字典升级。
这个步骤升级:
-
在
mysqlschema 中的数据字典表。如果实际数据字典版本低于当前期望版本,服务器将升级数据字典。如果不能或被禁止这样做,服务器不能运行。 -
性能 Schema 和
INFORMATION_SCHEMA。
-
-
步骤 2:服务器升级。
这个步骤包括所有其他升级任务。如果现有安装数据的 MySQL 版本低于服务器期望的版本,必须升级:
-
在
mysqlschema 中的系统表(除了数据字典表之外的所有表)。 -
sysschema。 -
用户 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=nameType 字符串 以名为
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显示版本信息并退出。