当您启动 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 相关选项:请参阅 命令选项 for 加密连接。
-
二进制日志控制选项:请参阅 第 7.4.4 节,“二进制日志”。
-
复制相关选项:请参阅 第 19.1.6 节,“复制和二进制日志选项和变量”。
-
加载插件(如可插拔存储引擎)的选项:请参阅 第 7.6.1 节,“安装和卸载插件”。
-
特定存储引擎的选项:请参阅 第 17.14 节,“InnoDB 启动选项和系统变量” 和 第 18.2.1 节,“MyISAM 启动选项”。
某些选项控制缓冲区或缓存的大小。当服务器需要分配内部数据结构时,这些结构通常从总缓冲区中分配,所需的空间可能是平台相关的。这意味着当您将值分配给缓冲区大小的选项时,实际可用的空间可能与分配的值不同。在某些情况下,服务器可能会将值调整为更高。例如,如果您将值设置为 0,则服务器将其设置为 1024。
缓冲区大小、长度和堆栈大小的值以字节为单位,除非另有说明。
某些选项采用文件名值。除非另有说明,否则默认文件位置是数据目录,如果值是相对路径名。要明确指定位置,请使用绝对路径名。假设数据目录是 /var/mysql/data。如果文件值选项是相对路径名,则其位于 /var/mysql/data 下。如果值是绝对路径名,则其位置是由路径名指定的。
您也可以在服务器启动时使用变量名称作为选项来设置服务器系统变量。要将值分配给服务器系统变量,请使用形式为 -- 的选项。例如, var_name=value--sort_buffer_size=384M 将 sort_buffer_size 变量设置为 384MB。
当您将值分配给变量时,MySQL 可能会自动将值调整到给定的范围内,或者如果只有某些值是允许的,则将值调整到最近的允许值。
要限制在运行时使用 SET 语句设置系统变量的最大值,请在服务器启动时使用形式为 --maximum- 的选项。var_name=value
您可以使用 SET 语句在运行时更改大多数系统变量的值。请参阅 第 15.7.6.1 节,“SET 语法 for 变量赋值”。
第 7.1.8 节,“服务器系统变量” 提供了所有变量的完整描述,以及在服务器启动和运行时设置它们的附加信息。有关更改系统变量的信息,请参阅 第 7.1.1 节,“配置服务器”。
-
--help,-?Command-Line Format --help -
Command-Line Format --admin-ssl[={OFF|ON}]Deprecated 是 Type 布尔值 Default Value ON--admin-ssl选项类似于--ssl选项,但它适用于管理连接接口,而不是主要连接接口。有关这些接口的信息,请参阅 第 7.1.12.1 节,“连接接口”。--admin-ssl选项指定服务器允许但不需要在管理接口上加密连接。这项选项默认启用。--admin-ssl可以以否定形式指定为--skip-admin-ssl或同义词 (--admin-ssl=OFF,--disable-admin-ssl)。在这种情况下,该选项指定服务器 不 允许加密连接,无论admin_tsl_和xxxadmin_ssl_系统变量的设置如何。xxx--admin-ssl选项仅在服务器启动时对管理接口的加密连接支持产生影响。在运行时,它被忽略且不影响ALTER INSTANCE RELOAD TLS的操作。例如,您可以使用--admin-ssl=OFF启动管理接口以禁用加密连接,然后重新配置 TLS 并执行ALTER INSTANCE RELOAD TLS FOR CHANNEL mysql_admin以在运行时启用加密连接。关于配置连接加密支持的一般信息,请参阅第 8.3.1 节,“配置 MySQL 以使用加密连接”。该讨论是为主连接接口编写的,但参数名称对于管理连接接口也相似。考虑在服务器端设置至少
admin_ssl_cert和admin_ssl_key系统变量,以及在客户端设置--ssl-ca(或--ssl-capath)选项。有关管理接口的更多信息,请参阅管理接口支持加密连接。因为加密连接支持默认启用,因此通常不需要指定
--admin-ssl;该选项已弃用,并将在未来 MySQL 版本中删除。如果要禁用加密连接,可以不指定--admin-ssl,并将admin_tls_version系统变量设置为空值,以指示不支持 TLS 版本。例如,在服务器my.cnf文件中禁用加密连接的行:[mysqld] admin_tls_version='' -
Command-Line Format --allow-suspicious-udfs[={OFF|ON}]Type 布尔值 Default Value OFF该选项控制是否可以加载只有
xxx符号的可加载函数。默认情况下,该选项关闭,只允许加载至少有一个辅助符号的可加载函数;这防止了从共享对象文件中加载函数的尝试。请参阅 可加载函数安全预防措施。 -
Command-Line Format --ansi使用标准(ANSI)SQL 语法而不是 MySQL 语法。对于服务器 SQL 模式的更精确控制,请使用
--sql-mode选项。请参阅 第 1.6 节,“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值。这使服务器能够在搜索服务器相关信息(例如包含错误消息的share目录)时使用该basedir。 -
--chroot=,dir_name-rdir_nameCommand-Line Format --chroot=dir_nameType 目录名称 在启动期间使用 mysqld 服务器在封闭的环境中,使用
chroot()系统调用。这是一个推荐的安全措施。使用这个选项会限制LOAD DATA和SELECT ... INTO OUTFILE。 -
Command-Line Format --consolePlatform Specific Windows (仅限 Windows) 将默认错误日志目标设置为控制台。这影响基于默认目标的日志 sink。见 第 7.4.2 节,“错误日志”。mysqld 不会关闭控制台窗口,如果使用这个选项。
--console优先于--log-error,如果同时给出这两个选项。 -
Command-Line Format --core-file使用这个选项时,如果 mysqld 死亡,不需要参数(或接受)。核心文件的名称和位置取决于系统。在 Linux 上,写入当前工作目录的核心文件
core.,其中pidpid代表服务器进程的进程 ID。在 macOS 上,写入/cores目录的核心文件core.。在 Solaris 上,使用 coreadm 命令指定核心文件的写入位置和名称。pid对于某些系统,要获取核心文件,还需要指定
--core-file-size选项到 mysqld_safe。见 第 6.3.2 节,“mysqld_safe — MySQL 服务器启动脚本”。在某些系统上,例如 Solaris,如果同时使用--user选项,可能不会获取核心文件。可能还有其他限制或限制。例如,可能需要在启动服务器之前执行 ulimit -c unlimited。请参阅系统文档。变量
innodb_buffer_pool_in_core_file可以用于减少核心文件的大小,在支持它的操作系统上。更多信息,请参阅 第 17.8.3.7 节,“从核心文件中排除缓冲池页面”。 -
--daemonize,-DCommand-Line Format --daemonize[={OFF|ON}]Type 布尔值 Default Value OFF这个选项使服务器以传统的、分叉的守护进程方式运行,允许它与使用 systemd 进程控制的操作系统一起工作。更多信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”。
--daemonize与--initialize和--initialize-insecure是互斥的。如果服务器使用
--daemonize选项启动,并且不连接到 tty 设备,则在缺少明确的日志选项时,使用默认错误日志选项--log-error=""将错误输出定向到默认日志文件。-D是--daemonize的同义词。 -
--datadir=,dir_name-hdir_nameCommand-Line Format --datadir=dir_nameSystem Variable 数据目录Scope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 MySQL 服务器数据目录的路径。此选项设置
datadir系统变量。请参阅该变量的描述。 -
--debug[=,debug_options]-# [debug_options]Command-Line Format --debug[=debug_options]System Variable 调试Scope 全局、会话 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,。默认值是file_named:t:i:o,/tmp/mysqld.trace在 Unix 上和d:t:i:O,\mysqld.trace在 Windows 上。使用
-DWITH_DEBUG=1配置 MySQL 以启用调试支持,启用--debug="d,parser_debug"选项时启动服务器。这将导致 Bison 解析器将 SQL 语句的解析器跟踪写入服务器的标准错误输出。通常,这个输出将写入错误日志。可以多次给出此选项。以
+或-开头的值将添加到或从前一个值中。例如,--debug=T--debug=+P将值设置为P:T。有关更多信息,请参阅 第 7.9.4 节,“DBUG 包”。
-
Command-Line Format --debug-sync-timeout[=#]Type 整数 控制 Debug Sync 设施是否启用。使用 Debug Sync 需要 MySQL 配置了
-DWITH_DEBUG=ONCMake 选项(请参阅 第 2.8.7 节,“MySQL 源代码配置选项”);否则,此选项不可用。选项值是以秒为单位的超时时间。默认值为 0,禁用 Debug Sync。如果给出选项值,则超时时间将设置为该值;否则,默认超时时间为 300 秒。有关 Debug Sync 设施和同步点的使用,请参阅 MySQL Internals: 测试同步。
-
Command-Line Format --default-time-zone=nameType 字符串 设置默认服务器时区。此选项设置全局
time_zone系统变量。如果不给出此选项,默认时区将是系统时区(由system_time_zone系统变量的值给出)。变量
system_time_zone与time_zone变量不同。虽然它们可能具有相同的值,但后一个变量用于初始化每个连接客户端的时区。请参阅 第 7.1.15 节,“MySQL 服务器时区支持”。 -
在全局选项文件之后但(在 Unix 上)在用户选项文件之前读取此选项文件。如果文件不存在或不可访问,将发生错误。如果
文件名不是绝对路径名,则相对于当前目录进行解释。这必须是命令行上的第一个选项,如果使用。有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”。
-
仅读取指定的选项文件。如果文件不存在或不可访问,将发生错误。如果
文件名不是绝对路径名,则相对于当前目录进行解释。例外:即使使用
--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 节,“命令行选项影响选项文件处理”。
-
Command-Line Format --early-plugin-load=插件列表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 shells 将其视为命令终止符。)每个命名插件仅在单个 mysqld 调用中早期加载。重新启动后,插件不会早期加载,除非再次使用
--early-plugin-load。如果服务器使用
--initialize或--initialize-insecure启动,插件指定的--early-plugin-load不会加载。如果服务器使用
--help运行,插件指定的--early-plugin-load将加载但不初始化。这确保插件选项在帮助消息中显示。InnoDB表空间加密依赖于 MySQL Keyring 进行加密密钥管理,并且必须在存储引擎初始化之前加载密钥环插件以便InnoDB恢复加密表。例如,管理员想要在启动时加载keyring_file插件,应该使用--early-plugin-load选项值(例如 Unix 和 Unix-like 系统上的keyring_file.so或 Windows 上的keyring_file.dll)。有关
InnoDB表空间加密的信息,请参阅 第 17.13 节,“InnoDB Data-at-Rest Encryption”。有关插件加载的一般信息,请参阅 第 7.6.1 节,“Installing and Uninstalling Plugins”。Note对于 MySQL Keyring,该选项仅在密钥库管理使用密钥环插件时使用。如果密钥库管理使用密钥环组件而不是插件,请使用清单文件指定组件加载;请参阅 第 8.4.4.2 节,“Keyring Component Installation”。
-
--exit-info[=,flags]-T [flags]Command-Line Format --exit-info[=flags]Type 整数 这是一个用于调试 mysqld 服务器的标志位掩码。除非您确切地知道它的作用,否则请不要使用该选项!
-
Command-Line Format --external-locking[={OFF|ON}]Type 布尔值 Default Value OFF启用外部锁定(系统锁定),默认情况下禁用。如果您在系统上使用该选项,例如 Linux,
lockd不完全工作,mysqld 很容易死锁。要显式禁用外部锁定,请使用
--skip-external-locking。外部锁定仅影响
MyISAM表访问。有关更多信息,包括可以和不能使用的条件,请参阅第10.11.5节,“外部锁定”。 -
Command-Line Format --flush[={OFF|ON}]System Variable flushScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔值 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 布尔值 Default Value OFF安装一个中断处理程序SIGINT(需要停止mysqld使用^C设置断点)并禁用堆栈跟踪和核心文件处理。请参阅第7.9.1.4节,“在gdb下调试mysqld”。
在Windows上,此选项还抑制了用于实现
RESTART语句的分叉:分叉使一个进程充当监视器,另一个进程充当服务器。但是,分叉使确定要附加的服务器进程变得更加困难,因此启动服务器时使用--gdb抑制分叉。对于使用此选项启动的服务器,RESTART语句只是退出,不会重新启动。在非调试设置中,
--no-monitor可以用于抑制监视进程的分叉。 -
--initialize,-ICommand-Line Format --initialize[={OFF|ON}]Type 布尔值 Default Value OFF此选项用于初始化MySQL安装,创建数据目录并填充mysql系统模式中的表。有关更多信息,请参阅第2.9.1节,“初始化数据目录”。
此选项限制或与其他启动选项不兼容,例如
--datadir、--basedir等目录位置选项,可能需要--user选项。-
我们强烈建议,在使用
--initialize初始化数据目录时,不要指定其他选项,除非是--datadir、--basedir等目录位置选项,可能需要--user选项。其他选项可以在初始化完成后启动MySQL服务器时指定。 -
当服务器使用
--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,并且同样的限制和限制也适用;有关更多信息,请参阅该选项的描述和 第 2.9.1 节,“Initializing the Data Directory”。Warning该选项创建了一个 MySQL
root用户,密码为空,这是不安全的。因此,不要在生产中使用它,而不设置密码。请参阅 Post-Initialization root Password Assignment,了解如何执行此操作。 -
--innodb-xxx设置
InnoDB存储引擎的选项。InnoDB选项列在 第 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 --语言=nameDeprecated 是; 使用 lc-messages-dir代替System Variable 语言Scope 全局 Dynamic 否 SET_VARHint Applies否 Type 目录名称 Default Value /usr/local/mysql/share/mysql/english/用于错误消息的语言。
语言名称可以作为语言名称或安装语言文件的目录的完整路径名。见 第 12.12 节,“设置错误消息语言”。--lc-messages-dir和--lc-messages应该用于代替--语言,该选项已弃用(并作为--lc-messages-dir的同义词)。您应该期望在未来 MySQL 版本中删除--语言选项。 -
Command-Line Format --大页面[={OFF|ON}]System Variable 大页面Scope 全局 Dynamic 否 SET_VARHint Applies否 Platform Specific Linux Type 布尔值 Default Value OFF一些硬件/操作系统架构支持大于默认(通常为 4KB)的内存页面。实际实现取决于底层硬件和操作系统。大量内存访问的应用程序可能通过减少转换后备缓冲区(TLB)miss 来获得性能改进。
MySQL 支持 Linux 实现的大页面支持(在 Linux 中称为 HugeTLB)。见 第 10.12.3.3 节,“启用大页面支持”。对于 Solaris 的大页面支持,请参阅
--超大页面选项的描述。--大页面默认情况下禁用。 -
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 --本地服务(仅限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 中,默认目标是相同的,除非指定了host_name.err--pid-file选项。在那种情况下,文件名是 PID 文件基名加上.err后缀,位于数据目录中。如果选项指定了文件名,默认目标是该文件(如果名称没有后缀,则添加
.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事务)。默认名称是
tc.log。如果没有指定完整的路径名,则文件将在数据目录下创建。此选项未使用。 -
Command-Line Format --log-tc-size=#Type 整数 Default Value 6 * 页面大小Minimum Value 6 * 页面大小Maximum 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如果
mlockall()受支持,您应该在上述命令的输出中看到类似以下的内容:extern int mlockall (int __flags) __THROW;Important使用该选项可能需要以
root用户身份运行服务器,这通常不是一个好主意。请参阅 第 8.1.5 节,“如何以普通用户身份运行 MySQL”。在 Linux 和可能的其他系统上,您可以通过更改
limits.conf文件来避免以root用户身份运行服务器的需要。请参阅 第 10.12.3.3 节,“启用大页支持” 中关于 memlock 限制的注释。您不能在不支持
mlockall()系统调用的系统上使用该选项;如果您这样做,mysqld 很可能会在启动时退出。 -
Command-Line Format --myisam-block-size=#Type 整数 Default Value 1024Minimum Value 1024Maximum Value 16384用于
MyISAM索引页的块大小。 -
不读取任何选项文件。如果程序启动失败是由于从选项文件中读取未知选项,
--no-defaults可以用于防止它们被读取。这必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”。
-
Command-Line Format --no-dd-upgrade[={OFF|ON}]Deprecated 是 Type 布尔值 Default Value OFFNote该选项已弃用。请使用
--upgrade代替。防止在 MySQL 服务器启动过程中自动升级数据字典表。在将现有安装升级到新版本 MySQL 时,可能需要使用该选项,以避免升级数据字典表的自动升级。
当
--no-dd-upgrade被指定时,如果服务器发现其期望的数据字典版本与数据字典本身存储的版本不同,启动将失败,错误信息将表明数据字典升级被禁止:[ERROR] [MY-011091] [Server] Data dictionary upgrade prohibited by the command line option '--no_dd_upgrade'. [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.在正常启动期间,服务器将其数据字典版本与数据字典本身存储的版本进行比较,以确定是否需要升级数据字典表定义。如果升级是必要的并且支持升级,服务器将创建具有更新定义的数据字典表,复制持久元数据到新表中,原子地替换旧表,并重新初始化数据字典。如果升级不是必要的,启动将继续不更新数据字典表。
-
Command-Line Format --no-monitor[={OFF|ON}]Platform Specific Windows Type 布尔值 Default Value OFF(仅限Windows)。该选项禁止用于实现
RESTART语句的分叉:分叉使一个进程可以作为另一个进程的监视器。对于使用该选项启动的服务器,RESTART将简单地退出,不会重新启动。 -
--performance-schema-xxx配置性能架构选项。有关详细信息,请参阅第29.14节,“性能架构命令选项”。
-
Command-Line Format --plugin-load=plugin_listType 字符串 该选项告诉服务器在启动时加载指定的插件。如果提供了多个
--plugin-load选项,只有最后一个生效。可以使用--plugin-load-add选项指定其他要加载的插件。选项值是一个以分号分隔的插件库文件名和插件名称列表。每个
plugin_library是包含插件代码的库文件名,每个name是要加载的插件名称。如果插件库文件名没有前缀插件名称,服务器将加载库文件中的所有插件。使用前缀插件名称,服务器将仅加载库文件中的指定插件。服务器在plugin_dir系统变量指定的目录中查找插件库文件。例如,如果插件名为
myplug1和myplug2,并且包含在插件库文件myplug1.so和myplug2.so中,可以使用以下选项进行早期插件加载:mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"引号括住参数值,因为一些命令解释器将分号(
;)视为特殊字符。(例如,Unix shell将其视为命令终止符。)每个命名插件仅在单个mysqld调用中加载。重新启动后,插件不会加载,除非再次使用
--plugin-load。这与INSTALL PLUGIN不同,后者将插件添加到mysql.plugins系统表中,以便在每次正常服务器启动时加载插件。在正常启动序列中,服务器通过读取
mysql.plugins系统表来确定要加载的插件。如果服务器使用--skip-grant-tables选项启动,注册在mysql.plugins表中的插件将不会加载且不可用。--plugin-load使插件可以在--skip-grant-tables时加载。--plugin-load还使插件可以在启动时加载,而不是在运行时加载。该选项不设置对应的系统变量。
SHOW PLUGINS提供了关于加载的插件的信息。 更详细的信息可以在信息模式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之前的--plugin-load-add都没有效果,因为--plugin-load重置了要加载的插件集。换言之,这些选项:--plugin-load=x --plugin-load-add=y等同于这个选项:
--plugin-load="x;y"但这些选项:
--plugin-load-add=y --plugin-load=x等同于这个选项:
--plugin-load=x该选项不设置对应的系统变量。
SHOW PLUGINS提供了关于加载的插件的信息。 更详细的信息可以在信息模式PLUGINS表中找到。 见 第 7.6.2 节,“获取服务器插件信息”。关于插件加载的更多信息,请参阅 第 7.6.1 节,“安装和卸载插件”。
-
指定了一个服务器插件的选项。 例如,许多存储引擎可以作为插件构建,并且对于这些引擎,可以使用
--plugin前缀指定选项。因此,--innodb-file-per-table选项对于InnoDB可以指定为--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 否 SET_VARHint Applies否 Type 整数 Default Value 3306Minimum Value 0Maximum Value 65535监听 TCP/IP 连接的端口号。在 Unix 和 Unix-like 系统上,端口号必须是 1024 或更高,除非服务器由
root操作系统用户启动。将此选项设置为 0 将使用默认值。 -
Command-Line Format --port-open-timeout=#Type 整数 Default Value 0在某些系统上,当服务器停止时,TCP/IP 端口可能不会立即可用。如果服务器快速重新启动,其尝试重新打开端口的尝试可能会失败。此选项指定服务器等待 TCP/IP 端口变为可用状态的秒数,如果无法打开端口。默认情况下,不等待。
-
打印程序名称和从选项文件获取的所有选项。密码值将被屏蔽。此选项必须是命令行上的第一个选项,除非它紧跟在
--defaults-file或--defaults-extra-file之后。有关此选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“命令行选项影响选项文件处理”。
-
Command-Line Format --remove [service_name]Platform Specific Windows (仅限 Windows) 删除 MySQL Windows 服务。如果未指定
service_name值,默认服务名称为MySQL。有关更多信息,请参阅 第 2.3.3.8 节,“以 Windows 服务形式启动 MySQL”。 -
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的存储引擎。该选项自 MySQL 8.2.0 起弃用,并将在未来版本中删除。
-
Command-Line Format --skip-show-databaseSystem Variable 跳过显示数据库Scope 全局 Dynamic 否 SET_VARHint Applies否 Type 布尔值 Default Value OFF该选项设置了
skip_show_database系统变量,该变量控制谁可以使用SHOW DATABASES语句。见 第 7.1.8 节,“服务器系统变量”。 -
Command-Line Format --skip-stack-trace不要写入堆栈跟踪。这选项在您在调试器下运行 mysqld 时非常有用。在某些系统上,您也必须使用该选项来获取核心文件。见 第 7.9 节,“调试 MySQL”。
-
Command-Line Format --slow-start-timeout=#Type 整数 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 套接字文件。默认值是
/tmp/mysql.sock。如果给定该选项,服务器将在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。在 Windows 上,该选项指定了用于监听本地连接的命名管道的名称。默认值是MySQL(不区分大小写)。 -
--sql-mode=value[,value[,value...]]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 --ssl[={OFF|ON}]Deprecated 是 Disabled by skip-sslType 布尔值 Default Value ON选项
--ssl指定服务器允许但不需要在主连接接口上进行加密连接。此选项默认启用。类似选项
--admin-ssl类似于--ssl, 但它应用于管理连接接口而不是主连接接口。有关这些接口的信息,请参见 第 7.1.12.1 节,“连接接口”。--ssl可以以否定形式指定为--skip-ssl或同义词 (--ssl=OFF,--disable-ssl)。在这种情况下,选项指定服务器 不 允许加密连接,无论tls_和xxxssl_系统变量的设置如何。xxx选项
--ssl只在服务器启动时对服务器是否支持加密连接产生影响。在运行时,它被忽略且没有效果ALTER INSTANCE RELOAD TLS。例如,您可以使用--ssl=OFF启动服务器禁用加密连接,然后重新配置 TLS 并执行ALTER INSTANCE RELOAD TLS在运行时启用加密连接。有关配置服务器是否允许客户端使用 SSL 连接和指示 SSL 密钥和证书的位置的更多信息,请参见 第 8.3.1 节,“配置 MySQL 使用加密连接”,该节还描述了服务器的证书和密钥文件自动生成和自动发现功能。请考虑在服务器端设置至少
ssl_cert和ssl_key系统变量,并在客户端设置--ssl-ca(或--ssl-capath)选项。因为加密连接支持默认启用,因此通常不需要指定
--ssl,该选项已弃用且将在未来 MySQL 版本中删除。如果需要禁用加密连接,可以不指定--ssl。将tls_version系统变量设置为空值,以指示不支持任何 TLS 版本。例如,在服务器my.cnf文件中的以下行禁用加密连接:[mysqld] tls_version='' -
Command-Line Format --standalonePlatform 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-linksCommand-Line Format --symbolic-links[={OFF|ON}]Deprecated 是 Type 布尔值 Default Value OFF启用或禁用符号链接支持。在 Unix 上,启用符号链接意味着可以使用
MyISAM索引文件或数据文件链接到另一个目录,使用INDEX DIRECTORY或DATA DIRECTORY选项的CREATE TABLE语句。如果删除或重命名表,符号链接所指向的文件也将被删除或重命名。见 第 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 节,“日期和时间函数” 和SET TIMESTAMP在 第 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 未提交读取已提交读取可重复读取串行化设置默认事务隔离级别。级别值可以是
未提交读取、已提交读取、可重复读取或串行化。见 第 15.3.7 节,“SET TRANSACTION 语句”。默认事务隔离级别也可以在运行时使用
SET TRANSACTION语句或设置transaction_isolation系统变量来设置。 -
Command-Line Format --transaction-read-only[={OFF|ON}]System Variable transaction_read_onlyScope Global, Session Dynamic 是 SET_VARHint Applies否 Type 布尔值 Default Value OFF设置默认事务访问模式。默认情况下,读取模式是禁用的,因此模式是读写。
要在运行时设置默认事务访问模式,请使用
SET TRANSACTION语句或设置transaction_read_only系统变量。见 第 15.3.7 节,“SET TRANSACTION 语句”。 -
--tmpdir=,dir_name-tdir_nameCommand-Line Format --tmpdir=dir_nameSystem Variable tmpdirScope Global 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:数据字典升级。
这一步升级:
-
数据字典表在
mysql模式中。如果实际数据字典版本低于当前期望版本,服务器将升级数据字典。如果不能或被阻止这样做,服务器无法运行。 -
性能模式和
INFORMATION_SCHEMA。
-
-
步骤 2:服务器升级。
该步骤包括所有其他升级任务。如果现有的安装数据具有比服务器期望的较低的 MySQL 版本,它必须升级:
-
系统表在
mysql模式中(剩余的非数据字典表)。 -
sys模式。 -
用户模式。
-
有关升级步骤 1 和 2 的详细信息,请参阅 第 3.4 节,“MySQL 升级过程升级什么”。
这些
--upgrade选项值是允许的:-
AUTO服务器执行自动升级任何发现的过时项目(步骤 1 和 2)。这是默认操作,如果
--upgrade未明确指定。 -
NONE服务器在启动过程中不执行自动升级步骤(跳过步骤 1 和 2)。因为这个选项值阻止了数据字典升级,如果数据字典被发现过时,服务器将退出并显示错误:
[ERROR] [MY-013381] [Server] Server shutting down because upgrade is required, yet prohibited by the command line option '--upgrade=NONE'. [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. -
MINIMAL服务器升级数据字典、性能模式和
INFORMATION_SCHEMA,如果必要(步骤 1)。请注意,在使用这个选项后升级,组复制无法启动,因为系统表在复制内部依赖的表没有更新,其他领域也可能出现减少的功能。 -
FORCE服务器升级数据字典、性能模式和
INFORMATION_SCHEMA,如果必要(步骤 1)。此外,服务器强制升级所有其他项目(步骤 2)。预计服务器启动时间较长,因为服务器检查所有模式中的所有对象。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或数字用户 IDuser_id运行 mysqld 服务器。(在这个上下文中,“用户”指的是系统登录帐户,而不是 MySQL 用户列表中的用户。)这个选项是 强制 的,当启动 mysqld 作为
root时。服务器在启动序列中更改其用户 ID,导致它以该特定用户身份运行,而不是以root身份运行。请参阅 第 8.1.1 节,“安全指南”。为了避免可能的安全漏洞,其中用户在
--user=root选项添加到my.cnf文件中(从而导致服务器以root用户身份运行), mysqld 只使用第一个--user选项,并在发现多个--user选项时产生警告。/etc/my.cnf和$MYSQL_HOME/my.cnf中的选项在命令行选项之前处理,因此建议您在/etc/my.cnf中添加一个--user选项,并指定一个不是root的值。/etc/my.cnf中的选项在任何其他--user选项之前找到,这确保服务器以其他用户身份运行,而不是root,并且如果找到任何其他--user选项时产生警告。 -
Command-Line Format --validate-config[={OFF|ON}]Type 布尔值 Default Value OFF验证服务器启动配置。如果没有发现错误,服务器将以退出代码 0 终止。如果发现错误,服务器将显示诊断消息并以退出代码 1 终止。警告和信息消息也可能被显示,取决于
log_error_verbosity值,但不会导致立即验证终止或退出代码 1。有关更多信息,请参阅 第 7.1.3 节,“服务器配置验证”。 -
--validate-user-plugins[={OFF|ON}]Command-Line Format --validate-user-plugins[={OFF|ON}]Type 布尔值 Default Value ON如果启用此选项(默认情况),服务器将检查每个用户帐户,并在发现使帐户不可用的条件时产生警告:
-
帐户需要未加载的身份验证插件。
-
帐户需要
sha256_password或caching_sha2_password身份验证插件,但服务器未启用 SSL 或 RSA,如插件所需。
启用
--validate-user-plugins将减慢服务器初始化和FLUSH PRIVILEGES。如果您不需要额外的检查,可以在启动时禁用此选项以避免性能下降。 -
-
使用此选项与
--help选项以获取详细帮助。 -
--version,-V显示版本信息并退出。