Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Server Command Options

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输出中,因为它们是选项,而不是系统变量。

以下是最常用的服务器选项列表。其他选项在其他部分中描述:

一些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从缓冲区的总内存中分配,需要的空间可能取决于平台。因此,当您将一个控制缓冲区大小的选项的值分配给服务器时,实际可用的空间可能不同于分配的值。在某些情况下,实际可用的空间可能小于分配的值。服务器也可能会将值上调。例如,如果您将一个选项的值分配为0,而该选项的最小值为1024,服务器将将值设置为1024。

缓冲区大小、长度和堆栈大小的值除非另有指定,否则以字节为单位。

一些选项需要文件名值。除非另有指定,文件的默认位置是数据目录。如果值是相对路径名,文件将位于数据目录下。如果值是绝对路径名,文件的位置将是路径名指定的。

您也可以在服务器启动时使用变量名称作为选项来设置服务器系统变量。要将值分配给服务器系统变量,请使用以下形式的选项:--var_name=value。例如,--sort_buffer_size=384Msort_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

    显示简短的帮助信息并退出。使用--verbose--help选项可以看到完整的信息。

  • --allow-suspicious-udfs

    Command-Line Format --allow-suspicious-udfs[={OFF|ON}]
    Type 布尔
    Default Value OFF

    该选项控制是否可以加载具有主函数的可加载函数,但只有在具有至少一个辅助符的可加载函数时才可以加载;这可以防止从其他共享对象文件中加载函数。详见可加载函数安全预防措施

  • --ansi

    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 DATASELECT ... INTO OUTFILE

  • --console

    Command-Line Format --console
    Platform Specific Windows

    (仅适用于Windows.)将默认错误日志目标设置为控制台。这将影响基于默认目标的日志汇聚器。请参阅第7.4.2节,“错误日志”mysqld不会关闭控制台窗口,如果使用了该选项。

    --console优先于--log-error如果同时使用。

  • --core-file

    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 Applies No
    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”

  • --debug-sync-timeout[=N]

    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

  • --default-time-zone=时区

    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”

  • --defaults-extra-file=文件名

    在全局选项文件后读取,但是在 Unix 上是在用户选项文件之前读取。如果文件不存在或无法访问,出现错误。如果文件名不是绝对路径名,它将相对于当前目录解释。如果该选项在命令行中使用,必须是第一个选项。

    关于该选项和其他选项文件选项的更多信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”

  • --defaults-file=文件名

    只读取给定的选项文件。如果文件不存在或无法访问,出现错误。如果文件名不是绝对路径名,它将相对于当前目录解释。

    例外:即使使用--defaults-filemysqld仍然读取mysqld-auto.cnf

    Note

    这必须是命令行的第一个选项,如果使用服务器时,除非使用--defaults-file--install(或--install-manual)选项,否则--install(或--install-manual)必须是第一个。

    关于这个和其他选项文件选项的详细信息,请见第6.2.2.3节,“命令行选项影响选项文件处理”.

  • --defaults-group-suffix=str

    不仅读取通常的选项组,还读取通常名称和后缀为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系统变量指定的目录中查找插件库文件。

    例如,如果插件myplug1myplug2在插件库文件myplug1.somyplug2.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服务器。不要使用这个选项,除非你知道它做什么!

  • --external-locking

    Command-Line Format --external-locking[={OFF|ON}]
    Type Boolean
    Default Value OFF

    启用外部锁定(系统锁定),默认情况下禁用。如果在使用mysqld时,系统锁定不完全工作(例如,Linux),那么mysqld很容易死锁。

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

    外部锁定只影响MyISAM表访问。更多信息,包括什么情况下可以和不能使用,请见第10.11.5节,“外部锁定”

  • --flush

    Command-Line Format --flush[={OFF|ON}]
    System Variable flush
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    将所有更改写入磁盘后,每个 SQL 语句。通常,MySQL 在每个 SQL 语句后将所有更改写入磁盘,并让操作系统处理磁盘同步。见第B.3.3.3节,“如果 MySQL 总是崩溃”

    Note

    如果指定--flush,则flush_time的值无关紧要,并且更改flush_time对flush行为无效。

  • --gdb

    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选项初始化服务器时。

  • --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

    该选项创建一个MySQLroot用户,并将其密码设置为空,这是非安全的。因此,在生产环境中不要使用该选项,除非手动设置该密码。请参阅Post-Initialization root Password Assignment,了解如何进行该操作。

  • --innodb-xxx

    设置InnoDB存储引擎的选项。InnoDB选项列表见Section 17.14, “InnoDB Startup Options and System Variables”

  • --install [service_name]

    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 必须首先。

  • --large-pages

    Command-Line Format --large-pages[={OFF|ON}]
    System Variable large_pages
    Scope Global
    Dynamic No
    SET_VAR Hint Applies No
    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 默认禁用。

  • --lc-messages=locale_name

    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节,“设置错误信息语言”

  • --lc-messages-dir=dir_name

    Command-Line Format --lc-messages-dir=dir_name
    System Variable lc_messages_dir
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 目录名称

    错误信息的目录。服务器将该值与--lc-messages的值组合,以生产错误信息文件的位置。请参阅第12.12节,“设置错误信息语言”

  • --local-service

    Command-Line Format --local-service

    (仅限Windows)将--local-service选项添加到服务名称后,使服务器使用LocalServiceWindows帐户,该帐户具有有限的系统权限。如果同时指定--defaults-file--local-service,它们可以在任何顺序中出现。请参阅第2.3.3.8节,“作为Windows服务启动MySQL”

  • --log-error[=file_name]

    Command-Line Format --log-error[=file_name]
    System Variable log_error
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名称

    将默认错误日志目标设置为指定的文件。这将影响基于默认目标的日志输出。请参阅第7.4.2节,“错误日志”

    如果选项名称不指定文件,Unix和Unix-like系统上的默认错误日志目标是一个名为主机名.err的文件,在数据目录中。如果在Windows上,除非指定--pid-file选项,在这种情况下,文件名是PID文件的基础名,后缀为.err,在数据目录中。

    如果选项名称指定了文件,default目标是该文件(如果名称没有后缀,添加.err后缀),在数据目录中,除非指定了绝对路径名以指定不同的位置。

    如果无法将错误日志输出重定向到错误日志文件,启动失败。

    在Windows上,--console优先于--log-error,如果都给出。在这种情况下,错误日志目标是控制台,而不是文件。

  • --log-isam[=文件名]

    Command-Line Format --log-isam[=file_name]
    Type 文件名

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

  • --log-raw

    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选项将对语句日志的影响如下:

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

    • --log-raw,服务器将记录原始语句。

    更多信息,请见第8.1.2.3节,“密码和日志记录”

  • --log-short-format

    Command-Line Format --log-short-format[={OFF|ON}]
    Type 布尔
    Default Value OFF

    将少量信息写入慢查询日志,如果日志已经激活。

  • --log-tc=file_name

    Command-Line Format --log-tc=file_name
    Type 文件名
    Default Value tc.log

    记忆映射事务协调器日志文件的名称(对于影响多个存储引擎的XA事务,当binary log禁用时)。默认名称是 tc.log。如果不指定完整路径名,文件将在数据目录下创建。这项选项目前无效。

  • --log-tc-size=size

    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次页面大小,且必须是页面大小的倍数。

  • --memlock

    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 the limits.conf file. See the notes regarding the memlock limit in Section 10.12.3.3, “Enabling Large Page Support”.

    您不能在不支持mlockall()系统调用系统上使用这个选项;如果您这样做,mysqld很可能在您尝试启动它时立即退出。

  • --myisam-block-size=N

    Command-Line Format --myisam-block-size=#
    Type Integer
    Default Value 1024
    Minimum Value 1024
    Maximum Value 16384

    用于MyISAM索引页的块大小。

  • --mysql-native-password

    Command-Line Format --mysql-native-password={OFF|ON}
    Type Boolean
    Default Value OFF

    启用mysql_native_password身份验证插件,该插件在MySQL 8.4中默认禁用。

    更多信息,请见第8.4.1.1节,“Native Pluggable Authentication”

  • --no-defaults

    不要读取任何选项文件。如果程序启动失败,因为读取了未知选项从选项文件,--no-defaults可以防止它们被读取。这必须是命令行的第一个选项,如果使用。

    关于这个和其他选项文件选项的更多信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”

  • --no-monitor

    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”

  • --plugin-load=plugin_list

    Command-Line Format --plugin-load=plugin_list
    Type String

    该选项告诉服务器在启动时加载指定的插件。如果提供了多个--plugin-load选项,只有最后一个生效。使用--plugin-load-add选项可以指定额外的插件加载。

    选项值是一个分号分隔的列表,包含插件库名称=插件库值。每个插件库是包含插件代码的库文件名,每个名称是要加载的插件名。如果插件库名没有前缀的插件名,服务器加载库中的所有插件。有前缀的插件名,服务器只加载库中的指定插件。服务器在plugin_dir系统变量指定的目录中查找插件库文件。

    例如,如果插件myplug1myplug2在插件库文件myplug1.somyplug2.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节,“安装和卸载插件”.

  • --plugin-load-add=plugin_list

    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-xxx

    指定服务器插件的选项。例如,许多存储引擎可以作为插件构建,并且可以使用--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 Applies No
    Type Integer
    Default Value 3306
    Minimum Value 0
    Maximum Value 65535

    用于监听TCP/IP连接的端口号。在Unix和Unix-like系统上,端口号必须为1024或更高,除非服务器由root操作系统用户启动。将该选项设置为0将使用默认值。

  • --port-open-timeout=num

    Command-Line Format --port-open-timeout=#
    Type Integer
    Default Value 0

    在某些系统上,当服务器停止时,TCP/IP端口可能不会立即变得可用。如果服务器快速重新启动,它的尝试重新打开端口可能会失败。这项选项指示服务器在无法打开端口时等待的秒数。默认情况下,不会等待。

  • --print-defaults

    打印程序名称和从选项文件获取的所有选项。密码值将被mask。除非它是命令行的第一个选项,否则不能使用它,除非它紧随--defaults-file--defaults-extra-file

    关于这项选项和其他选项文件选项的详细信息,请见第6.2.2.3节,“Command-Line Options that Affect Option-File Handling”

  • --remove [service_name]

    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”

  • --safe-user-create

    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语句将权限授予其他用户。

  • --skip-grant-tables

    Command-Line Format --skip-grant-tables[={OFF|ON}]
    Type 布尔
    Default Value OFF

    这项选项影响服务器启动顺序:

  • --skip-new

    Command-Line Format --skip-new
    Deprecated

    该选项禁用了曾经被认为是新的、可能不安全的行为。结果是:delay_key_write=OFFconcurrent_insert=NEVERautomatic_sp_privileges=OFF。此外,还会将OPTIMIZE TABLE 映射到ALTER TABLE,对于不支持OPTIMIZE TABLE的存储引擎。

    该选项已被弃用,可能在未来版本中被删除。

  • --skip-show-database

    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”

  • --skip-stack-trace

    Command-Line Format --skip-stack-trace

    不要写入堆栈跟踪。这项选项对在调试器下运行mysqld非常有用。在某些系统上,您还需要使用该选项以获取核心文件。请参阅Section 7.9, “Debugging MySQL”

  • --slow-start-timeout=timeout

    Command-Line Format --slow-start-timeout=#
    Type Integer
    Default Value 15000

    该选项控制 Windows 服务控制管理器的服务启动超时。值是服务控制管理器在启动服务时等待的最大毫秒数。如果 MySQL 服务启动时间太长,您可能需要增加这个值。值为 0 表示没有超时。

  • --socket=路径

    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。如果指定了这个选项,服务器将在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。

  • --sql-mode=[,[,...]]

    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 模式”

    Note

    MySQL 安装程序可能在安装过程中配置 SQL 模式。

    如果 SQL 模式与默认值或您期望的值不同,请检查服务器在启动时读取的选项文件中是否存在设置。

  • --standalone

    Command-Line Format --standalone
    Platform Specific Windows

    仅在 Windows 上可用;禁止 MySQL 服务器作为服务运行。

  • --super-large-pages

    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 DIRECTORYDATA DIRECTORY选项将 MyISAM 索引文件或数据文件链接到另一个目录。如果您删除或重命名表,符号链接指向的文件也将被删除或重命名。请参见第10.12.2.2节,“使用 Unix 上的符号链接来 MyISAM 表”

    Note

    符号链接支持,包括--symbolic-links选项,已弃用;您应该期望在将来的 MySQL 版本中删除该选项。此外,该选项默认禁用。相关的have_symlink系统变量也已弃用;您应该期望在将来的 MySQL 版本中删除该变量。

    该选项在 Windows 上无效。

  • --sysdate-is-now

    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.
  • --transaction-isolation=level

    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-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE。请参阅第15.3.7节,“SET TRANSACTION Statement”

    默认事务隔离级别也可以在运行时使用SET TRANSACTION语句或设置transaction_isolation系统变量。

  • --transaction-read-only

    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 中的临时文件存储位置”

  • --upgrade=value

    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选项时产生警告。

  • --validate-config

    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_passwordcaching_sha2_password身份验证插件,但服务器在启动时没有启用SSL或RSA身份验证插件,违反插件要求。

    启用--validate-user-plugins将延迟服务器初始化和FLUSH PRIVILEGES。如果您不需要额外的检查,可以在启动时禁用该选项以避免性能下降。

  • --verbose, -v

    使用该选项与--help选项获取详细帮助。

  • --version, -V

    显示版本信息并退出。