MySQL 服务器维护许多影响其操作的系统变量。大多数系统变量可以在服务器启动时使用命令行选项或选项文件设置。大多数变量可以在运行时使用 SET
语句动态修改,不需要停止和重新启动服务器。一些变量是只读的,其值由系统环境、MySQL 在系统上的安装方式或可能是编译 MySQL 时的选项确定。大多数系统变量都有默认值,但有一些例外,包括只读变量。你也可以在表达式中使用系统变量值。
通常情况下,设置全局系统变量的运行时值需要 SYSTEM_VARIABLES_ADMIN
权限(或已弃用的 SUPER
权限)。设置会话系统变量的运行时值通常不需要特殊权限,可以由任何用户设置,但有一些例外。有关更多信息,请参阅 第 7.1.9.1 节,“系统变量权限”
有多种方式可以查看系统变量的名称和值:
-
要查看服务器基于其编译默认值和读取的选项文件的值,请使用以下命令:
mysqld --verbose --help
-
要查看服务器基于其编译默认值的值,忽略选项文件中的设置,请使用以下命令:
mysqld --no-defaults --verbose --help
-
要查看当前正在运行的服务器使用的值,请使用
SHOW VARIABLES
语句或性能模式系统变量表。请参阅 第 29.12.14 节,“性能模式系统变量表”。
本节提供了每个系统变量的描述。有关系统变量摘要表,请参阅 第 7.1.5 节,“服务器系统变量参考”。有关系统变量操作的更多信息,请参阅 第 7.1.9 节,“使用系统变量”。
有关系统变量的更多信息,请参阅以下节:
-
第 7.1.9 节,“使用系统变量”,讨论了设置和显示系统变量值的语法。
-
第 7.1.9.2 节,“动态系统变量”,列出了可以在运行时设置的变量。
-
系统变量调整信息可以在 第 7.1.1 节,“配置服务器” 中找到。
-
第 17.14 节,“InnoDB 启动选项和系统变量”,列出了 InnoDB 系统变量。
-
第 25.4.3.9.2 节,“NDB 集群系统变量”,列出了特定于 NDB 集群的系统变量。
-
有关复制服务器系统变量的信息,请参阅 第 19.1.6 节,“复制和二进制日志选项和变量”。
一些变量描述引用了““启用””或““禁用””变量。这些变量可以使用 SET
语句启用或禁用,方法是将其设置为 ON
或 1
,或将其设置为 OFF
或 0
。布尔变量可以在启动时设置为 ON
、TRUE
、OFF
和 FALSE
(不区分大小写),以及 1
和 0
。请参阅 第 6.2.2.4 节,“程序选项修饰符”。
一些系统变量控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从分配给缓冲区的总内存中分配,而所需的空间量可能是平台相关的。这意味着当您将值分配给控制缓冲区大小的系统变量时,实际可用的空间量可能不同于分配的值。在某些情况下,实际值可能小于分配的值。服务器也可能将值调整为更高。例如,如果您将变量的值设置为0,而该变量的最小值为1024,服务器将值设置为1024。
除非另有说明,缓冲区大小、长度和堆栈大小的值以字节为单位。
一些系统变量描述包括块大小,在这种情况下,服务器将存储的值舍入到下一个较低的块大小的整数倍,即 FLOOR(
value
)*
。block_size
示例:假设某个变量的块大小为4096,并将变量的值设置为100000(假设变量的最大值大于该数字)。由于100000 / 4096 = 24.4140625,服务器将自动将值降低到98304(24 * 4096)以便存储。
在某些情况下,变量的最大值是MySQL解析器允许的最大值,但不是块大小的精确倍数。在这种情况下,有效的最大值是块大小的下一个较低的倍数。
示例:某个系统变量的最大值显示为4294967295(232-1),其块大小为1024。4294967295 / 1024 = 4194303.9990234375,因此如果您将该变量设置为其状态的最大值,实际存储的值将是4194303 * 1024 = 4294966272。
一些系统变量采用文件名值。除非另有说明,默认文件位置是数据目录,如果值是相对路径名。要明确指定位置,请使用绝对路径名。假设数据目录是 /var/mysql/data
。如果文件值变量是相对路径名,它将位于 /var/mysql/data
下。如果值是绝对路径名,其位置将由路径名指定。
-
Command-Line Format --activate-all-roles-on-login[={OFF|ON}]
System Variable activate_all_roles_on_login
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
是否在用户登录服务器时启用所有授予角色的自动激活:
-
如果
activate_all_roles_on_login
启用,服务器将在登录时激活所有授予角色的账户。这将优先于使用SET DEFAULT ROLE
指定的默认角色。 -
如果
activate_all_roles_on_login
禁用,服务器将在登录时激活使用SET DEFAULT ROLE
指定的默认角色,如果有的话。
授予角色包括明确授予用户的角色和在
mandatory_roles
系统变量值中命名的角色。activate_all_roles_on_login
只适用于登录时,以及在定义器上下文中执行的存储程序和视图的开始执行时。要在会话中更改活动角色,请使用SET ROLE
。要更改存储程序的活动角色,该程序体应执行SET ROLE
。 -
-
Command-Line Format --admin-address=addr
System Variable admin_address
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type String 监听管理网络接口的IP地址(参见第7.1.12.1节,“连接接口”)。没有默认的
admin_address
值。如果在启动时未指定此变量,服务器将不维护管理接口。服务器还具有bind_address
系统变量,以配置常规(非管理)客户端TCP/IP连接。参见第7.1.12.1节,“连接接口”。如果指定
admin_address
,其值必须满足以下要求:-
该值必须是一个单个IPv4地址、IPv6地址或主机名。
-
该值不能指定通配符地址格式(
*
、0.0.0.0
或::
)。 -
该值可以包括网络命名空间specifier。
可以将IP地址指定为IPv4或IPv6地址。如果值是一个主机名,服务器将其解析为IP地址并绑定到该地址。如果主机名解析到多个IP地址,服务器将使用第一个IPv4地址,如果有,或者第一个IPv6地址否则。
服务器对不同类型的地址进行如下处理:
-
如果地址是一个IPv4映射地址,服务器将接受该地址的TCP/IP连接,无论是IPv4还是IPv6格式。例如,如果服务器绑定到
::ffff:127.0.0.1
,客户端可以使用--host=127.0.0.1
或--host=::ffff:127.0.0.1
连接。 -
如果地址是一个“普通”的IPv4或IPv6地址(例如
127.0.0.1
或::1
),服务器仅接受该IPv4或IPv6地址的TCP/IP连接。
以下规则适用于指定网络命名空间:
-
可以为IP地址或主机名指定网络命名空间。
-
不能为通配符IP地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。如果给定,必须作为
/
后缀紧跟在地址后。ns
-
没有
/
后缀的地址使用主机系统的全局命名空间。因此,全局命名空间是默认的。ns
-
具有
/
后缀的地址使用命名空间ns
ns
。 -
主机系统必须支持网络命名空间,每个命名的命名空间必须事先设置。命名不存在的命名空间将产生错误。
有关网络命名空间的更多信息,请参见第7.1.14节,“网络命名空间支持”。
如果绑定到地址失败,服务器将产生错误并且不启动。
admin_address
系统变量与bind_address
系统变量相似,但有以下差异:-
bind_address
允许多个地址。admin_address
仅允许单个地址。 -
bind_address
允许通配符地址。admin_address
不允许。
-
-
Command-Line Format --admin-port=port_num
System Variable admin_port
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Integer Default Value 33062
Minimum Value 0
Maximum Value 65535
用于管理网络接口的TCP/IP端口号(参见第7.1.12.1节,“连接接口”)。将此变量设置为0将使用默认值。
设置
admin_port
没有效果,如果admin_address
未指定,因为在那种情况下,服务器不维护管理网络接口。 -
Command-Line Format --admin-ssl-ca=file_name
System Variable admin_ssl_ca
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
系统变量
admin_ssl_ca
类似于ssl_ca
,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持。 -
Command-Line Format --admin-ssl-capath=dir_name
System Variable admin_ssl_capath
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 目录名 Default Value NULL
系统变量
admin_ssl_capath
类似于ssl_capath
,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持。 -
Command-Line Format --admin-ssl-cert=file_name
System Variable admin_ssl_cert
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
系统变量
admin_ssl_cert
类似于ssl_cert
,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持。 -
Command-Line Format --admin-ssl-cipher=name
System Variable admin_ssl_cipher
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value NULL
系统变量
admin_ssl_cipher
类似于ssl_cipher
,只是它应用于管理连接接口,而不是主连接接口。有关配置管理接口加密支持的信息,请参阅管理接口加密连接支持。 -
Command-Line Format --admin-ssl-crl=file_name
System Variable admin_ssl_crl
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value 空
系统变量
admin_ssl_crl
与ssl_crl
相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接。 -
Command-Line Format --admin-ssl-crlpath=dir_name
System Variable admin_ssl_crlpath
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 目录名称 Default Value 空
系统变量
admin_ssl_crlpath
与ssl_crlpath
相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接。 -
Command-Line Format --admin-ssl-key=file_name
System Variable admin_ssl_key
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名称 Default Value 空
系统变量
admin_ssl_key
与ssl_key
相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接。 -
Command-Line Format --admin-tls-ciphersuites=ciphersuite_list
System Variable admin_tls_ciphersuites
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value 空
系统变量
admin_tls_ciphersuites
与tls_ciphersuites
相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接。 -
Command-Line Format --admin-tls-version=protocol_list
System Variable admin_tls_version
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value TLSv1.2,TLSv1.3
系统变量
admin_tls_version
与tls_version
相似,除了它应用于管理连接接口而不是主连接接口。有关配置管理接口加密支持的信息,请参阅 管理接口支持加密连接。Important-
MySQL 8.0 中删除了对 TLSv1 和 TLSv1.1 连接协议的支持。请参阅 删除 TLSv1 和 TLSv1.1 协议的支持 以获取更多信息。
-
MySQL 8.3 支持 TLSv1.3 协议,前提是 MySQL 服务器使用 OpenSSL 1.1.1 或更高版本编译。服务器在启动时检查 OpenSSL 的版本,如果版本低于 1.1.1,TLSv1.3 将从默认值中删除。在这种情况下,默认值为
TLSv1.2
。
-
-
Command-Line Format --身份验证策略=value
System Variable 身份验证策略
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value *,,
该变量用于管理多因素身份验证(MFA)功能。它适用于
CREATE USER
和ALTER USER
语句中与账户定义相关的身份验证因子子句,其中“factor”对应于与账户关联的身份验证方法或插件:-
身份验证策略
控制账户可以拥有的身份验证因子数量。也就是说,它控制哪些因子是必需的或允许的。 -
身份验证策略
也控制每个因子的允许插件(或方法)。 -
身份验证策略
与default_authentication_plugin
结合,确定了默认身份验证插件用于不明确指定插件的身份验证规范。
因为
身份验证策略
只适用于创建或修改账户时,因此对其值的更改不会影响现有的用户账户。Note尽管
身份验证策略
系统变量对CREATE USER
和ALTER USER
语句的身份验证相关子句施加了某些约束,但拥有AUTHENTICATION_POLICY_ADMIN
权限的用户不受这些约束的限制。(警告将出现在语句中,否则将不被允许。)身份验证策略
的值是一个由 1、2 或 3 个逗号分隔的元素列表。每个元素可以是身份验证插件名称、星号 (*
)、空或缺失。(例外:元素 1 不能为空或缺失。)在所有情况下,元素可以被空白字符包围,整个列表被单引号括起来。指定的值类型对应于元素
N
在列表中的影响是,是否需要 factorN
在账户定义中存在,以及哪些身份验证插件可以被使用:-
如果元素
N
是身份验证插件名称,factorN
的身份验证方法是必需的,必须使用指定的插件。此外,该插件将成为 factor
N
身份验证方法的默认插件,用于不明确指定插件的身份验证规范。有关详细信息,请参阅 默认身份验证插件。使用内部凭证存储的身份验证插件只能指定为第一个元素,不能重复。例如,以下设置是不允许的:
-
身份验证策略 = 'caching_sha2_password, sha256_password'
-
身份验证策略 = 'caching_sha2_password, authentication_webauthn, sha256_password'
-
-
如果元素
N
是星号 (*
),则需要 factorN
的身份验证方法。它可以使用任何适用于元素N
的身份验证插件(如下所述)。 -
如果元素
N
为空,则 factorN
的身份验证方法是可选的。如果给定,可以使用任何适用于元素N
的身份验证插件(如下所述)。 -
如果元素
N
缺失(即值中少于N
-1 个逗号),则 factorN
的身份验证方法是禁止的。例如,值为'*'
只允许单个因素,从而强制单因素身份验证(1FA)对于使用CREATE USER
或使用ALTER USER
创建或更改的账户。
当
authentication_policy
元素命名身份验证插件时,元素的允许插件名称受以下条件限制:-
元素 1 必须命名不需要注册步骤的插件。例如,
authentication_webauthn
或authentication_fido
(已弃用)不能被命名。 -
元素 2 和 3 必须命名不使用内部凭证存储的插件。
有关哪些身份验证插件使用内部凭证存储的信息,请参阅 第 8.2.15 节,“密码管理”。
当
authentication_policy
元素N
是*
时,factorN
在账户定义中的允许插件名称受以下条件限制:-
对于因素 1,账户定义可以使用任何插件。默认身份验证插件规则适用于不命名插件的身份验证规范。请参阅 默认身份验证插件。
-
对于因素 2 和 3,账户定义不能命名使用内部凭证存储的插件。例如,使用 '
*,*
','*,*,*
','*,
','*,,
'authentication_policy
设置,使用内部凭证存储的插件只能用于第一个因素,不能重复。
当
authentication_policy
元素N
为空时,factorN
在账户定义中的允许插件名称受以下条件限制:-
对于因素 1,这不适用,因为元素 1 不能为空。
-
对于因素 2 和 3,账户定义不能命名使用内部凭证存储的插件。
空元素必须出现在列表的末尾,跟随非空元素。在其他 words,第一个元素不能为空,或者没有元素为空,或者最后一个元素为空,或者最后两个元素为空。例如,值为
',,'
不允许,因为它将表明所有因素都是可选的。这是不可能的;账户必须至少有一个身份验证因素。默认值为
authentication_policy
是'*,,'
。这意味着因素 1 在账户定义中是必需的,可以使用任何身份验证插件,而因素 2 和 3 是可选的,每个都可以使用不使用内部凭证存储的身份验证插件。以下表格显示了一些
authentication_policy
值和每个值所建立的账户创建或更改策略。表 7.4 示例 authentication_policy 值
authentication_policy Value Effective Policy '*'
仅允许创建或更改具有一个因素的账户。 '*,*'
仅允许创建或更改具有两个因素的账户。 '*,*,*'
仅允许创建或更改具有三个因素的账户。 '*,'
允许创建或更改具有一个或两个因素的账户。 '*,,'
允许创建或修改账户,使用一个、两个或三个因素。 '*,*,'
允许创建或修改账户,使用两个或三个因素。 '*,
auth_plugin
'允许创建或修改账户,使用两个因素,其中第一个因素可以是任何身份验证方法,第二个因素必须是命名的插件。 '
auth_plugin
,*,'允许创建或修改账户,使用两个或三个因素,其中第一个因素必须是命名的插件。 '
auth_plugin
,'允许创建或修改账户,使用一个或两个因素,其中第一个因素必须是命名的插件。 '
auth_plugin
,auth_plugin
,auth_plugin
'允许创建或修改账户,使用三个因素,其中每个因素必须使用命名的插件。 -
-
Command-Line Format --身份验证-windows-日志级别=#
System Variable 身份验证Windows日志级别
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 0
Maximum Value 4
该变量仅在启用了身份验证Windows插件并启用了调试代码时可用。请参阅第 8.4.1.6 节,“Windows 可插拔身份验证”。
该变量设置身份验证Windows插件的日志级别。以下表格显示了允许的值。
Value Description 0 不记录 1 仅记录错误消息 2 记录级别 1 消息和警告消息 3 记录级别 2 消息和信息笔记 4 记录级别 3 消息和调试消息 -
Command-Line Format --身份验证-windows-使用-principal-名称[={OFF|ON}]
System Variable 身份验证Windows使用principal名称
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
该变量仅在启用了身份验证Windows插件时可用。请参阅第 8.4.1.6 节,“Windows 可插拔身份验证”。
使用
InitSecurityContext()
函数进行身份验证的客户端应该提供一个字符串,标识连接到的服务 (targetName
)。MySQL 使用服务器运行的账户的 principal 名称 (UPN)。UPN 的形式为
,无需注册即可使用。该 UPN 在身份验证握手机开始时由服务器发送。user_id
@computer_name
该变量控制服务器是否在初始挑战中发送 UPN。默认情况下,该变量启用。出于安全原因,可以禁用该变量,以避免将服务器的账户名称以明文形式发送给客户端。如果禁用该变量,服务器总是发送
0x00
字节作为初始挑战,客户端不指定targetName
,因此使用 NTLM 身份验证。如果服务器无法获取其 UPN(主要发生在不支持 Kerberos 身份验证的环境中),则服务器不发送 UPN,使用 NTLM 身份验证。
-
Command-Line Format --自动提交[={OFF|ON}]
System Variable 自动提交
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
自动提交模式。如果设置为 1,则对表的所有更改立即生效。如果设置为 0,则必须使用
COMMIT
来接受事务或ROLLBACK
来取消它。如果autocommit
是 0 并将其更改为 1,MySQL 将执行自动COMMIT
任何打开的事务。另一种开始事务的方式是使用START TRANSACTION
或BEGIN
语句。见 第 15.3.1 节,“START TRANSACTION, COMMIT, and ROLLBACK Statements”。默认情况下,客户端连接以
autocommit
设置为 1 开始。要使客户端以默认值 0 开始,请使用--autocommit=0
选项启动服务器。要使用选项文件设置变量,请包括以下行:[mysqld] autocommit=0
-
Command-Line Format --automatic-sp-privileges[={OFF|ON}]
System Variable automatic_sp_privileges
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value ON
当该变量的值为 1(默认值)时,服务器自动授予存储过程的创建者
EXECUTE
和ALTER ROUTINE
权限,如果用户不能执行或更改或删除该过程。(ALTER ROUTINE
权限是删除该过程所需的。)服务器还自动从创建者中删除这些权限时删除该过程。过程的创建者是执行
CREATE
语句的账户。这可能与在过程定义中指定的DEFINER
账户不同。如果您使用
--skip-new
选项启动 mysqld,automatic_sp_privileges
将被设置为OFF
。 -
Command-Line Format --auto-generate-certs[={OFF|ON}]
System Variable auto_generate_certs
Scope Global Dynamic No SET_VAR
Hint AppliesNo Type Boolean Default Value ON
该变量控制服务器是否在数据目录中自动生成 SSL 密钥和证书文件,如果它们不存在。
在启动时,如果
auto_generate_certs
系统变量启用,未指定其他 SSL 选项,且服务器端 SSL 文件缺失于数据目录中,服务器将自动生成服务器端和客户端 SSL 证书和密钥文件。这些文件启用使用 SSL 的安全客户端连接;见 第 8.3.1 节,“Configuring MySQL to Use Encrypted Connections”。有关SSL文件自动生成的更多信息,包括文件名和特征,请参阅第8.3.3.1节,“使用MySQL创建SSL和RSA证书和密钥”
系统变量
sha256_password_auto_generate_rsa_keys
和caching_sha2_password_auto_generate_rsa_keys
相关,但控制使用RSA在未加密连接上交换安全密码的RSA密钥对文件的自动生成。 -
Command-Line Format --avoid-temporal-upgrade[={OFF|ON}]
Deprecated 是 System Variable avoid_temporal_upgrade
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量控制是否
ALTER TABLE
隐式升级发现的时间列(TIME
、DATETIME
和TIMESTAMP
列)以前的5.6.4格式升级这些列需要重建表,防止快速更改操作的应用。该变量默认情况下禁用。启用它将导致
ALTER TABLE
不重建时间列,从而能够应用快速更改操作。该变量已弃用;预计在未来MySQL版本中删除。
-
Command-Line Format --back-log=#
System Variable back_log
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value -1
(表示自动调整大小;不要将其设置为该值)Minimum Value 1
Maximum Value 65535
MySQL可以拥有的未决连接请求的数量。这在MySQL主线程在短时间内收到大量连接请求时发挥作用。那时,主线程需要一些时间(尽管非常短)来检查连接并启动新线程。
back_log
值指示在这短时间内可以堆叠的请求数量,然后MySQL暂时停止回答新请求。换言之,这个值是入站TCP/IP连接的监听队列的大小。您的操作系统对该队列的大小也有其限制。Unix
listen()
系统调用手册页应该有更多详细信息。请查看您的操作系统文档,以了解该变量的最大值。back_log
不能设置高于操作系统限制。默认值是
max_connections
的值,这使得允许的积压量调整到最大允许的连接数。 -
Command-Line Format --basedir=dir_name
System Variable basedir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名 Default Value MySQL安装目录的父目录
MySQL安装的基本目录路径。
-
Command-Line Format --big-tables[={OFF|ON}]
System Variable big_tables
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果启用,服务器将所有临时表存储在磁盘上,而不是在内存中。这将防止大多数
表
错误对于tbl_name
已满SELECT
操作,这些操作需要一个大型临时表,但也会减慢查询速度,对于那些可以使用内存表的查询。默认值为新连接是
OFF
(使用内存临时表)。通常,不需要启用这个变量。当内存 内部 临时表由TempTable
存储引擎(默认)管理时,最大内存量超过TempTable
存储引擎可以占用的内存量时,TempTable
存储引擎将开始将数据存储到临时文件中。当内存临时表由MEMORY
存储引擎管理时,内存表将自动转换为基于磁盘的表,如有需要。有关更多信息,请参阅 第 10.4.4 节,“MySQL 中的内部临时表使用”。 -
Command-Line Format --bind-address=addr
System Variable bind_address
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value *
MySQL 服务器监听一个或多个网络套接字以接受 TCP/IP 连接。每个套接字绑定到一个地址,但一个地址可以映射到多个网络接口。要指定服务器如何监听 TCP/IP 连接,请在服务器启动时设置
bind_address
系统变量。服务器还具有一个admin_address
系统变量,用于在专用接口上启用管理连接。请参阅 第 7.1.12.1 节,“连接接口”。如果
bind_address
被指定,它接受一个或多个地址值,每个值可以指定单个非通配符 IP 地址或主机名。每个地址可以包括网络命名空间规范。如果只有一个地址被指定,它可以使用一个通配符地址格式(*
、0.0.0.0
或::
),以便在多个网络接口上监听。多个地址用逗号分隔。当多个值被列出时,每个值必须指定单个非通配符 IP 地址(IPv4 或 IPv6)或主机名,而通配符地址格式(*
、0.0.0.0
或::
)不允许。IP 地址可以指定为 IPv4 或 IPv6 地址。对于任何主机名,服务器将其解析为 IP 地址,然后绑定到该地址。如果主机名解析到多个 IP 地址,服务器使用第一个 IPv4 地址,如果没有,则使用第一个 IPv6 地址。
服务器对不同类型的地址进行如下处理:
-
如果地址是
*
,服务器在所有服务器主机 IPv4 接口和所有 IPv6 接口上接受 TCP/IP 连接。使用这个地址来允许 IPv4 和 IPv6 连接在所有服务器接口上。如果变量指定了多个值,这个值不允许。 -
如果地址是
0.0.0.0
,服务器在所有服务器主机 IPv4 接口上接受 TCP/IP 连接。如果变量指定了多个值,这个值不允许。 -
如果地址是
::
,服务器在所有服务器主机 IPv4 和 IPv6 接口上接受 TCP/IP 连接。如果变量指定了多个值,这个值不允许。 -
如果地址是一个 IPv4 映射地址,服务器接受该地址的 TCP/IP 连接,无论是 IPv4 还是 IPv6 格式。例如,如果服务器绑定到
::ffff:127.0.0.1
,客户端可以使用--host=127.0.0.1
或--host=::ffff:127.0.0.1
连接。 -
如果地址是一个 “普通” IPv4 或 IPv6 地址(例如
127.0.0.1
或::1
),服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。
以下规则适用于指定网络命名空间:
-
可以为 IP 地址或主机名指定网络命名空间。
-
不能为通配符 IP 地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。如果给定,必须指定为
/
后缀,紧跟在地址后。ns
-
没有
/
后缀的地址使用主机系统的全局命名空间。因此,全局命名空间是默认的。ns
-
具有
/
后缀的地址使用命名空间ns
ns
。 -
主机系统必须支持网络命名空间,每个命名的命名空间必须事先设置。命名一个不存在的命名空间将产生错误。
-
如果变量值指定了多个地址,可以包括全局命名空间、命名命名空间或混合。
有关网络命名空间的更多信息,请参阅第 7.1.14 节,“网络命名空间支持”。
如果绑定到任何地址失败,服务器将产生错误并且不启动。
示例:
-
bind_address=*
服务器监听所有 IPv4 或 IPv6 地址,如指定的通配符
*
。 -
bind_address=198.51.100.20
服务器仅监听
198.51.100.20
IPv4 地址。 -
bind_address=198.51.100.20,2001:db8:0:f101::1
服务器监听
198.51.100.20
IPv4 地址和2001:db8:0:f101::1
IPv6 地址。 -
bind_address=198.51.100.20,*
这将产生错误,因为通配符地址不允许在
bind_address
命名多个值时。 -
bind_address=198.51.100.20/red,2001:db8:0:f101::1/blue,192.0.2.50
服务器监听
198.51.100.20
IPv4 地址在red
命名空间中,2001:db8:0:f101::1
IPv6 地址在blue
命名空间中,并且192.0.2.50
IPv4 地址在全局命名空间中。
当
bind_address
命名单个值(通配符或非通配符)时,服务器监听单个套接字,该套接字可能绑定到多个网络接口。当bind_address
命名多个值时,服务器监听每个值一个套接字,每个套接字绑定到单个网络接口。套接字的数量与指定的值数量成线性关系。根据操作系统的连接接受效率,长值列表可能会产生性能损失。由于文件描述符分配给监听套接字和网络命名空间文件,因此可能需要增加
open_files_limit
系统变量。如果您打算将服务器绑定到特定地址,请确保
mysql.user
系统表中存在具有管理权限的帐户,以便您可以连接到该地址。否则,您无法关闭服务器。例如,如果您将服务器绑定到*
,您可以使用所有现有帐户连接到服务器。但是,如果您将服务器绑定到::1
,它将仅接受来自该地址的连接。在这种情况下,首先确保'root'@'::1'
帐户存在于mysql.user
表中,以便您可以连接到服务器以关闭它。 -
-
Command-Line Format --block-encryption-mode=#
System Variable block_encryption_mode
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type String Default Value aes-128-ecb
该变量控制块加密模式,对于块加密算法如 AES 生效。它影响
AES_ENCRYPT()
和AES_DECRYPT()
的加密。块加密模式
采用aes-
格式,其中密钥长度
-加密模式
密钥长度
是以位为单位的密钥长度,加密模式
是加密模式。该值不区分大小写。允许的密钥长度
值为 128、192 和 256。允许的加密模式
值为ECB
、CBC
、CFB1
、CFB8
、CFB128
和OFB
。例如,该语句使 AES 加密函数使用 256 位密钥长度和 CBC 模式:
SET block_encryption_mode = 'aes-256-cbc';
尝试将
块加密模式
设置为包含不支持的密钥长度或 SSL 库不支持的模式时,会发生错误。 -
这是一个 160 位
SHA1
签名,由链接器在 Linux 系统上编译服务器时生成(默认情况下启用),并将其转换为十六进制字符串。该只读值充当唯一的构建 ID,并在服务器启动时写入日志中。构建 ID
不支持其他平台。 -
Command-Line Format --批量插入缓冲区大小=#
System Variable 批量插入缓冲区大小
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 8388608
Minimum Value 0
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
Unit 字节/线程 MyISAM
使用特殊的树形缓存来加速批量插入INSERT ... SELECT
、INSERT ... VALUES (...), (...), ...
和LOAD DATA
对非空表的数据添加时。该变量限制了每个线程的缓存树大小,以字节为单位。将其设置为 0 将禁用该优化。默认值为 8MB。设置该会话变量需要足够的权限。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --caching-sha2-password 摘要轮数=#
System Variable caching_sha2_password 摘要轮数
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 5000
Minimum Value 5000
Maximum Value 4095000
该变量指定了
caching_sha2_password
身份验证插件用于密码存储的哈希轮数。将哈希轮数增加到默认值以上将导致性能损失,该损失与增加的数量相关:
-
创建使用
caching_sha2_password
插件的帐户不会影响创建该帐户的客户端会话,但服务器必须执行哈希轮数以完成操作。 -
对于使用该帐户的客户端连接,服务器必须执行哈希轮数并将结果保存在缓存中。结果是第一次客户端连接的登录时间较长,但不是后续连接。该行为在每次服务器重新启动后都会发生。
-
-
caching_sha2_password 自动生成 RSA 密钥
Command-Line Format --caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]
System Variable caching_sha2_password_auto_generate_rsa_keys
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
服务器使用该变量来确定是否在数据目录中自动生成 RSA 私钥/公钥文件对,如果它们尚不存在。
在启动时,服务器自动在数据目录中生成 RSA 私钥/公钥文件对,如果所有以下条件都为真:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系统变量启用;没有指定 RSA 选项;RSA 文件缺失于数据目录中。这些密钥文件使得使用 RSA 进行安全密码交换在未加密连接中对于使用sha256_password
或caching_sha2_password
插件认证的账户;见 第 8.4.1.3 节,“SHA-256 可插拔认证”,和 第 8.4.1.2 节,“Caching SHA-2 可插拔认证”。有关 RSA 文件自动生成的更多信息,包括文件名和特征,请参阅 第 8.3.3.1 节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”
auto_generate_certs
系统变量与之相关,但控制 SSL 证书和密钥文件的自动生成,以便使用 SSL 进行安全连接。 -
caching_sha2_password_private_key_path
Command-Line Format --caching-sha2-password-private-key-path=file_name
System Variable caching_sha2_password_private_key_path
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value private_key.pem
该变量指定了
caching_sha2_password
认证插件的 RSA 私钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。Important因为该文件存储了私钥,因此其访问模式应该限制为只有 MySQL 服务器可以读取。
有关
caching_sha2_password
的信息,请参阅 第 8.4.1.2 节,“Caching SHA-2 可插拔认证”。 -
caching_sha2_password_public_key_path
Command-Line Format --caching-sha2-password-public-key-path=file_name
System Variable caching_sha2_password_public_key_path
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value public_key.pem
该变量指定了
caching_sha2_password
认证插件的 RSA 公钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。有关
caching_sha2_password
的信息,包括客户端请求 RSA 公钥的信息,请参阅 第 8.4.1.2 节,“Caching SHA-2 可插拔认证”。 -
System Variable character_set_client
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb4
客户端发送的语句的字符集。会话变量的值是根据客户端连接服务器时请求的字符集设置的。(许多客户端支持
--default-character-set
选项,以便明确指定该字符集。另见 第 12.4 节,“连接字符集和排序规则”。)全局变量的值用于设置会话值,在客户端请求的值未知或不可用时,或者服务器配置为忽略客户端请求时。这可能发生在客户端请求服务器不支持的字符集时,例如日本启用客户端请求sjis
时连接到不支持sjis
的服务器。有一些字符集不能用作客户端字符集。尝试使用它们作为
character_set_client
值将产生错误。见 不可用的客户端字符集。 -
System Variable character_set_connection
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type String Default Value utf8mb4
用于没有字符集引入符的文字和数字到字符串转换的字符集。关于引入符的信息,请参见 第 12.3.8 节,“字符集引入符”。
-
System Variable character_set_database
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type String Default Value utf8mb4
Footnote 该选项是动态的,但只能由服务器设置。您不应该手动设置该变量。 默认数据库使用的字符集。服务器在默认数据库更改时设置该变量。如果没有默认数据库,该变量的值与
character_set_server
相同。设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”。
全局
character_set_database
和collation_database
系统变量已弃用;预计它们将在未来版本的 MySQL 中被删除。将值分配给会话
character_set_database
和collation_database
系统变量已弃用,并且分配将产生警告。预计在未来版本的 MySQL 中,会话变量将变为只读的(并且分配将产生错误)。 -
Command-Line Format --character-set-filesystem=name
System Variable character_set_filesystem
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type String Default Value binary
文件系统字符集。此变量用于解释字符串文字,例如在
LOAD DATA
和SELECT ... INTO OUTFILE
语句和LOAD_FILE()
函数中。这些文件名从character_set_client
转换为character_set_filesystem
,然后尝试打开文件。默认值是binary
,这意味着不进行转换。对于允许多字节文件名的系统,可能需要不同的值。例如,如果系统使用 UTF-8 表示文件名,设置character_set_filesystem
为'utf8mb4'
。设置此系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见 第 7.1.9.1 节,“系统变量权限”。
-
System Variable character_set_results
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb4
用于将查询结果返回给客户端的字符集。这包括结果数据,如列值、结果元数据,如列名和错误消息。
-
Command-Line Format --character-set-server=name
System Variable character_set_server
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb4
服务器的默认字符集。见 第 12.15 节,“字符集配置”。如果您设置了这个变量,也应该设置
collation_server
以指定字符集的排序规则。 -
System Variable character_set_system
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb3
服务器用于存储标识符的字符集。该值始终是
utf8mb3
。 -
Command-Line Format --character-sets-dir=dir_name
System Variable character_sets_dir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名 字符集安装的目录。见 第 12.15 节,“字符集配置”。
-
Command-Line Format --check-proxy-users[={OFF|ON}]
System Variable check_proxy_users
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
一些身份验证插件为自己实现了代理用户映射(例如 PAM 和 Windows 身份验证插件)。其他身份验证插件不支持代理用户,默认情况下。这些插件中的一些可以请求 MySQL 服务器根据授予的代理权限映射代理用户:
mysql_native_password
、sha256_password
。如果启用了
check_proxy_users
系统变量,服务器将为任何请求代理用户映射的身份验证插件执行代理用户映射。然而,可能还需要启用插件特定的系统变量以利用服务器的代理用户映射支持:-
对于已弃用的
mysql_native_password
插件,启用mysql_native_password_proxy_users
。 -
对于
sha256_password
插件,启用sha256_password_proxy_users
。
有关用户代理的信息,请参阅第 8.2.19 节,“代理用户”。
-
-
System Variable collation_connection
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 连接字符集的排序规则。
collation_connection
对于文字字符串的比较非常重要。对于列值的字符串比较,collation_connection
不重要,因为列有其自己的排序规则,该排序规则具有更高的排序优先级(见第 12.8.4 节,“表达式中的排序强制”)。使用用户定义的排序规则名称为该变量将引发警告。
-
System Variable collation_database
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb4_0900_ai_ci
Footnote 该选项是动态的,但只能由服务器设置。您不应该手动设置该变量。 默认数据库使用的排序规则。服务器在默认数据库更改时设置该变量。如果没有默认数据库,该变量的值与
collation_server
相同。全局
character_set_database
和collation_database
系统变量已弃用;预计它们将在未来版本的 MySQL 中被删除。将值分配给会话
character_set_database
和collation_database
系统变量已弃用,并且分配将产生警告。预计这些会话变量将在未来版本的 MySQL 中变为只读(并且分配将产生错误),以便继续访问会话变量以确定默认数据库的字符集和排序规则。使用用户定义的排序规则名称为
collation_database
将引发警告。 -
Command-Line Format --collation-server=name
System Variable collation_server
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value utf8mb4_0900_ai_ci
服务器的默认排序规则。请参阅第 12.15 节,“字符集配置”。
将用户定义的排序规则名称设置为该变量将引发警告。
-
Command-Line Format --completion-type=#
System Variable completion_type
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value NO_CHAIN
Valid Values 不链
链
释放
0
1
2
事务完成类型。该变量可以采用以下表格所示的值。变量可以使用名称值或对应的整数值分配。
Value Description 不链
(或 0)COMMIT
和ROLLBACK
不受影响。这是默认值。链
(或 1)COMMIT
和ROLLBACK
等同于COMMIT AND CHAIN
和ROLLBACK AND CHAIN
,分别。(一个新的事务立即以相同的隔离级别启动。)释放
(或 2)COMMIT
和ROLLBACK
等同于COMMIT RELEASE
和ROLLBACK RELEASE
,分别。(服务器在终止事务后断开连接。)completion_type
影响以START TRANSACTION
或BEGIN
开始并以COMMIT
或ROLLBACK
结束的事务。它不适用于隐式提交,例如执行以下语句时:Section 15.3.3, “Statements That Cause an Implicit Commit”。它也不适用于XA COMMIT
,XA ROLLBACK
, 或者当autocommit=1
。 -
Command-Line Format --component-scheduler.enabled[=value]
System Variable component_scheduler.enabled
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value ON
当在启动时设置为
OFF
,后台线程不会启动。任务仍然可以被安排,但它们不会运行,直到component_scheduler
被启用。当在启动时设置为ON
,组件将完全运作。也可以动态地设置该值,以获得以下效果:
-
ON
启动后台线程,立即开始服务队列。 -
OFF
信号终止后台线程,该线程等待终止。后台线程在访问队列以检查要执行的任务之前,检查终止标志。
-
-
Command-Line Format --concurrent-insert[=value]
System Variable concurrent_insert
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Enumeration Default Value AUTO
Valid Values 从不
AUTO
总是
0
1
2
如果
AUTO
(默认),MySQL 允许INSERT
和SELECT
语句并发运行对于MyISAM
表没有空闲块的中间数据文件。该变量可以采用以下表格所示的值。变量可以使用名称值或对应的整数值分配。
Value Description 从不
(或 0)禁用并发插入 AUTO
(或 1)(默认) 启用并发插入对于 MyISAM
表没有空闲块总是
(或 2)启用并发插入对于所有 MyISAM
表,即使它们有空闲块。对于有空闲块的表,新的行将插入到表的末尾,如果它被另一个线程使用。否则,MySQL 获取普通写锁并将行插入到空闲块中。如果您使用 mysqld 选项
--skip-new
,concurrent_insert
将被设置为从不
。另请参阅 第 10.11.3 节,“并发插入”。
-
Command-Line Format --connect-timeout=#
System Variable connect_timeout
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 10
Minimum Value 2
Maximum Value 31536000
Unit 秒 mysqld 服务器等待连接包之前响应
Bad handshake
的秒数。默认值为 10 秒。增加
connect_timeout
值可能有助于客户端经常遇到错误,如Lost connection to MySQL server at '
。XXX
', system error:errno
-
Command-Line Format --connection-memory-chunk-size=#
System Variable connection_memory_chunk_size
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 8192
Minimum Value 0
Maximum Value 536870912
Unit 字节 设置全局内存使用情况计数器
Global_connection_memory
的块大小。状态变量仅在所有用户连接的总内存消耗改变超过该值时更新。禁用更新通过设置connection_memory_chunk_size = 0
。内存计算不包括系统用户(如 MySQL 根用户)使用的内存,也不包括
InnoDB
缓冲池使用的内存。您必须拥有
SYSTEM_VARIABLES_ADMIN
或SUPER
权限来设置该变量。 -
Command-Line Format --connection-memory-limit=#
System Variable connection_memory_limit
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 18446744073709551615
Minimum Value 2097152
Maximum Value 18446744073709551615
Unit 字节 设置单个用户连接可以使用的最大内存量。如果任何用户连接使用超过此金额,来自该连接的所有查询将被拒绝,包括当前正在运行的查询。
此变量设置的限制不适用于系统用户或 MySQL 根账户。InnoDB 缓冲池使用的内存也不包括在内。
您必须拥有
SYSTEM_VARIABLES_ADMIN
或SUPER
权限才能设置此变量。 -
如果服务器意外退出,是否写入核心文件。此变量由
--core-file
选项设置。 -
Command-Line Format --create-admin-listener-thread[={OFF|ON}]
System Variable create_admin_listener_thread
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否使用专用监听线程来处理管理网络接口的客户端连接(见 第 7.1.12.1 节,“连接接口”)。默认为
OFF
,即管理器线程也处理普通连接的管理接口。根据平台类型和工作负载等因素,您可能发现某个设置对性能的影响。
设置
create_admin_listener_thread
变量无效,如果admin_address
未指定,因为在那种情况下服务器不维护管理网络接口。 -
Command-Line Format --cte-max-recursion-depth=#
System Variable cte_max_recursion_depth
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1000
Minimum Value 0
Maximum Value 4294967295
公共表表达式(CTE)最大递归深度。服务器将终止执行任何递归超过此变量值的 CTE。有关更多信息,请参阅 限制公共表表达式递归。
-
Command-Line Format --datadir=dir_name
System Variable datadir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名称 MySQL 服务器数据目录的路径。相对路径将相对于当前目录解析。如果您期望服务器自动启动(即,在无法预先知道当前目录的上下文中),最好将
datadir
值指定为绝对路径。 -
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
该变量指示当前的调试设置。它仅适用于带调试支持的服务器。初始值来自服务器启动时的
--debug
选项的值。全局和会话值可以在运行时设置。设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”。
将值设置为以
+
或-
开头将导致值被添加到或从当前值中减去:mysql> SET debug = 'T'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | T | +---------+ mysql> SET debug = '+P'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | P:T | +---------+ mysql> SET debug = '-P'; mysql> SELECT @@debug; +---------+ | @@debug | +---------+ | T | +---------+
有关更多信息,请参阅 第 7.9.4 节,“DBUG 包”。
-
System Variable debug_sync
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 该变量是 Debug Sync 设施的用户界面。使用 Debug Sync 需要 MySQL 配置了
-DWITH_DEBUG=ON
CMake 选项(见 第 2.8.7 节,“MySQL 源代码配置选项”);否则,该系统变量不可用。全局变量值是只读的,指示该设施是否启用。默认情况下,Debug Sync 是禁用的,
debug_sync
的值是OFF
。如果服务器以--debug-sync-timeout=
启动,其中N
N
是大于 0 的超时值,Debug Sync 将启用,debug_sync
的值将是ON - current signal
,后跟信号名称。此外,N
将成为单个同步点的默认超时值。会话值可以由任何用户读取,具有与全局变量相同的值。会话值可以设置以控制同步点。
设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”。
有关 Debug Sync 设施的描述和如何使用同步点,请参阅 MySQL Internals: 测试同步。
-
Command-Line Format --default-authentication-plugin=plugin_name
Deprecated 是 System Variable default_authentication_plugin
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 枚举 Default Value caching_sha2_password
Valid Values mysql_native_password
sha256_password
caching_sha2_password
默认身份验证插件。这必须是一个使用内部凭证存储的插件,因此这些值是允许的:
-
mysql_native_password
(已弃用):使用 MySQL 本机密码;见 第 8.4.1.1 节,“本机可插拔身份验证”。 -
sha256_password
:使用 SHA-256 密码;见 第 8.4.1.3 节,“SHA-256 可插拔身份验证”。 -
caching_sha2_password
:使用 SHA-256 密码;见 第 8.4.1.2 节,“缓存 SHA-2 可插拔身份验证”。
关于哪些身份验证插件使用内部凭证存储的信息,请参阅第 8.2.15 节,“密码管理”。
default_authentication_plugin
与authentication_policy
系统变量一起使用,但优先级较低。详细信息,请参阅默认身份验证插件。default_authentication_plugin
已弃用,将在未来 MySQL 版本中删除。 -
-
System Variable default_collation_for_utf8mb4
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Valid Values utf8mb4_0900_ai_ci
utf8mb4_general_ci
Important系统变量
default_collation_for_utf8mb4
仅供 MySQL 复制使用。该变量由服务器设置为
utf8mb4
字符集的默认排序规则。变量的值从源服务器复制到副本服务器,以便副本服务器可以正确处理来自源服务器的数据,该源服务器具有不同的默认排序规则utf8mb4
。该变量主要用于支持从 MySQL 5.7 或更早版本的复制源服务器到 MySQL 8.0 或更高版本的副本服务器的复制,或者在 MySQL 5.7 主节点和一个或多个 MySQL 8.0 或更高版本的辅助节点的组复制中。utf8mb4
在 MySQL 5.7 中的默认排序规则是utf8mb4_general_ci
,但在后续版本系列中是utf8mb4_0900_ai_ci
。如果副本服务器没有收到变量的值,它假设源服务器来自早期版本,并将值设置为之前的默认排序规则utf8mb4_general_ci
。默认
utf8mb4
排序规则用于以下语句:-
CREATE TABLE
和ALTER TABLE
具有CHARACTER SET utf8mb4
子句,但没有COLLATION
子句,用于表字符集或列字符集。 -
CREATE DATABASE
和ALTER DATABASE
具有CHARACTER SET utf8mb4
子句,但没有COLLATION
子句。 -
任何包含字符串文字
_utf8mb4'
的语句,而没有一些文本
'COLLATE
子句。
另请参阅 第 12.9 节,“Unicode 支持”。
-
Command-Line Format --default-password-lifetime=#
System Variable default_password_lifetime
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 65535
Unit 天 该变量定义了全局自动密码过期策略。默认
default_password_lifetime
值为 0,表示禁用自动密码过期。如果default_password_lifetime
的值是一个正整数N
,则表示允许的密码生命周期;密码必须每N
天更改一次。全局密码过期策略可以根据需要被个体账户覆盖,使用
CREATE USER
和ALTER USER
语句的密码过期选项。见 第 8.2.15 节,“密码管理”。 -
Command-Line Format --default-storage-engine=name
System Variable default_storage_engine
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value InnoDB
表的默认存储引擎。见 第 18 章,《替代存储引擎》。该变量仅设置永久表的存储引擎。要设置临时表的存储引擎,请设置
default_tmp_storage_engine
系统变量。要查看可用的存储引擎和启用的引擎,请使用
SHOW ENGINES
语句或查询INFORMATION_SCHEMA
ENGINES
表。如果您在服务器启动时禁用默认存储引擎,则必须将永久表和临时表的默认引擎设置为不同的引擎,否则服务器将不启动。
-
Command-Line Format --default-table-encryption[={OFF|ON}]
System Variable default_table_encryption
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
定义了在创建模式和通用表空间时应用的默认加密设置,除非指定了
ENCRYPTION
子句。变量
default_table_encryption
仅适用于用户创建的模式和通用表空间,不适用于mysql
系统表空间。设置
default_table_encryption
的运行时值需要SYSTEM_VARIABLES_ADMIN
和TABLE_ENCRYPTION_ADMIN
权限,或者弃用的SUPER
权限。default_table_encryption
支持SET PERSIST
和SET PERSIST_ONLY
语法。见 第 7.1.9.3 节,“持久系统变量”。更多信息,请参阅 定义模式和通用表空间的加密默认值。
-
Command-Line Format --default-tmp-storage-engine=name
System Variable default_tmp_storage_engine
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 枚举 Default Value InnoDB
默认存储引擎为
TEMPORARY
表(使用CREATE TEMPORARY TABLE
创建)。要设置永久表的存储引擎,请设置default_storage_engine
系统变量。也可以查看该变量的讨论,以了解可能的值。如果您在服务器启动时禁用默认存储引擎,则必须将永久表和
TEMPORARY
表的默认引擎设置为不同的引擎,否则服务器将无法启动。 -
Command-Line Format --default-week-format=#
System Variable default_week_format
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 7
用于
WEEK()
函数的默认模式值。请参阅 第 14.7 节,“日期和时间函数”。 -
Command-Line Format --delay-key-write[={OFF|ON|ALL}]
System Variable delay_key_write
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value ON
Valid Values OFF
ON
ALL
该变量指定如何使用延迟键写入。它仅适用于
MyISAM
表。延迟键写入会导致键缓冲区在写入之间不被刷新。请参阅 第 18.2.1 节,“MyISAM 启动选项”。该变量可以具有以下值,以影响
DELAY_KEY_WRITE
表选项,该选项可以在CREATE TABLE
语句中使用。Option Description OFF
DELAY_KEY_WRITE
被忽略。ON
MySQL 将遵守在 CREATE TABLE
语句中指定的任何DELAY_KEY_WRITE
选项。这是默认值。ALL
所有新打开的表都将被视为启用了 DELAY_KEY_WRITE
选项。Note如果您将该变量设置为
ALL
,则不应在其他程序(例如另一个 MySQL 服务器或 myisamchk)中使用MyISAM
表时表处于使用中。这将导致索引损坏。如果
DELAY_KEY_WRITE
为启用状态,则键缓冲区不会在每次索引更新时刷新,而是在表关闭时刷新。这将大大加速键写入,但是如果您使用此功能,应该通过设置myisam_recover_options
系统变量(例如,myisam_recover_options='BACKUP,FORCE'
)来自动检查所有MyISAM
表。请参阅 第 7.1.8 节,“服务器系统变量” 和 第 18.2.1 节,“MyISAM 启动选项”。如果您使用 mysqld 启动时带有
--skip-new
,则delay_key_write
将被设置为OFF
。Warning如果您启用了外部锁定以
--external-locking
,则对于使用延迟键写入的表没有索引损坏保护。 -
Command-Line Format --延迟插入限制=#
Deprecated 是 System Variable 延迟插入限制
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 100
Minimum Value 1
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
该系统变量已弃用(因为
DELAYED
插入不受支持),您应该期望它在未来版本中被删除。 -
Command-Line Format --延迟插入超时=#
Deprecated 是 System Variable 延迟插入超时
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 300
Minimum Value 1
Maximum Value 31536000
Unit 秒 该系统变量已弃用(因为
DELAYED
插入不受支持),您应该期望它在未来版本中被删除。 -
Command-Line Format --延迟队列大小=#
Deprecated 是 System Variable 延迟队列大小
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1000
Minimum Value 1
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
该系统变量已弃用(因为
DELAYED
插入不受支持),您应该期望它在未来版本中被删除。 -
Command-Line Format --禁用存储引擎=engine[,engine]...
System Variable 禁用存储引擎
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value 空字符串
该变量指示哪些存储引擎不能用于创建表或表空间。例如,要防止创建新的
MyISAM
或FEDERATED
表,启动服务器时在服务器选项文件中添加以下行:[mysqld] disabled_storage_engines="MyISAM,FEDERATED"
默认情况下,
禁用存储引擎
为空(无引擎禁用),但可以设置为以逗号分隔的引擎列表(不区分大小写)。任何在值中命名的引擎都不能用于创建表或表空间,使用CREATE TABLE
或CREATE TABLESPACE
,也不能与ALTER TABLE ... ENGINE
或ALTER TABLESPACE ... ENGINE
一起使用以更改现有表或表空间的存储引擎。尝试这样做将导致ER_DISABLED_STORAGE_ENGINE
错误。禁用存储引擎
不限制其他 DDL 语句对现有表的操作,例如CREATE INDEX
、TRUNCATE TABLE
、ANALYZE TABLE
、DROP TABLE
或DROP TABLESPACE
。这允许现有表或表空间平滑过渡,以便使用禁用引擎的表或表空间可以迁移到允许的引擎,例如使用ALTER TABLE ... ENGINE
。permitted_engine
允许设置
default_storage_engine
或default_tmp_storage_engine
系统变量为禁用引擎。这可能会导致应用程序行为不稳定或失败,尽管这可能是在开发环境中识别使用禁用引擎的应用程序,以便修改它们。禁用存储引擎
在服务器启动时禁用,并且没有效果,如果服务器使用以下选项启动:--initialize
、--initialize-insecure
、--skip-grant-tables
。Note设置
禁用存储引擎
可能会导致 mysql_upgrade 问题。有关详细信息,请参阅 第 6.4.5 节,“mysql_upgrade — Deprecated; Performs No Tasks and Exits with Status 0”。 -
Command-Line Format --断开-过期-密码[={OFF|ON}]
System Variable 断开过期密码
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
该变量控制服务器如何处理具有过期密码的客户端:
有关客户端和服务器设置之间的交互的更多信息,请参阅 第 8.2.16 节,“服务器处理过期密码”。
-
Command-Line Format --除法-精度-增量=#
System Variable 除法精度增量
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 4
Minimum Value 0
Maximum Value 30
该变量指示了除法操作的结果的精度增加的位数,使用
/
运算符。默认值为4。最小值和最大值分别为0和30。以下示例说明了增加默认值的效果。mysql> SELECT 1/7; +--------+ | 1/7 | +--------+ | 0.1429 | +--------+ mysql> SET div_precision_increment = 12; mysql> SELECT 1/7; +----------------+ | 1/7 | +----------------+ | 0.142857142857 | +----------------+
-
dragnet.log_error_filter_rules
Command-Line Format --dragnet.log-error-filter-rules=value
System Variable dragnet.log_error_filter_rules
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.
该变量控制错误日志过滤器组件的过滤规则log_filter_dragnet。如果log_filter_dragnet未安装,
dragnet.log_error_filter_rules
不可用。如果log_filter_dragnet已安装但未启用,dragnet.log_error_filter_rules
的更改无效。默认值的效果类似于log_sink_internal过滤器的设置
log_error_verbosity=2
。dragnet.Status
状态变量可以用来确定dragnet.log_error_filter_rules
的最新分配结果。 -
enterprise_encryption.maximum_rsa_key_size
Command-Line Format --enterprise-encryption.maximum-rsa-key-size=#
System Variable enterprise_encryption.maximum_rsa_key_size
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 4096
Minimum Value 2048
Maximum Value 16384
该变量限制了MySQL Enterprise Encryption生成的RSA密钥的最大大小。该变量仅在MySQL Enterprise Encryption组件component_enterprise_encryption安装时可用。如果使用openssl_udf共享库提供MySQL Enterprise Encryption函数,该变量不可用。
最低设置为2048位,这是当前最佳实践中RSA密钥的最小长度。默认设置为4096位。最高设置为16384位。生成更长的密钥可能会消耗大量CPU资源,因此可以使用该设置来限制密钥长度,以平衡安全性和资源使用情况。请注意,openssl_udf共享库提供的函数允许从1024位开始的密钥长度,在升级到该组件后,密钥的最小长度将大于此。请参阅第8.6.2节,“配置MySQL Enterprise Encryption”以获取更多信息。
-
enterprise_encryption.rsa_support_legacy_padding
Command-Line Format --enterprise-encryption.rsa_support_legacy_padding[={OFF|ON}]
System Variable enterprise_encryption.rsa_support_legacy_padding
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量控制了MySQL Enterprise Encryption使用openssl_udf共享库函数生成的加密数据和签名是否可以被MySQL Enterprise Encryption组件component_enterprise_encryption的函数解密或验证。该变量仅在MySQL Enterprise Encryption组件安装时可用,并且在使用openssl_udf共享库提供MySQL Enterprise Encryption函数时不可用。
对于组件函数支持解密和验证由遗留的
openssl_udf
共享库函数生成的内容,您必须将系统变量 padding 设置为ON
。当ON
设置时,如果组件函数无法解密或验证内容时假设它具有 RSAES-OAEP 或 RSASSA-PSS 方案(如组件使用),它们将尝试假设它具有 RSAES-PKCS1-v1_5 或 RSASSA-PKCS1-v1_5 方案(如openssl_udf
共享库函数使用)。当OFF
设置时,如果组件函数无法解密或验证内容时使用其正常方案,它们将返回 null 输出。请参阅 第 8.6.2 节,“配置 MySQL 企业加密” 以获取更多信息。 -
Command-Line Format --end-markers-in-json[={OFF|ON}]
System Variable end_markers_in_json
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
是否在优化器 JSON 输出中添加结束标记。请参阅 MySQL Internals:end_markers_in_json 系统变量。
-
Command-Line Format --eq-range-index-dive-limit=#
System Variable eq_range_index_dive_limit
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 200
Minimum Value 0
Maximum Value 4294967295
该变量指示了在等式范围比较条件中,优化器应该从使用索引dives 切换到使用索引统计信息来估算合格行数的等式范围数。如果
eq_range_index_dive_limit
大于 0,则优化器将使用现有的索引统计信息,而不是索引dives,以估算合格行数。col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valN
在这两种情况下,表达式都包含
N
等式范围。优化器可以使用索引dives 或索引统计信息来估算行数。如果eq_range_index_dive_limit
大于 0,优化器将使用现有的索引统计信息,而不是索引dives,以估算合格行数。因此,要允许使用索引dives 对于最多N
等式范围,设置eq_range_index_dive_limit
为N
+ 1。要禁用索引统计信息的使用并总是使用索引dives,不管N
的值如何,设置eq_range_index_dive_limit
为 0。有关更多信息,请参阅 等式范围优化。
要更新表索引统计信息以获取最佳估算,请使用
ANALYZE TABLE
。 -
最后一条生成消息的语句的错误数。该变量是只读的。请参阅 第 15.7.7.18 节,“SHOW ERRORS 语句”。
-
Command-Line Format --event-scheduler[=value]
System Variable event_scheduler
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value ON
Valid Values ON
OFF
DISABLED
该变量启用或禁用事件计划程序,并启动或停止事件计划程序。可能的状态值为
ON
、OFF
和DISABLED
。将事件计划程序设置为OFF
不同于禁用事件计划程序,后者需要将状态设置为DISABLED
。该变量及其对事件计划程序操作的影响在 第 27.4.2 节,“事件计划程序配置” 中有更详细的讨论。 -
Command-Line Format --explain-format=format
System Variable explain_format
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value TRADITIONAL
Valid Values TRADITIONAL (默认)
JSON
TREE
该变量确定在不指定
FORMAT
选项时EXPLAIN
的默认输出格式。可能的值及其效果如下所示:-
TRADITIONAL
:使用 MySQL 的传统表格输出,如同FORMAT=TRADITIONAL
被指定为EXPLAIN
语句的一部分。这是变量的默认值。DEFAULT
也被支持作为TRADITIONAL
的同义词,并且具有相同的效果。NoteDEFAULT
不能用作EXPLAIN
语句的FORMAT
选项。 -
JSON
:使用 JSON 输出格式,如同FORMAT=JSON
被指定。 -
TREE
:使用树形输出格式,如同FORMAT=TREE
被指定。
该变量的设置也影响
EXPLAIN ANALYZE
。为此目的,DEFAULT
和TRADITIONAL
被解释为TREE
。如果explain_format
的值为JSON
,并且没有FORMAT
选项的EXPLAIN ANALYZE
语句被发出,则该语句将引发错误 (ER_NOT_SUPPORTED_YET
)。使用格式说明符与
EXPLAIN
或EXPLAIN ANALYZE
将覆盖explain_format
的设置。该变量对
EXPLAIN
输出没有影响,当该语句用于显示表列信息时。设置会话值
explain_format
不需要特殊权限;设置全局值需要SYSTEM_VARIABLES_ADMIN
(或已弃用的SUPER
权限)。见 第 7.1.9.1 节,“系统变量权限”。更多信息和示例,请参阅 获取执行计划信息。
-
-
Command-Line Format --explain-json-format-version=#
System Variable explain_json_format_version
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 1
Maximum Value 2
确定
EXPLAIN FORMAT=JSON
语句使用的 JSON 输出格式的版本。将此变量设置为1
将导致服务器使用 Version 1,该格式始终用于 MySQL 8.2 及更早版本的输出。该版本是 MySQL 8.3 的默认版本。将explain_json_format_version
设置为2
将导致使用 Version 2 格式;该 JSON 输出格式基于访问路径,旨在提供与未来版本的 MySQL 优化器的更好兼容性。有关使用示例,请参阅 获取执行计划信息。
-
explicit_defaults_for_timestamp
Command-Line Format --explicit-defaults-for-timestamp[={OFF|ON}]
Deprecated 是 System Variable explicit_defaults_for_timestamp
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
该系统变量确定服务器是否启用某些非标准行为,以处理
TIMESTAMP
列的默认值和NULL
值处理。默认情况下,explicit_defaults_for_timestamp
已启用,禁用了非标准行为。禁用explicit_defaults_for_timestamp
将导致警告。如果
explicit_defaults_for_timestamp
被禁用,服务器将启用非标准行为,并处理TIMESTAMP
列如下:-
TIMESTAMP
列未明确声明NULL
属性将自动声明为NOT NULL
属性。将该列分配NULL
值将设置该列为当前时间戳。例外:尝试将NULL
插入到声明为TIMESTAMP NOT NULL
的生成列中将被拒绝并出现错误。 -
表中的第一个
TIMESTAMP
列,如果未明确声明NULL
属性或明确的DEFAULT
或ON UPDATE
属性,将自动声明为DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
属性。 -
TIMESTAMP
列,除了第一个列外,如果未明确声明NULL
属性或明确的DEFAULT
属性,将自动声明为DEFAULT '0000-00-00 00:00:00'
(“零”时间戳)。对于插入的行,如果未指定该列的明确值,则该列将被分配'0000-00-00 00:00:00'
,且不出现警告。根据是否启用严格 SQL 模式或
NO_ZERO_DATE
SQL 模式,'0000-00-00 00:00:00'
的默认值可能无效。请注意,TRADITIONAL
SQL 模式包括严格模式和NO_ZERO_DATE
。请参阅 第 7.1.11 节,“服务器 SQL 模式”。
这些非标准行为将被弃用;预计它们将在未来 MySQL 版本中被删除。
如果
explicit_defaults_for_timestamp
已启用,服务器将禁用非标准行为,并处理TIMESTAMP
列如下:-
不能将
TIMESTAMP
列分配一个值NULL
以设置当前时间戳。要分配当前时间戳,请将列设置为CURRENT_TIMESTAMP
或同义词,如NOW()
。 -
TIMESTAMP
列未明确声明NOT NULL
属性将自动声明为NULL
属性,并允许NULL
值。将这样的列分配一个值NULL
将其设置为NULL
,而不是当前时间戳。 -
TIMESTAMP
列声明了NOT NULL
属性,不允许NULL
值。对于指定NULL
的插入操作,如果启用了严格 SQL 模式,将出现错误;否则,如果禁用了严格 SQL 模式,将插入'0000-00-00 00:00:00'
。在任何情况下,将列分配一个值NULL
都不会将其设置为当前时间戳。 -
TIMESTAMP
列明确声明了NOT NULL
属性且没有明确的DEFAULT
属性,则视为没有默认值。对于未指定明确值的插入行,结果取决于 SQL 模式。如果启用了严格 SQL 模式,将出现错误;否则,如果禁用了严格 SQL 模式,将声明隐式默认值'0000-00-00 00:00:00'
并出现警告。这类似于 MySQL 处理其他时间类型,如DATETIME
。 -
没有
TIMESTAMP
列自动声明DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
属性。这些属性必须明确指定。
如果在服务器启动时禁用了
explicit_defaults_for_timestamp
,则会在错误日志中出现警告:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
如警告所示,要禁用弃用的非标准行为,请在服务器启动时启用
explicit_defaults_for_timestamp
系统变量。Noteexplicit_defaults_for_timestamp
本身已经弃用,因为其唯一目的是控制弃用的TIMESTAMP
行为,这些行为将在未来 MySQL 版本中删除。当这些行为被删除时,预计explicit_defaults_for_timestamp
也将被删除。有关更多信息,请参阅 第 13.2.5 节,“自动初始化和更新 TIMESTAMP 和 DATETIME”。
-
-
System Variable external_user
Scope 会话 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 在身份验证过程中使用的外部用户名,如由插件设置的那样。在使用本机(内置)MySQL 身份验证或插件不设置该值时,该变量为
NULL
。请参阅 第 8.2.19 节,“代理用户”。 -
Command-Line Format --flush[={OFF|ON}]
System Variable 刷新
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果
ON
, 服务器将在每个 SQL 语句后将所有更改刷新到磁盘。如果 查看 Section B.3.3.3, “如果 MySQL Keeps Crashing”。如果使用 mysqld 启动选项--flush
,则该变量将设置为ON
。 -
Command-Line Format --flush-time=#
System Variable 刷新时间
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 31536000
Unit 秒 如果将其设置为非零值,则每
刷新时间
秒关闭所有表,以释放资源并将未刷新的数据同步到磁盘。此选项仅适用于资源有限的系统。 -
如果设置为 1(默认值),则检查外键约束。如果设置为 0,则忽略外键约束,除了少数例外情况。在重新创建已删除的表时,如果表定义不符合外键约束,会返回错误。同样,
ALTER TABLE
操作将返回错误,如果外键定义不正确。更多信息,请参阅 Section 15.1.20.5, “FOREIGN KEY 约束”。将该变量设置为 0 对
NDB
表的影响与对InnoDB
表的影响相同。通常情况下,在正常操作中启用外键检查,以强制 参照完整性。禁用外键检查可以在重新加载InnoDB
表时有用,以便在不同的顺序中重新加载表,而不受父/子关系的限制。请参阅 Section 15.1.20.5, “FOREIGN KEY 约束”。将
foreign_key_checks
设置为 0 也会影响数据定义语句:DROP SCHEMA
删除模式,即使该模式包含有外键引用的表,而DROP TABLE
删除表,即使该表有外键引用的其他表。Note将
foreign_key_checks
设置为 1 不会触发对现有表数据的扫描。因此,在foreign_key_checks = 0
期间添加到表中的行不会被验证一致性。删除由外键约束所需的索引是不允许的,即使使用
foreign_key_checks=0
。在删除索引之前,必须删除外键约束。 -
Command-Line Format --ft-boolean-syntax=name
System Variable ft_boolean_syntax
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value + -><()~*:""&|
布尔全文搜索使用的运算符列表,使用
IN BOOLEAN MODE
。见 第 14.9.2 节,“布尔全文搜索”。默认变量值为
'+ -><()~*:""&|'
。更改值的规则如下:-
运算符的功能由字符串中的位置确定。
-
替换值必须是 14 个字符。
-
每个字符必须是 ASCII 非字母数字字符。
-
第一个或第二个字符必须是一个空格。
-
除了短语引号运算符在位置 11 和 12 之外,不允许重复。这些两个字符不需要相同,但它们是唯一可以重复的。
-
位置 10、13 和 14(默认情况下分别设置为
:
、&
和|
)保留供将来扩展使用。
-
-
Command-Line Format --ft-max-word-len=#
System Variable ft_max_word_len
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 84
Minimum Value 10
Maximum Value 84
在
MyISAM
FULLTEXT
索引中包括的最大单词长度。NoteFULLTEXT
索引在MyISAM
表上必须在更改此变量后重新构建。使用REPAIR TABLE
。tbl_name
QUICK -
Command-Line Format --ft-min-word-len=#
System Variable ft_min_word_len
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 4
Minimum Value 1
Maximum Value 82
在
MyISAM
FULLTEXT
索引中包括的最小单词长度。NoteFULLTEXT
索引在MyISAM
表上必须在更改此变量后重新构建。使用REPAIR TABLE
。tbl_name
QUICK -
Command-Line Format --ft-query-expansion-limit=#
System Variable ft_query_expansion_limit
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 20
Minimum Value 0
Maximum Value 1000
使用
WITH QUERY EXPANSION
进行的全文搜索的顶级匹配数。 -
Command-Line Format --ft-stopword-file=file_name
System Variable ft_stopword_file
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 从中读取全文搜索的停止词列表的文件
MyISAM
表。服务器在数据目录中查找该文件,除非给定绝对路径名以指定不同的目录。该文件中的所有单词都将被使用;注释将被 忽略。默认情况下,使用内置的停止词列表(如storage/myisam/ft_static.c
文件中定义的)。将该变量设置为空字符串 (''
) 将禁用停止词过滤。另见 第 14.9.4 节,“全文停止词”。NoteFULLTEXT
索引在MyISAM
表上必须在更改此变量或停止词文件内容后重新构建。使用REPAIR TABLE
。tbl_name
QUICK -
Command-Line Format --general-log[={OFF|ON}]
System Variable general_log
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否启用通用查询日志。该值可以是 0(或
OFF
)以禁用日志或 1(或ON
)以启用日志。日志输出的目标由log_output
系统变量控制;如果该值为NONE
,即使日志启用,也不会写入日志条目。 -
Command-Line Format --general-log-file=file_name
System Variable general_log_file
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value host_name.log
通用查询日志文件的名称。默认值是
,但可以使用host_name
.log--general_log_file
选项更改初始值。 -
generated_random_password_length
Command-Line Format --generated-random-password-length=#
System Variable generated_random_password_length
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 20
Minimum Value 5
Maximum Value 255
生成的随机密码的最大字符数,用于
CREATE USER
、ALTER USER
和SET PASSWORD
语句。更多信息,请参见 随机密码生成。 -
global_connection_memory_limit
Command-Line Format --global-connection-memory-limit=#
System Variable global_connection_memory_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 18446744073709551615
Minimum Value 16777216
Maximum Value 18446744073709551615
Unit 字节 设置所有用户连接的总内存使用量;即
Global_connection_memory
不应超过该值。任何时候该值超过该限制,所有用户查询(包括当前正在运行的查询)都将被拒绝,错误代码为ER_GLOBAL_CONN_LIMIT
。系统用户(如 MySQL 根用户)的内存使用量也包括在该总量中,但不计入断开限制;这些用户永远不会因为内存使用量而断开连接。
内存由
InnoDB
缓冲池排除在总计之外。您必须拥有
SYSTEM_VARIABLES_ADMIN
或SUPER
权限来设置该变量。 -
global_connection_memory_tracking
Command-Line Format --global-connection-memory-tracking={TRUE|FALSE}
System Variable global_connection_memory_tracking
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value FALSE
确定服务器是否计算
Global_connection_memory
。该变量必须被明确启用;否则,内存计算将不执行,Global_connection_memory
将不被设置。您必须拥有
SYSTEM_VARIABLES_ADMIN
或SUPER
权限来设置该变量。 -
Command-Line Format --group-concat-max-len=#
System Variable group_concat_max_len
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 1024
Minimum Value 4
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
函数
GROUP_CONCAT()
的最大结果长度(以字节为单位)。默认值为 1024。 -
YES
如果 zlib 压缩库可供服务器使用,NO
如果不可用。如果不可用,则无法使用COMPRESS()
和UNCOMPRESS()
函数。 -
YES
如果 mysqld 支持动态加载插件,NO
如果不支持。如果值为NO
,则无法使用选项如--plugin-load
在服务器启动时加载插件,或者使用INSTALL PLUGIN
语句在运行时加载插件。 -
YES
如果服务器支持空间数据类型,NO
如果不支持。 -
该变量是
have_ssl
的同义词。have_openssl
已弃用,并将在未来 MySQL 版本中删除。有关 MySQL 连接接口的 TLS 属性,请参阅tls_channel_status
表。 -
YES
如果语句 profiling 能力存在,NO
如果不存在。如果存在,profiling
系统变量控制该能力是否启用或禁用。请参阅 第 15.7.7.33 节,“SHOW PROFILES 语句”。该变量已弃用,并且您应该期望它在未来MySQL版本中被删除。
-
have_query_cache
已弃用,始终具有NO
的值,并且您应该期望它在未来MySQL版本中被删除。 -
YES
如果RTREE
索引可用,NO
如果不可用。(这些用于MyISAM
表中的空间索引。) -
Deprecated 是 System Variable have_ssl
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Valid Values YES
(SSL 支持可用)DISABLED
(SSL 支持被编译到服务器中,但服务器未使用必要选项启用它)YES
如果 mysqld 支持 SSL 连接,DISABLED
如果服务器被编译以支持 SSL,但未使用适当的连接加密选项启动。有关更多信息,请参阅 第 2.8.6 节,“配置 SSL 库支持”。have_ssl
已弃用,并且您应该期望它在未来 MySQL 版本中被删除。有关 MySQL 连接接口的 TLS 属性的信息,请参阅tls_channel_status
表格。 -
System Variable have_statement_timeout
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 是否启用语句执行超时功能(请参阅 语句执行时间优化器提示)。该值可以是
NO
如果该功能使用的后台线程无法初始化。 -
YES
如果符号链接支持启用,NO
如果不可用。这在 Unix 上是必需的,以支持DATA DIRECTORY
和INDEX DIRECTORY
表选项。如果服务器使用--skip-symbolic-links
选项启动,该值为DISABLED
。该变量在 Windows 上没有意义。
Note符号链接支持,连同控制它的
--symbolic-links
选项,已弃用;您应该期望它们在未来 MySQL 版本中被删除。此外,该选项默认情况下是禁用的。相关的have_symlink
系统变量也已弃用,您应该期望它在未来 MySQL 版本中被删除。 -
histogram_generation_max_mem_size
Command-Line Format --histogram-generation-max-mem-size=#
System Variable histogram_generation_max_mem_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 20000000
Minimum Value 1000000
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
Unit 字节 生成histogram统计信息的最大内存量。见第10.9.6节,“优化器统计信息”,和第15.7.3.1节,“ANALYZE TABLE语句”。
设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见第7.1.9.1节,“系统变量权限”。
-
Command-Line Format --主机缓存大小=#
System Variable 主机缓存大小
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value -1
(表示自动调整大小;不要分配这个文字值)Minimum Value 0
Maximum Value 65536
MySQL服务器维护一个内存中的主机缓存,该缓存包含客户端主机名和IP地址信息,并用于避免域名系统(DNS)查找;见第7.1.12.3节,“DNS查找和主机缓存”。
该
主机缓存大小
变量控制主机缓存的大小,以及性能架构主机缓存
表的大小,该表公开了缓存内容。设置主机缓存大小
具有以下效果:-
将大小设置为0将禁用主机缓存。在缓存禁用时,服务器每次客户端连接时都会执行DNS查找。
-
在运行时更改大小将导致隐式主机缓存刷新操作,该操作清除主机缓存,截断
主机缓存
表,并解除任何阻塞的主机。
默认值是自动调整到128,加上
max_connections
的值,直到500,加上max_connections
值每增加20的值,限制在2000。 -
-
服务器在启动时将该变量设置为服务器主机名。最大长度为255个字符。
-
该变量是
last_insert_id
变量的同义词。它存在于与其他数据库系统的兼容性中。你可以使用SELECT @@identity
读取其值,并使用SET identity
设置它。 -
Command-Line Format --初始化连接=name
System Variable 初始化连接
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 一个字符串,服务器将其执行以连接每个客户端。该字符串由一个或多个SQL语句组成,使用分号字符分隔。
对于拥有
CONNECTION_ADMIN
特权(或已弃用的SUPER
特权)的用户,init_connect
的内容不会被执行。这是为了防止init_connect
的错误值阻止所有客户端连接。例如,值可能包含语法错误的语句,从而导致客户端连接失败。不执行init_connect
对于拥有CONNECTION_ADMIN
或SUPER
特权的用户,使他们能够打开连接并修复init_connect
值。init_connect
执行将被跳过,对于任何客户端用户的过期密码。这是因为这样的用户无法执行任意语句,因此init_connect
执行失败,导致客户端无法连接。跳过init_connect
执行使用户能够连接并更改密码。服务器将丢弃
init_connect
值中的语句产生的任何结果集。 -
information_schema_stats_expiry
Command-Line Format --information-schema-stats-expiry=#
System Variable information_schema_stats_expiry
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 86400
Minimum Value 0
Maximum Value 31536000
Unit 秒 一些INFORMATION_SCHEMA表包含提供表统计信息的列:
STATISTICS.CARDINALITY TABLES.AUTO_INCREMENT TABLES.AVG_ROW_LENGTH TABLES.CHECKSUM TABLES.CHECK_TIME TABLES.CREATE_TIME TABLES.DATA_FREE TABLES.DATA_LENGTH TABLES.INDEX_LENGTH TABLES.MAX_DATA_LENGTH TABLES.TABLE_ROWS TABLES.UPDATE_TIME
这些列表示动态表元数据,即随着表内容的变化而变化的信息。
默认情况下,MySQL 从mysql.index_stats和mysql.table_stats词典表中检索缓存的值,以便查询这些列,这比从存储引擎中检索统计信息更高效。如果缓存的统计信息不可用或已过期,MySQL 将从存储引擎中检索最新的统计信息,并将其缓存在mysql.index_stats和mysql.table_stats词典表中。随后的查询将检索缓存的统计信息,直到缓存的统计信息过期。服务器重启或第一次打开mysql.index_stats和mysql.table_stats表不会自动更新缓存的统计信息。
会话变量
information_schema_stats_expiry
定义了缓存统计信息的过期时间。默认为 86400 秒(24 小时),但时间期限可以延长到一年。要在任何时候更新缓存值,对于给定的表,使用
ANALYZE TABLE
。要始终从存储引擎中检索最新的统计信息,并绕过缓存的值,设置
information_schema_stats_expiry
为0
。查询统计信息列不会在以下情况下存储或更新mysql.index_stats和mysql.table_stats词典表中的统计信息:
-
当缓存的统计信息未过期时。
-
当
information_schema_stats_expiry
设置为 0 时。 -
当服务器处于
read_only
、super_read_only
、transaction_read_only
或innodb_read_only
模式时。 -
当查询也检索性能模式数据时。
统计缓存可能在多语句事务中更新,在事务提交前不知道。这可能会导致缓存包含不对应于已知提交状态的信息。这可以在
autocommit=0
或START TRANSACTION
后发生。information_schema_stats_expiry
是一个会话变量,每个客户会话可以定义其自己的过期值。从存储引擎检索并缓存的统计信息对其他会话可用。有关信息,请参阅 第 10.2.3 节,“优化 INFORMATION_SCHEMA 查询”。
-
-
Command-Line Format --init-file=file_name
System Variable init_file
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 如果指定了该变量,将在启动过程中读取和执行包含 SQL 语句的文件。该文件支持以下构造:
-
delimiter ;
,将语句分隔符设置为;
字符。 -
delimiter $$
,将语句分隔符设置为$$
字符序列。 -
同一行上的多个语句,以当前分隔符分隔。
-
多行语句。
-
# 字符到行尾的注释。
-
-- 序列到行尾的注释。
-
从
/*
序列到下一个*/
序列的 C 样式注释,包括跨多行。 -
用单引号 (
'
) 或双引号 ("
) 字符括起来的多行字符串文字。
如果服务器以
--initialize
或--initialize-insecure
选项启动,则它处于引导模式,某些功能不可用,限制了文件中的语句。这些语句包括与账户管理相关的语句(例如CREATE USER
或GRANT
),复制和全局事务标识符。请参阅 第 19.1.3 节,“使用全局事务标识符的复制”。在服务器启动期间创建的线程用于执行任务,如创建数据字典、运行升级过程和创建系统表。为了确保稳定和可预测的环境,这些线程使用服务器内置的默认值执行,例如
sql_mode
、character_set_server
、collation_server
、completion_type
、explicit_defaults_for_timestamp
和default_table_encryption
。这些线程还用于执行启动服务器时指定的文件中的语句,以
init_file
,因此这些语句将使用服务器内置的默认值执行。 -
-
innodb_
xxx
InnoDB
系统变量列在 第 17.14 节,“InnoDB 启动选项和系统变量”。这些变量控制了InnoDB
表的许多方面,包括存储、内存使用和 I/O 模式,现在InnoDB
是默认的存储引擎。 -
用于以下
INSERT
或ALTER TABLE
语句插入自动递增值的值。这主要用于二进制日志。 -
Command-Line Format --interactive-timeout=#
System Variable interactive_timeout
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 28800
Minimum Value 1
Maximum Value 31536000
Unit 秒 服务器在关闭交互式连接之前等待活动的秒数。交互式客户端定义为使用
CLIENT_INTERACTIVE
选项的客户端mysql_real_connect()
。见 alsowait_timeout
。 -
internal_tmp_mem_storage_engine
Command-Line Format --internal-tmp-mem-storage-engine=#
System Variable internal_tmp_mem_storage_engine
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 枚举 Default Value TempTable
Valid Values MEMORY
TempTable
内存内部临时表的存储引擎(见 第 10.4.4 节,“MySQL 中的内部临时表使用”)。允许的值是
TempTable
(默认)和MEMORY
。优化器使用
internal_tmp_mem_storage_engine
定义的存储引擎来处理内存内部临时表。配置会话设置
internal_tmp_mem_storage_engine
需要SESSION_VARIABLES_ADMIN
或SYSTEM_VARIABLES_ADMIN
权限。 -
Command-Line Format --join-buffer-size=#
System Variable join_buffer_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 262144
Minimum Value 128
Maximum Value (Windows) 4294967168
Maximum Value (Other, 64-bit platforms) 18446744073709551488
Maximum Value (Other, 32-bit platforms) 4294967168
Unit 字节 Block Size 128
最小的缓冲区大小,用于普通索引扫描、范围索引扫描和不使用索引的连接,从而执行完整的表扫描。此变量还控制哈希连接所使用的内存量。通常,获取快速连接的最好方法是添加索引。增加
join_buffer_size
的值,以获取更快的完整连接,当添加索引不可行时。默认值为 256KB。允许的最大设置为 4GB−1。对于 64 位平台(除 64 位 Windows 外,large 值将被截断为 4GB−1 并发出警告)。块大小为 128,MySQL 服务器在存储系统变量之前将值舍入到下一个块大小的倍数。
除非使用 Block Nested-Loop 或 Batched Key Access 算法,否则将缓冲区设置得太大不会带来任何好处,所有连接至少分配最小大小,因此请小心地将该变量设置为大值全局。更好的是将全局设置保持小,并在需要大连接的会话中更改会话设置,或者使用
SET_VAR
优化器提示(见 第 10.9.3 节,“优化器提示”)。内存分配时间可能会导致性能下降,如果全局大小大于大多数查询所需的大小。当使用 Block Nested-Loop 时,较大的连接缓冲区可能会有益,直到所有必要的列从第一表的所有行中存储在连接缓冲区中。这取决于查询;最佳大小可能小于持有第一表的所有行。
当使用 Batched Key Access 时,
join_buffer_size
的值定义了每个请求中的批处理键的大小。缓冲区越大,对右侧表的顺序访问就越多,从而可以显著改善性能。有关连接缓冲区的更多信息,请参阅 第 10.2.1.7 节,“Nested-Loop Join 算法”。有关 Batched Key Access 的信息,请参阅 第 10.2.1.12 节,“Block Nested-Loop 和 Batched Key Access 连接”。有关哈希连接的信息,请参阅 第 10.2.1.4 节,“哈希连接优化”。
-
Command-Line Format --keep-files-on-create[={OFF|ON}]
System Variable keep_files_on_create
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
如果创建了一个没有
DATA DIRECTORY
选项的MyISAM
表,在数据库目录中创建了.MYD
文件。默认情况下,如果MyISAM
在这种情况下找到现有的.MYD
文件,它将覆盖该文件。同样,对于创建了没有INDEX DIRECTORY
选项的表的.MYI
文件也是如此。要抑制这种行为,请将keep_files_on_create
变量设置为ON
(1),在这种情况下,MyISAM
不会覆盖现有的文件,而是返回错误。默认值为OFF
(0)。如果创建了一个带有
DATA DIRECTORY
或INDEX DIRECTORY
选项的MyISAM
表,并且找到现有的.MYD
或.MYI
文件,MyISAM 总是返回错误。它不会覆盖指定目录中的文件。 -
Command-Line Format --key-buffer-size=#
System Variable key_buffer_size
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 8388608
Minimum Value 0
Maximum Value (64-bit platforms) OS_PER_PROCESS_LIMIT
Maximum Value (32-bit platforms) 4294967295
Unit 字节 MyISAM 表的索引块被缓存并由所有线程共享。
key_buffer_size
是用于索引块的缓冲区的大小。键缓存也称为键高速缓存。最小允许设置为 0,但您不能在运行时将
key_buffer_size
设置为 0。将key_buffer_size
设置为 0 只允许在启动时,在这种情况下键缓存不会被初始化。在运行时从 0 更改key_buffer_size
设置为非零值将初始化键缓存。key_buffer_size
只能以 4096 字节的增量或倍数增加或减少。以非符合值增加或减少设置将产生警告并将设置截断为符合值。在 32 位平台上,
key_buffer_size
的最大允许设置为 4GB-1。在 64 位平台上,允许更大的值。实际的最大大小可能小于可用物理 RAM 和操作系统或硬件平台施加的每进程 RAM 限制。该变量的值表示请求的内存量。内部,服务器将尽可能分配到该金额的内存,但实际分配可能小于该金额。您可以增加该值以获得更好的索引处理所有读取和多写入;在主要运行 MySQL 的系统上,使用
MyISAM
存储引擎,机器总内存的 25% 是该变量的可接受值。然而,您应该注意,如果您使该值太大(例如,超过机器总内存的 50%),您的系统可能会开始分页并变得非常慢。这是因为 MySQL 依赖操作系统执行文件系统缓存以读取数据,因此您必须留出一些空间用于文件系统缓存。您还应该考虑其他存储引擎的内存要求,除了MyISAM
。对于写入多行时的更多速度,请使用
LOCK TABLES
。请参阅 第 10.2.5.1 节,“优化 INSERT 语句”。您可以通过发出
SHOW STATUS
语句并检查Key_read_requests
、Key_reads
、Key_write_requests
和Key_writes
状态变量来检查键缓存的性能。(请参阅 第 15.7.7 节,“SHOW 语句”。)Key_reads/Key_read_requests
比率通常小于 0.01。Key_writes/Key_write_requests
比率通常接近 1,如果您主要使用更新和删除,或者如果您使用DELAY_KEY_WRITE
表选项,可能会小得多。可以使用
key_buffer_size
和Key_blocks_unused
状态变量以及缓冲区块大小(可从key_cache_block_size
系统变量中获得)来确定键缓存的使用率。1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
这个值是一个近似值,因为键缓冲区中的一些空间被内部分配用于管理结构。影响这些结构的开销的因素包括块大小和指针大小。随着块大小的增加,键缓冲区中损失的百分比趋于减少。较大的块将导致较少的读操作(因为每次读取更多的键),但相应地增加了读取不相关键的次数(如果块中的所有键都不是查询相关的)。
可以创建多个
MyISAM
键缓存。每个缓存的大小限制为 4GB,不是作为一个组。见 第 10.10.2 节,“MyISAM 键缓存”。 -
Command-Line Format --key-cache-age-threshold=#
System Variable key_cache_age_threshold
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 300
Minimum Value 100
Maximum Value (64-bit platforms) 18446744073709551516
Maximum Value (32-bit platforms) 4294967196
Block Size 100
该值控制键缓存的热子列表中的缓冲区被降级到温子列表中的速度。较低的值将导致降级发生得更快。最小值为 100。默认值为 300。见 第 10.10.2 节,“MyISAM 键缓存”。
-
Command-Line Format --key-cache-block-size=#
System Variable key_cache_block_size
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1024
Minimum Value 512
Maximum Value 16384
Unit 字节 Block Size 512
键缓存中的块大小,以字节为单位。默认值为 1024。见 第 10.10.2 节,“MyISAM 键缓存”。
-
Command-Line Format --key-cache-division-limit=#
System Variable key_cache_division_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 100
Minimum Value 1
Maximum Value 100
键缓存缓冲区列表中的热子列表和温子列表之间的分界点。该值是温子列表的百分比。允许的值范围从 1 到 100。默认值为 100。见 第 10.10.2 节,“MyISAM 键缓存”。
-
System Variable large_files_support
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 是否 mysqld 编译了大文件支持选项。
-
Command-Line Format --large-pages[={OFF|ON}]
System Variable large_pages
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Platform Specific Linux Type 布尔值 Default Value OFF
是否启用大页面支持(通过
--large-pages
选项)。见 第 10.12.3.3 节,“启用大页面支持”。 -
System Variable 大页面大小
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 65535
Unit 字节 如果启用了大页面支持,这将显示内存页面的大小。大页面仅在 Linux 上受支持;在其他平台上,该变量的值始终为 0。见 第 10.12.3.3 节,“启用大页面支持”。
-
从
LAST_INSERT_ID()
返回的值。这将存储在二进制日志中,当您在更新表时使用LAST_INSERT_ID()
。设置该变量不会更新mysql_insert_id()
C API 函数返回的值。 -
Command-Line Format --lc-messages=name
System Variable lc_messages
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value en_US
错误消息的语言。默认值为
en_US
。服务器将参数转换为语言名称,并将其与lc_messages_dir
的值组合,以生成错误消息文件的位置。见 第 12.12 节,“设置错误消息语言”。 -
Command-Line Format --lc-messages-dir=dir_name
System Variable lc_messages_dir
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 目录名称 错误消息文件的目录。服务器将该值与
lc_messages
的值组合,以生成错误消息文件的位置。见 第 12.12 节,“设置错误消息语言”。 -
Command-Line Format --lc-time-names=value
System Variable lc_time_names
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 该变量指定了控制日期和月份名称和缩写的语言。这将影响
DATE_FORMAT()
、DAYNAME()
和MONTHNAME()
函数的输出。语言名称是 POSIX 风格的值,例如'ja_JP'
或'pt_BR'
。默认值为'en_US'
,无论系统的语言设置如何。详见 第 12.16 节,“MySQL 服务器语言支持”。 -
服务器的许可证类型。
-
Command-Line Format --local-infile[={OFF|ON}]
System Variable local_infile
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔 Default Value 关闭
此变量控制服务器端
LOCAL
能力对于LOAD DATA
语句。根据local_infile
设置,服务器拒绝或允许客户端加载本地数据,客户端启用了LOCAL
。要明确地使服务器拒绝或允许
LOAD DATA LOCAL
语句(无论客户端程序和库如何在构建时或运行时配置),请使用 mysqld 启动时禁用或启用local_infile
。local_infile
也可以在运行时设置。有关更多信息,请参阅 第 8.1.6 节,“LOAD DATA LOCAL 安全注意事项”。 -
Command-Line Format --lock-wait-timeout=#
System Variable lock_wait_timeout
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 31536000
Minimum Value 1
Maximum Value 31536000
Unit 秒 该变量指定元数据锁的超时时间(以秒为单位)。允许的值范围从 1 到 31536000(1 年)。默认值为 31536000。
该超时时间适用于所有使用元数据锁的语句。这些包括 DML 和 DDL 操作、视图、存储过程和存储函数,以及
LOCK TABLES
、FLUSH TABLES WITH READ LOCK
和HANDLER
语句。该超时时间不适用于系统表的隐式访问,例如 grant 表由
GRANT
或REVOKE
语句修改的表,或者日志表语句。该超时时间适用于直接访问系统表,例如使用SELECT
或UPDATE
。超时值单独应用于每个元数据锁尝试。给定语句可能需要多个锁,因此语句可能会阻塞长于
lock_wait_timeout
值之前报告超时错误。当锁超时时,ER_LOCK_WAIT_TIMEOUT
将被报告。lock_wait_timeout
也定义了LOCK INSTANCE FOR BACKUP
语句等待锁定的时间。 -
System Variable locked_in_memory
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔 Default Value OFF
-
Command-Line Format --log-error[=file_name]
System Variable log_error
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 默认错误日志目标。如果目标是控制台,值为
stderr
。否则,目标是一个文件,log_error
值是文件名。见 第 7.4.2 节,“错误日志”。 -
Command-Line Format --log-error-services=value
System Variable log_error_services
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value log_filter_internal; log_sink_internal
错误日志组件的启用列表。该变量可以包含 0、1 或多个元素的列表。在后一种情况下,元素可以用分号或逗号分隔,后跟空格。给定的设置不能同时使用分号和逗号分隔符。组件的顺序很重要,因为服务器按照列表顺序执行组件。
任何在
log_error_services
中命名的可加载(不是内置的)组件将隐式加载,如果它尚未加载。有关更多信息,请参阅 第 7.4.2.1 节,“错误日志配置”。 -
Command-Line Format --log-error-suppression-list=value
System Variable log_error_suppression_list
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value 空字符串
该
log_error_suppression_list
系统变量适用于错误日志中的事件,并指定了哪些事件在优先级为WARNING
或INFORMATION
时应被抑制。例如,如果某种类型的警告被认为是错误日志中的“噪音”,因为它经常发生但不感兴趣,可以将其抑制。该变量影响log_filter_internal
错误日志过滤器组件的过滤操作,该组件默认启用(见 第 7.5.3 节,“错误日志组件”)。如果log_filter_internal
被禁用,log_error_suppression_list
无效。该
log_error_suppression_list
值可以为空字符串以不进行抑制,或者是一个或多个以逗号分隔的值,指示要抑制的错误代码。错误代码可以以符号或数字形式指定。数字代码可以带或不带MY-
前缀。数字部分的前导零不重要。允许的代码格式示例:ER_SERVER_SHUTDOWN_COMPLETE MY-000031 000031 MY-31 31
符号值优于数字值,以提高可读性和可移植性。有关允许的错误符号和数字的信息,请参阅 MySQL 8.3 错误信息参考。
该
log_error_suppression_list
的效果与log_error_verbosity
的效果结合。有关更多信息,请参阅 第 7.4.2.5 节,“基于优先级的错误日志过滤(log_filter_internal)”。 -
Command-Line Format --log-error-verbosity=#
System Variable log_error_verbosity
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 1
Maximum Value 3
该
log_error_verbosity
系统变量指定了错误日志的详细程度。此变量影响了log_filter_internal
错误日志过滤器组件的过滤,后者默认启用(见 第 7.5.3 节,“错误日志组件”)。如果log_filter_internal
被禁用,log_error_verbosity
无效。意图写入错误日志的事件具有
ERROR
、WARNING
或INFORMATION
优先级。log_error_verbosity
根据允许写入日志的优先级控制详细程度,如下表所示。log_error_verbosity Value Permitted Message Priorities 1 ERROR
2 ERROR
,WARNING
3 ERROR
,WARNING
,INFORMATION
还有一个
SYSTEM
优先级。系统消息关于非错误情况将被打印到错误日志,不管log_error_verbosity
的值如何。这些消息包括启动和关闭消息,以及一些重要的设置更改。log_error_verbosity
的效果与log_error_suppression_list
的效果结合。有关更多信息,请参阅 第 7.4.2.5 节,“基于优先级的错误日志过滤(log_filter_internal)”。 -
Command-Line Format --log-output=name
System Variable log_output
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Set Default Value FILE
Valid Values TABLE
FILE
NONE
通用查询日志和慢查询日志的目标或目标之一。该值是一个或多个以逗号分隔的单词,选择自
TABLE
、FILE
和NONE
。TABLE
选择记录到general_log
和slow_log
表中的mysql
系统模式。FILE
选择记录到日志文件。NONE
禁用记录。如果NONE
存在于值中,它将优先于其他单词。该变量选择日志输出目标,但不启用日志输出。要启用日志输出,需要启用
general_log
和slow_query_log
系统变量。对于FILE
记录,general_log_file
和slow_query_log_file
系统变量确定日志文件位置。有关更多信息,请参阅 第 7.4.1 节,“选择通用查询日志和慢查询日志输出目标”。 -
Command-Line Format --log-queries-not-using-indexes[={OFF|ON}]
System Variable log_queries_not_using_indexes
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Boolean Default Value OFF
如果启用该变量并启用慢查询日志,预计检索所有行的查询将被记录。参见第 7.4.5 节,“慢查询日志”。该选项并不一定意味着没有使用索引。例如,使用完整索引扫描的查询使用索引,但将被记录,因为索引不会限制行数。
-
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
选项的值。请参阅该选项的描述以获取更多信息。系统变量也可以在运行时设置以更改密码屏蔽行为。 -
Command-Line Format --log-slow-admin-statements[={OFF|ON}]
System Variable log_slow_admin_statements
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
包括慢管理语句在慢查询日志中写入的语句。管理语句包括
ALTER TABLE
、ANALYZE TABLE
、CHECK TABLE
、CREATE INDEX
、DROP INDEX
、OPTIMIZE TABLE
和REPAIR TABLE
。 -
Command-Line Format --log-slow-extra[={OFF|ON}]
System Variable log_slow_extra
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果慢查询日志启用并且输出目标包括
FILE
,服务器将写入额外字段到日志文件行,以提供关于慢语句的信息。请参阅 第 7.4.5 节,“慢查询日志”。TABLE
输出不受影响。 -
Command-Line Format --log-timestamps=#
System Variable log_timestamps
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value UTC
Valid Values UTC
SYSTEM
该变量控制错误日志、一般查询日志和慢查询日志中时间戳的时区。它不影响一般查询日志和慢查询日志表 (
mysql.general_log
、mysql.slow_log
) 中的时区。从这些表中检索的行可以使用CONVERT_TZ()
或通过设置会话time_zone
系统变量将其转换为任何所需的时区。允许的
log_timestamps
值是UTC
(默认)和SYSTEM
(本地系统时区)。时间戳使用 ISO 8601 / RFC 3339 格式:
加上尾值YYYY-MM-DD
Thh:mm:ss.uuuuuu
Z
,表示 Zulu 时间(UTC),或±hh:mm
(从 UTC 的偏移量)。 -
Command-Line Format --log-throttle-queries-not-using-indexes=#
System Variable 日志限制未使用索引的查询
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
如果
日志未使用索引的查询
启用,则日志限制未使用索引的查询
变量限制每分钟可以写入慢查询日志的查询数量。值为 0(默认)表示 “无限制”。更多信息,请参阅 第 7.4.5 节,“慢查询日志”。 -
Command-Line Format --long-query-time=#
System Variable 长查询时间
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 数字 Default Value 10
Minimum Value 0
Maximum Value 31536000
Unit 秒 如果查询时间超过这个值,服务器将增加
慢查询
状态变量。如果慢查询日志启用,查询将被记录到慢查询日志文件中。这个值是以实际时间测量的,而不是 CPU 时间,因此在轻负载系统上的查询可能在重负载系统上超过阈值。长查询时间
的最小和默认值分别为 0 和 10。最大值为 31536000,即 365 天的秒数。该值可以以微秒为单位指定。请参阅 第 7.4.5 节,“慢查询日志”。这个变量的较小值将导致更多的语句被认为是长时间运行的,结果是慢查询日志需要更多的空间。对于非常小的值(小于 1 秒),日志可能在短时间内增长很大。在生产环境中,仅在短时间内使用非常小的值,或者在测试环境中使用。
mysqldump 执行全表扫描,这意味着其查询经常超过
长查询时间
设置,该设置对常规查询很有用。如果您想排除大多数或所有由 mysqldump 生成的查询从慢查询日志中排除,可以使用--mysqld-long-query-time
将会话值更改为较高的值。 -
Command-Line Format --low-priority-updates[={OFF|ON}]
System Variable 低优先级更新
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果设置为
1
,所有INSERT
、UPDATE
、DELETE
和LOCK TABLE WRITE
语句将等待,直到没有挂起的SELECT
或LOCK TABLE READ
在受影响的表上。同样的效果可以使用{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...
来降低单个查询的优先级。该变量仅影响使用表级锁定的存储引擎(例如MyISAM
、MEMORY
和MERGE
)。见 第 10.11.2 节,“表锁定问题”。设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见 第 7.1.9.1 节,“系统变量权限”。
-
System Variable lower_case_file_system
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 该变量描述了数据目录所在文件系统的文件名大小写敏感性。
OFF
表示文件名是大小写敏感的,ON
表示它们不是大小写敏感的。该变量是只读的,因为它反映了文件系统的属性,并且设置它不会对文件系统产生影响。 -
Command-Line Format --lower-case-table-names[=#]
System Variable lower_case_table_names
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value (macOS) 2
Default Value (Unix) 0
Default Value (Windows) 1
Minimum Value 0
Maximum Value 2
如果设置为 0,表名将按指定的方式存储,并且比较是大小写敏感的。如果设置为 1,表名将在磁盘上以小写形式存储,并且比较不是大小写敏感的。如果设置为 2,表名将按指定的方式存储,但比较将是小写的。该选项也适用于数据库名称和表别名。更多详细信息,请参见 第 11.2.3 节,“标识符大小写敏感性”。
该变量的默认值是平台相关的(见
lower_case_file_system
)。在 Linux 和其他 Unix-like 系统上,默认值是0
。在 Windows 上,默认值是1
。在 macOS 上,默认值是2
。在 Linux(和其他 Unix-like 系统)上,将值设置为2
不是支持的;服务器将强制值为0
。你不应该 不 将
lower_case_table_names
设置为 0,如果你是在一个文件系统上运行 MySQL,该文件系统对数据目录是大小写不敏感的(例如在 Windows 或 macOS 上)。这是一个不支持的组合,可能会导致在执行INSERT INTO ... SELECT ... FROM
操作时,使用错误的tbl_name
tbl_name
大小写,导致索引损坏。如果你尝试在 case-insensitive 文件系统上启动服务器时,将打印错误消息并退出服务器。
该变量的设置会影响复制过滤规则的大小写敏感性。更多信息,请参见 第 19.2.5 节,“服务器如何评估复制过滤规则”。
禁止使用与服务器初始化时不同的
lower_case_table_names
设置启动服务器。该限制是必要的,因为数据字典表字段使用的排序规则是在服务器初始化时确定的,而重新启动服务器时使用不同的设置将引入不一致。因此,需要在初始化服务器之前配置
lower_case_table_names
到所需的设置。在大多数情况下,这需要在 MySQL 选项文件中配置lower_case_table_names
,然后启动 MySQL 服务器。对于 Debian 和 Ubuntu 的 APT 安装,但是服务器已经为您初始化了,没有机会在选项文件中提前配置该设置。在这种情况下,您必须使用debconf-set-selection
实用程序在安装 MySQL 之前启用lower_case_table_names
。为此,请在安装 MySQL 之前运行以下命令:$> sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled"
-
Command-Line Format --mandatory-roles=value
System Variable mandatory_roles
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value 空字符串
服务器应将其视为强制角色的角色。在实际上,这些角色将自动授予每个用户,尽管设置
mandatory_roles
不实际更改任何用户帐户,并且授予的角色不在mysql.role_edges
系统表中可见。变量值是一个逗号分隔的角色名称列表。示例:
SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';
设置
mandatory_roles
的运行时值需要ROLE_ADMIN
权限,另外还需要SYSTEM_VARIABLES_ADMIN
权限(或已弃用的SUPER
权限)通常需要设置全局系统变量的运行时值。角色名称由用户部分和主机部分组成,以
格式表示。主机部分,如果省略,默认为user_name
@host_name
%
。有关更多信息,请参阅 第 8.2.5 节,“指定角色名称”。mandatory_roles
值是一个字符串,因此用户名和主机名,如果引号,必须以允许在引号字符串中的方式编写。在
mandatory_roles
值中命名的角色不能使用REVOKE
或DROP ROLE
或DROP USER
撤销。要防止会话默认成为系统会话,不能在
mandatory_roles
系统变量值中列出具有SYSTEM_USER
权限的角色:-
如果
mandatory_roles
在启动时分配了具有SYSTEM_USER
权限的角色,服务器将写入错误日志并退出。 -
如果
mandatory_roles
在运行时分配了具有SYSTEM_USER
权限的角色,将发生错误,并且mandatory_roles
值保持不变。
强制角色,如明确授予的角色,不会生效,直到激活(见激活角色)。在登录时,如果启用了
activate_all_roles_on_login
系统变量,则所有授予的角色将被激活;否则,对于设置为默认角色的角色或在运行时使用SET ROLE
激活角色。如果在分配时不存在的角色,但稍后创建了这些角色,可能需要特殊处理以被视为强制角色。有关详细信息,请参阅定义强制角色。
SHOW GRANTS
根据第15.7.7.22节“SHOW GRANTS语句”中的规则显示强制角色。 -
-
Command-Line Format --max-allowed-packet=#
System Variable max_allowed_packet
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 67108864
Minimum Value 1024
Maximum Value 1073741824
Unit 字节 Block Size 1024
一个数据包或任何生成/中间字符串的最大大小,或者使用
mysql_stmt_send_long_data()
C API函数发送的任何参数。默认值为64MB。数据包消息缓冲区初始化为
net_buffer_length
字节,但可以增长到max_allowed_packet
字节当需要时。这默认值很小,以捕捉大(可能不正确的)数据包。如果您使用大
BLOB
列或长字符串,您必须增加这个值。它应该与您想要使用的最大BLOB
一样大。协议限制为max_allowed_packet
是1GB。该值应该是1024的倍数;非倍数将被舍入到最近的倍数。当您通过更改
max_allowed_packet
变量的值来更改消息缓冲区大小时,您也应该在客户端更改缓冲区大小,如果您的客户端程序允许这样做。客户端库中的默认max_allowed_packet
值为1GB,但个别客户端程序可能会覆盖该值。例如:mysql和mysqldump的默认值分别为16MB和24MB。它们也允许您通过设置max_allowed_packet
在命令行或选项文件中更改客户端值。该会话变量的值是只读的。客户端可以接收到多达会话值那么多字节。但是,服务器不会将超过当前全局
max_allowed_packet
值的字节发送到客户端。(全局值可能小于会话值,如果全局值在客户端连接后更改。) -
Command-Line Format --max-connect-errors=#
System Variable max_connect_errors
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 100
Minimum Value 1
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
在
max_connect_errors
连续连接请求从主机被中断没有成功连接后,服务器将该主机阻止进一步的连接。如果在之前的连接被中断后,主机在少于max_connect_errors
尝试后成功建立连接,主机的错误计数将被清零为零。要解除阻止的主机,请刷新主机缓存;见刷新主机缓存。 -
Command-Line Format --max-connections=#
System Variable max_connections
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 151
Minimum Value 1
Maximum Value 100000
允许的最大同时客户端连接数。最大有效值是
open_files_limit
- 810
的较小值和实际设置的max_connections
值。更多信息,请见第 7.1.12.1 节,“连接接口”。
-
Command-Line Format --max-delayed-threads=#
Deprecated 是 System Variable max_delayed_threads
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 20
Minimum Value 0
Maximum Value 16384
该系统变量已弃用(因为
DELAYED
插入不受支持)并将在未来 MySQL 版本中删除。设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --max-digest-length=#
System Variable max_digest_length
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 1024
Minimum Value 0
Maximum Value 1048576
Unit 字节 每个会话为计算 normalized 语句摘要保留的最大内存字节数。一旦达到该数量,截断将发生:不会收集或计算语句的摘要值。语句只有在截断点后不同,才会被认为相同。
Warning将
max_digest_length
设置为零将禁用摘要生产,也禁用服务器功能,如 MySQL Enterprise 防火墙。降低
max_digest_length
值将减少内存使用,但会使更多语句的摘要值变得不可区分。如果增加该值,将允许更长的语句被区分,但会增加内存使用,特别是在大量同时会话的工作负载中(服务器为每个会话分配max_digest_length
字节)。解析器使用该系统变量作为 normalized 语句摘要的最大长度限制。性能模式,如果它跟踪语句摘要,将复制摘要值,使用
performance_schema_max_digest_length
系统变量作为存储摘要的最大长度限制。因此,如果performance_schema_max_digest_length
小于max_digest_length
,性能模式中存储的摘要值将相对于原始摘要值被截断。有关语句摘要的更多信息,请参阅 第 29.10 节,“性能模式语句摘要和采样”。
-
Command-Line Format --max-error-count=#
System Variable max_error_count
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 1024
Minimum Value 0
Maximum Value 65535
错误、警告和信息消息的最大数量,以便由
SHOW ERRORS
和SHOW WARNINGS
语句显示。这也是诊断区域中的条件区域数量,因此是可以由GET DIAGNOSTICS
检查的条件数量。设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --max-execution-time=#
System Variable max_execution_time
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
Unit 毫秒 选择语句的执行超时时间,以毫秒为单位。如果值为 0,则不启用超时。
max_execution_time
按照以下方式应用:-
全局
max_execution_time
值为新连接提供默认值。会话值适用于在会话中执行的选择语句,包括没有MAX_EXECUTION_TIME(
优化器提示或N
)N
为 0 的语句。 -
max_execution_time
适用于只读选择语句。不是只读的语句是那些作为副作用修改数据的存储过程。 -
max_execution_time
在存储程序中的选择语句中被忽略。
-
-
Command-Line Format --max-heap-table-size=#
System Variable max_heap_table_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 16777216
Minimum Value 16384
Maximum Value (64-bit platforms) 18446744073709550592
Maximum Value (32-bit platforms) 4294966272
Unit 字节 Block Size 1024
该变量设置用户创建的
MEMORY
表格的最大大小。该变量的值用于计算MEMORY
表格的MAX_ROWS
值。设置该变量不会影响任何现有的
MEMORY
表格,除非该表格被重新创建,例如使用CREATE TABLE
或修改使用ALTER TABLE
或TRUNCATE TABLE
。服务器重新启动也将现有的MEMORY
表格的最大大小设置为全局max_heap_table_size
值。该变量还与
tmp_table_size
一起限制内部内存表的大小。见 第 10.4.4 节,“MySQL 中的内部临时表使用”。max_heap_table_size
不被复制。见 第 19.5.1.21 节,“复制和 MEMORY 表”,和 第 19.5.1.39 节,“复制和变量”,以获取更多信息。 -
Deprecated 是 System Variable max_insert_delayed_threads
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 20
Maximum Value 16384
该变量是
max_delayed_threads
的同义词。像max_delayed_threads
一样,它已经弃用(因为不支持 DELAYED 插入)并将在未来 MySQL 版本中删除。设置该会话变量需要足够的权限来设置受限的会话变量。见 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --max-join-size=#
System Variable max_join_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 18446744073709551615
Minimum Value 1
Maximum Value 18446744073709551615
该变量表示基本表格的最大行访问数。如果服务器估算表明需要从基本表格中读取的行数超过
max_join_size
,则该语句将被拒绝并显示错误。如果将该变量设置为非
DEFAULT
值,将重置sql_big_selects
的值为0
。如果您再次设置sql_big_selects
的值,则max_join_size
变量将被忽略。 -
Command-Line Format --max-length-for-sort-data=#
Deprecated 是 System Variable max_length_for_sort_data
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 4096
Minimum Value 4
Maximum Value 8388608
Unit 字节 该变量已经弃用,在 MySQL 8.3 中无效。
-
Command-Line Format --max-points-in-geometry=#
System Variable 最大几何点数
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 65536
Minimum Value 3
Maximum Value 1048576
ST_Buffer_Strategy() 函数的 points_per_circle 参数的最大值。
-
Command-Line Format --max-prepared-stmt-count=#
System Variable 最大预备语句计数
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 16382
Minimum Value 0
Maximum Value 4194304
该变量限制服务器中的总预备语句数。在可能遭受基于服务器内存溢出的拒绝服务攻击的环境中,可以使用该变量。如果将值设置得低于当前预备语句数,现有的语句不受影响,可以继续使用,但不能准备新的语句,直到当前数降低到限制以下。将值设置为 0 将禁用预备语句。
-
Command-Line Format --max-seeks-for-key=#
System Variable 最大键查找次数
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value (Windows) 4294967295
Default Value (Other, 64-bit platforms) 18446744073709551615
Default Value (Other, 32-bit platforms) 4294967295
Minimum Value 1
Maximum Value (Windows) 4294967295
Maximum Value (Other, 64-bit platforms) 18446744073709551615
Maximum Value (Other, 32-bit platforms) 4294967295
限制基于键的行查找时的最大查找次数。MySQL 优化器假设在扫描索引时最多需要该数量的键查找,ardless of the actual cardinality of the index(见 第 15.7.7.23 节,“SHOW INDEX 语句”)。通过将其设置为较低的值(例如 100),可以强制 MySQL 优先使用索引而不是表扫描。
-
Command-Line Format --max-sort-length=#
System Variable 最大排序长度
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 1024
Minimum Value 4
Maximum Value 8388608
Unit 字节 用于排序字符串值的字节数,该值使用 PAD SPACE 排序规则。服务器仅使用该值的前
最大排序长度
字节,并忽略其余部分。因此,对于 GROUP BY、ORDER BY 和 DISTINCT 操作,这些值在比较时被视为相等。(这与 MySQL 旧版本的行为不同,在旧版本中,该设置应用于所有比较值。)增加
最大排序长度
的值可能需要增加sort_buffer_size
的值。详见 第 10.2.1.16 节,“ORDER BY 优化” -
Command-Line Format --max-sp-recursion-depth[=#]
System Variable 最大存储过程递归深度
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 255
存储过程的递归调用次数。该选项的默认值为 0,完全禁用存储过程中的递归。如果增加该选项的值,可能需要在服务器启动时增加线程栈大小,方法是增加
thread_stack
的值。存储过程递归增加了线程栈空间的需求。如果您增加
max_sp_recursion_depth
的值,可能需要在服务器启动时增加线程栈大小,方法是增加thread_stack
的值。 -
Command-Line Format --max-user-connections=#
System Variable max_user_connections
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
允许的最大同时连接数,该值为 0(默认)表示“无限制”。
该变量有一个全局值,可以在服务器启动或运行时设置。它也具有一个只读的会话值,该值表示当前会话的有效同时连接限制。
-
如果用户账户具有非零的
MAX_USER_CONNECTIONS
资源限制,则会话max_user_connections
值将设置为该限制。 -
否则,会话
max_user_connections
值将设置为全局值。
账户资源限制可以使用
CREATE USER
或ALTER USER
语句指定。请参阅 第 8.2.21 节,“设置账户资源限制”。 -
-
Command-Line Format --max-write-lock-count=#
System Variable max_write_lock_count
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value (Windows) 4294967295
Default Value (Other, 64-bit platforms) 18446744073709551615
Default Value (Other, 32-bit platforms) 4294967295
Minimum Value 1
Maximum Value (Windows) 4294967295
Maximum Value (Other, 64-bit platforms) 18446744073709551615
Maximum Value (Other, 32-bit platforms) 4294967295
在达到这个写锁计数后,允许一些挂起的读锁请求被处理。在写锁请求中,写锁请求的优先级高于读锁请求。然而,如果
max_write_lock_count
设置为一个很小的值(例如 10),读锁请求可能会被优先处理,以便在 10 个写锁请求之后处理。 -
Command-Line Format --mecab-rc-file=file_name
System Variable mecab_rc_file
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 该
mecab_rc_file
选项用于设置 MeCab 全文解析器。该
mecab_rc_file
选项定义了 MeCab 配置文件mecabrc
的路径,该文件是 MeCab 的配置文件。该选项是只读的,仅可以在启动时设置。mecabrc
配置文件是 MeCab 初始化所需的。关于 MeCab 全文解析器的信息,请参阅 第 14.9.9 节,“MeCab 全文解析器插件”。
关于可以在 MeCab
mecabrc
配置文件中指定的选项,请参阅 MeCab 文档 在 Google 开发者 站点。 -
Command-Line Format --min-examined-row-limit=#
System Variable min_examined_row_limit
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
查询少于该数字的行数将不会记录到慢查询日志中。
设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --myisam-data-pointer-size=#
System Variable myisam_data_pointer_size
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 6
Minimum Value 2
Maximum Value 7
Unit 字节 默认指针大小(以字节为单位),用于
CREATE TABLE
语句中没有指定MAX_ROWS
选项时的MyISAM
表。该变量不能小于 2 或大于 7。默认值为 6。请参阅 B.3.2.10 节,“表已满”。 -
Command-Line Format --myisam-max-sort-file-size=#
System Variable myisam_max_sort_file_size
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value (Windows) 2146435072
Default Value (Other, 64-bit platforms) 9223372036853727232
Default Value (Other, 32-bit platforms) 2147483648
Minimum Value 0
Maximum Value (Windows) 2146435072
Maximum Value (Other, 64-bit platforms) 9223372036853727232
Maximum Value (Other, 32-bit platforms) 2147483648
Unit 字节 MySQL 在重新创建
MyISAM
索引时(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
中)允许使用的最大临时文件大小。如果文件大小超过该值,索引将使用键缓存创建,这将更慢。该值以字节为单位。如果
MyISAM
索引文件超过该大小且磁盘空间可用,增加该值可能会提高性能。该空间必须在包含原始索引文件的文件系统中可用。 -
Command-Line Format --myisam-mmap-size=#
System Variable myisam_mmap_size
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value (64-bit platforms) 18446744073709551615
Default Value (32-bit platforms) 4294967295
Minimum Value 7
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
Unit 字节 使用的最大内存量,以便在内存映射压缩后的
MyISAM
文件。如果使用了许多压缩的MyISAM表,则可以减少该值以减少内存交换问题的可能性。 -
Command-Line Format --myisam-recover-options[=list]
System Variable myisam_recover_options
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 枚举 Default Value OFF
Valid Values OFF
DEFAULT
BACKUP
FORCE
QUICK
设置mysqld的MyISAM存储引擎恢复模式。变量值是OFF、
DEFAULT
、BACKUP
、FORCE
或QUICK
的任何组合。如果指定多个值,请用逗号分隔。指定变量而不带值时,在服务器启动时相当于指定DEFAULT
,指定空字符串值时禁用恢复(与OFF
相同)。如果启用恢复,每次mysqld打开MyISAM表时,它都会检查表是否崩溃或未正确关闭。(最后一个选项仅在禁用外部锁定时有效。)如果是这种情况,mysqld将对表进行检查。如果表损坏,mysqld将尝试修复它。以下选项影响修复的方式。
Option Description OFF
不进行恢复。 DEFAULT
不备份、强制或快速检查的恢复。 BACKUP
如果数据文件在恢复期间被修改,保存 tbl_name
.MYD文件的备份为tbl_name-datetime
.BAK。FORCE
即使我们将从.MYD文件中删除多行,也强制恢复。 QUICK
如果没有删除块,不检查表中的行。 在服务器自动修复表之前,它将在错误日志中写入一条关于修复的笔记。如果您想在不需要用户干预的情况下从大多数问题中恢复,可以使用选项BACKUP,FORCE。这将强制修复表,即使删除了一些行,但它会将旧数据文件保存为备份,以便您以后检查发生了什么。
-
Command-Line Format --myisam-sort-buffer-size=#
System Variable myisam_sort_buffer_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8388608
Minimum Value 4096
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
Unit 字节 在使用REPAIR TABLE语句或使用
CREATE INDEX
或ALTER TABLE
创建索引时,分配的缓冲区大小,以便排序MyISAM索引。 -
Command-Line Format --myisam-stats-method=name
System Variable MyISAM 统计方法
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value nulls_unequal
Valid Values nulls_unequal
nulls_equal
nulls_ignored
服务器在收集 MyISAM 表索引值分布统计信息时如何处理 NULL 值。该变量有三个可能的值,
nulls_equal
、nulls_unequal
和nulls_ignored
。对于nulls_equal
,所有 NULL 索引值被认为是相等的,并形成一个大小等于 NULL 值数量的值组。对于nulls_unequal
,NULL 值被认为是不相等的,每个 NULL 形成一个大小为 1 的值组。对于nulls_ignored
,NULL 值被忽略。用于生成表统计信息的方法会影响优化器选择索引的方式,如 第 10.3.8 节,“InnoDB 和 MyISAM 索引统计信息收集” 中所述。
-
Command-Line Format --myisam-use-mmap[={OFF|ON}]
System Variable myisam_use_mmap
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
使用内存映射来读取和写入 MyISAM 表。
-
Command-Line Format --mysql-native-password-proxy-users[={OFF|ON}]
System Variable mysql_native_password_proxy_users
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量控制是否启用
mysql_native_password
内置身份验证插件(已弃用)对代理用户的支持。只有在check_proxy_users
系统变量和mysql_native_password
插件启用时才生效。有关用户代理的信息,请参阅 第 8.2.19 节,“代理用户”。 -
Command-Line Format --named-pipe[={OFF|ON}]
System Variable named_pipe
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Platform Specific Windows Type 布尔值 Default Value OFF
(仅 Windows) 指示服务器是否支持命名管道连接。
-
Command-Line Format --named-pipe-full-access-group=value
System Variable named_pipe_full_access_group
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Platform Specific Windows Type 字符串 Default Value 空字符串
Valid Values 空字符串
有效的 Windows 本地组名
*everyone*
(仅 Windows) 当
named_pipe
系统变量启用以支持命名管道连接时,服务器创建的命名管道的访问控制被设置为最小必要值,以便成功通信。一些 MySQL 客户端软件可以打开命名管道连接,而不需要任何额外配置;但是,其他客户端软件可能仍需要完全访问权限来打开命名管道连接。该变量设置了 Windows 本地组的名称,其成员被授予了足够的访问权限,以便使用命名管道客户端。默认值为空字符串,这意味着没有 Windows 用户被授予了对命名管道的完全访问权限。
可以创建一个新的 Windows 本地组名(例如,
mysql_access_client_users
),然后在绝对必要时使用该组名来替换默认值。在这种情况下,限制组成员资格尽可能少,删除组成员资格时客户端软件升级。非组成员尝试使用受影响的命名管道客户端连接 MySQL 将被拒绝访问,直到 Windows 管理员将用户添加到组中。新添加的用户必须注销并重新登录以加入组(Windows 所需)。将值设置为
'*everyone*'
提供了一种语言独立的方式来引用 Windows 中的 Everyone 组。Everyone 组默认情况下不安全。 -
Command-Line Format --net-buffer-length=#
System Variable net_buffer_length
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 16384
Minimum Value 1024
Maximum Value 1048576
Unit 字节 Block Size 1024
每个客户端线程都与连接缓冲区和结果缓冲区相关。两者都从
net_buffer_length
开始,但可以根据需要动态扩展到max_allowed_packet
字节。结果缓冲区在每个 SQL 语句后缩小到net_buffer_length
。通常不应该更改此变量,但如果您有非常少的内存,可以将其设置为客户端发送的语句的预期长度。如果语句超过此长度,连接缓冲区将自动扩展。
net_buffer_length
的最大值为 1MB。该会话变量的值是只读的。
-
Command-Line Format --net-read-timeout=#
System Variable net_read_timeout
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 30
Minimum Value 1
Maximum Value 31536000
Unit 秒 等待来自连接的更多数据的秒数,然后中止读取。当服务器从客户端读取时,
net_read_timeout
是控制中止的超时值。当服务器写入客户端时,net_write_timeout
是控制中止的超时值。另见replica_net_timeout
。 -
Command-Line Format --net-retry-count=#
System Variable net_retry_count
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 1
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
如果在通信端口上读取或写入被中断,重试这么多次,然后放弃。在 FreeBSD 上,该值应该设置得非常高,因为内部中断被发送到所有线程。
-
Command-Line Format --net-write-timeout=#
System Variable net_write_timeout
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 60
Minimum Value 1
Maximum Value 31536000
Unit 秒 等待块写入连接的秒数,然后abort写入。见
net_read_timeout
。 -
Command-Line Format --new[={OFF|ON}]
Deprecated 是 System Variable new
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Disabled by skip-new
Type 布尔值 Default Value OFF
该变量在 MySQL 4.0 中用于打开一些 4.1 行为,现在保留了向后兼容性。其值始终为
OFF
。该变量自 MySQL 8.2.0 起弃用,并将在未来版本中删除。
在 NDB Cluster 中,将该变量设置为
ON
可以使用其他分区类型,而不是KEY
或LINEAR KEY
与NDB
表。该实验功能不支持生产环境,现在弃用,将在未来版本中删除。有关更多信息,请参阅 用户定义的分区和 NDB 存储引擎 (NDB Cluster)。 -
Command-Line Format --ngram-token-size=#
System Variable ngram_token_size
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 1
Maximum Value 10
定义 n-gram 全文解析器的 n-gram 令牌大小。该
ngram_token_size
选项只能在启动时修改。默认值为 2(bigram)。最大值为 10。有关如何配置该变量的更多信息,请参阅 第 14.9.8 节,“ngram 全文解析器”。
-
Command-Line Format --offline-mode[={OFF|ON}]
System Variable offline_mode
Scope Global Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
在离线模式下,MySQL 实例断开客户端用户的连接,除非他们具有相关权限,不允许他们启动新连接。被拒绝访问的客户端收到
ER_SERVER_OFFLINE_MODE
错误。要将服务器置于离线模式,请将
offline_mode
系统变量从OFF
更改为ON
。要恢复正常操作,请将offline_mode
从ON
更改为OFF
。要控制离线模式,管理员帐户必须具有SYSTEM_VARIABLES_ADMIN
权限和CONNECTION_ADMIN
权限(或弃用的SUPER
权限,该权限涵盖这两个权限)。CONNECTION_ADMIN
权限是必需的,以防止意外锁定。离线模式具有以下特征:
-
连接的客户端用户如果没有
CONNECTION_ADMIN
权限(或弃用的SUPER
权限),将在下一个请求时断开连接,并收到适当的错误。断开连接包括终止正在运行的语句和释放锁。这些客户端也不能启动新连接,并收到适当的错误。 -
连接的客户端用户拥有
CONNECTION_ADMIN
或SUPER
权限,不会断开连接,可以启动新的连接来管理服务器。 -
如果将服务器置于离线模式的用户不具有
SYSTEM_USER
权限,连接的客户端用户拥有SYSTEM_USER
权限也不会断开连接。然而,这些用户不能启动新的连接到服务器,除非他们也具有CONNECTION_ADMIN
或SUPER
权限。只有他们现有的连接不能被终止,因为SYSTEM_USER
权限是必要的,以杀死会话或执行语句的权限。 -
复制线程被允许继续将数据应用于服务器。
-
-
Command-Line Format --old[={OFF|ON}]
Deprecated 是 System Variable old
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
old
是一个兼容变量。它默认情况下是禁用的,但可以在启动时启用,以恢复服务器到旧版本的行为。当
old
启用时,它将索引提示的默认范围更改为 MySQL 5.1.17 之前的版本中使用的范围。也就是说,索引提示没有FOR
子句仅适用于行检索,而不适用于ORDER BY
或GROUP BY
子句的解析。(见 第 10.9.4 节,“索引提示”。)请注意,在复制设置中启用它。使用基于语句的二进制日志记录时,源和副本之间的不同模式可能会导致复制错误。该变量从 MySQL 8.2.0 起弃用,并将在未来版本中删除。
-
Command-Line Format --old-alter-table[={OFF|ON}]
System Variable old_alter_table
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
当该变量启用时,服务器不会使用优化的
ALTER TABLE
操作方法。它将恢复到使用临时表,复制数据,然后将临时表重命名为原始表,如 MySQL 5.0 及更早版本所使用的那样。有关ALTER TABLE
操作的更多信息,请参见 第 15.1.9 节,“ALTER TABLE 语句”。ALTER TABLE ... DROP PARTITION
与old_alter_table=ON
重建分区表,并尝试将数据从删除的分区移动到另一个具有兼容的PARTITION ... VALUES
定义的分区中。无法移动到另一个分区的数据将被删除。在早期版本中,ALTER TABLE ... DROP PARTITION
与old_alter_table=ON
删除数据并删除分区。 -
Command-Line Format --open-files-limit=#
System Variable open_files_limit
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 5000,可能调整
Minimum Value 0
Maximum Value 平台相关
文件描述符的数量可供mysqld从操作系统中获取:
-
在启动时,mysqld 使用
setrlimit()
保留描述符,使用直接设置该变量或使用--open-files-limit
选项来 mysqld_safe。如果 mysqld 产生错误Too many open files
,请尝试增加open_files_limit
值。内部,该变量的最大值是无符号整数的最大值,但实际最大值取决于平台。 -
在运行时,
open_files_limit
的值表示操作系统实际允许 mysqld 使用的文件描述符数量,这可能与启动时请求的值不同。如果启动时请求的文件描述符数量无法分配,mysqld 将写入警告到错误日志。
有效的
open_files_limit
值基于系统启动时的值(如果有)和max_connections
和table_open_cache
的值,使用以下公式:-
10 + max_connections + (table_open_cache * 2)
。使用这些变量的默认值将得到 8161。仅在 Windows 上,添加 2048(C 运行时库文件描述符最大值)到该数字。使用默认值,这将得到 10209。
-
max_connections * 5
-
操作系统限制。
服务器尝试使用这些值的最大值,限制为无符号整数的最大值。如果无法获取那么多描述符,服务器将尝试获取系统允许的描述符数量。
在无法更改打开文件数量的系统上,该值为 0。
在 Unix 上,该值不能大于 ulimit -n 命令显示的值。在使用
systemd
的 Linux 系统上,该值不能大于LimitNOFILE
(如果LimitNOFILE
未设置,则为DefaultLimitNOFILE
);否则,在 Linux 上,该值不能超过 ulimit -n。 -
-
Command-Line Format --optimizer-prune-level=#
System Variable optimizer_prune_level
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesYes Type Integer Default Value 1
Minimum Value 0
Maximum Value 1
控制查询优化器在搜索空间中应用的启发式规则,以修剪不太有希望的部分计划。如果值为 0,则优化器将执行详尽搜索。如果值为 1,则优化器将根据中间计划检索的行数修剪计划。
-
Command-Line Format --optimizer-search-depth=#
System Variable optimizer_search_depth
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesYes Type Integer Default Value 62
Minimum Value 0
Maximum Value 62
查询优化器执行搜索的最大深度。查询结果中关系数量较大的值将生成更好的查询计划,但生成执行计划需要更长的时间。查询结果中关系数量较小的值将更快地返回执行计划,但生成的计划可能远远不是最优的。如果设置为 0,系统将自动选择一个合理的值。
-
Command-Line Format --优化器开关=value
System Variable 优化器开关
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 设置 Valid Values 批量键访问={on|off}
块嵌套循环={on|off}
条件扇出过滤={on|off}
派生条件推送={on|off}
派生合并={on|off}
重复weedout={on|off}
引擎条件推送={on|off}
首次匹配={on|off}
哈希连接={on|off}
索引条件推送={on|off}
索引合并={on|off}
索引合并交集={on|off}
索引合并排序并集={on|off}
索引合并并集={on|off}
松散扫描={on|off}
物化={on|off}
多范围读={on|off}
多范围读基于成本={on|off}
优先顺序索引={on|off}
半连接={on|off}
跳过扫描={on|off}
子查询物化基于成本={on|off}
子查询到派生={on|off}
使用索引扩展={on|off}
使用不可见索引={on|off}
Valid Values 批量键访问={on|off}
块嵌套循环={on|off}
条件扇出过滤={on|off}
派生合并={on|off}
重复weedout={on|off}
引擎条件推送={on|off}
首次匹配={on|off}
哈希连接={on|off}
索引条件推送={on|off}
索引合并={on|off}
索引合并交集={on|off}
索引合并排序并集={on|off}
索引合并并集={on|off}
松散扫描={on|off}
物化={on|off}
多范围读={on|off}
多范围读基于成本={on|off}
优先顺序索引={on|off}
半连接={on|off}
跳过扫描={on|off}
子查询物化基于成本={on|off}
子查询到派生={on|off}
使用索引扩展={on|off}
使用不可见索引={on|off}
Valid Values 批量键访问={on|off}
嵌套循环={on|off}
条件扇出过滤={on|off}
派生合并={on|off}
重复weedout={on|off}
引擎条件推送={on|off}
首次匹配={on|off}
散列连接={on|off}
索引条件推送={on|off}
索引合并={on|off}
索引合并交集={on|off}
索引合并排序并集={on|off}
索引合并并集={on|off}
松散扫描={on|off}
物化={on|off}
MRR={on|off}
MRR基于成本={on|off}
半连接={on|off}
跳过扫描={on|off}
子查询物化基于成本={on|off}
使用索引扩展={on|off}
使用不可见索引={on|off}
Valid Values 批量键访问={on|off}
嵌套循环={on|off}
条件扇出过滤={on|off}
派生合并={on|off}
重复weedout={on|off}
引擎条件推送={on|off}
首次匹配={on|off}
散列连接={on|off}
索引条件推送={on|off}
索引合并={on|off}
索引合并交集={on|off}
索引合并排序并集={on|off}
索引合并并集={on|off}
松散扫描={on|off}
物化={on|off}
MRR={on|off}
MRR基于成本={on|off}
半连接={on|off}
跳过扫描={on|off}
子查询物化基于成本={on|off}
使用索引扩展={on|off}
使用不可见索引={on|off}
该
optimizer_switch
系统变量启用对优化器行为的控制。该变量的值是一个标志集,每个标志的值为on
或off
,以指示相应的优化器行为是否启用或禁用。该变量具有全局和会话值,可以在运行时更改。全局默认值可以在服务器启动时设置。要查看当前的优化器标志,请选择变量值:
mysql> SELECT @@optimizer_switch\G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on, index_merge_sort_union=on,index_merge_intersection=on, engine_condition_pushdown=on,index_condition_pushdown=on, mrr=on,mrr_cost_based=on,block_nested_loop=on, batched_key_access=off,materialization=on,semijoin=on, loosescan=on,firstmatch=on,duplicateweedout=on, subquery_materialization_cost_based=on, use_index_extensions=on,condition_fanout_filter=on, derived_merge=on,use_invisible_indexes=off,skip_scan=on, hash_join=on,subquery_to_derived=off, prefer_ordering_index=on,hypergraph_optimizer=off, derived_condition_pushdown=on
有关该变量的语法和它控制的优化器行为的更多信息,请参见 第 10.9.2 节,“可切换优化”。
-
Command-Line Format --optimizer-trace=value
System Variable optimizer_trace
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type String 该变量控制优化器跟踪。有关详细信息,请参见 MySQL Internals: 优化器跟踪。
-
Command-Line Format --optimizer-trace-features=value
System Variable optimizer_trace_features
Scope Global, Session Dynamic Yes SET_VAR
Hint AppliesNo Type String 该变量启用或禁用所选的优化器跟踪功能。有关详细信息,请参阅MySQL Internals:优化器跟踪。
-
Command-Line Format --optimizer-trace-limit=#
System Variable optimizer_trace_limit
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 0
Maximum Value 2147483647
要显示的最大优化器跟踪数。有关详细信息,请参阅MySQL Internals:优化器跟踪。
-
Command-Line Format --optimizer-trace-max-mem-size=#
System Variable optimizer_trace_max_mem_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 1048576
Minimum Value 0
Maximum Value 4294967295
Unit 字节 存储的优化器跟踪的最大累积大小。有关详细信息,请参阅MySQL Internals:优化器跟踪。
-
Command-Line Format --optimizer-trace-offset=#
System Variable optimizer_trace_offset
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value -1
Minimum Value -2147483647
Maximum Value 2147483647
要显示的优化器跟踪的偏移量。有关详细信息,请参阅MySQL Internals:优化器跟踪。
-
performance_schema_
xxx
性能架构系统变量列在第29.15节,“性能架构系统变量”中。这些变量可用于配置性能架构操作。
-
Command-Line Format --parser-max-mem-size=#
System Variable parser_max_mem_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value (64-bit platforms) 18446744073709551615
Default Value (32-bit platforms) 4294967295
Minimum Value 10000000
Maximum Value (64-bit platforms) 18446744073709551615
Maximum Value (32-bit platforms) 4294967295
Unit 字节 解析器可用的最大内存量。默认值不限制内存量。可以减少该值以保护against内存溢出情况,caused by parsing长或复杂的SQL语句。
-
Command-Line Format --partial-revokes[={OFF|ON}]
System Variable partial_revokes
Scope Global Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
(如果部分撤销不存在)ON
(如果部分撤销存在)启用该变量使得部分撤销权限成为可能。具体来说,对于在全局级别具有权限的用户,
partial_revokes
使得可以撤销特定模式的权限,同时保留其他模式的权限。例如,具有全局UPDATE
权限的用户可以被限制在mysql
系统模式上行使该权限。(或者,从另一个角度来说,该用户被允许在所有模式上行使UPDATE
权限,除了mysql
模式。)在这个意义上,该用户的全局UPDATE
权限被部分撤销。一旦启用,
partial_revokes
不能被禁用,如果有任何账户具有权限限制。如果存在这样的账户,禁用partial_revokes
将失败:-
对于尝试在启动时禁用
partial_revokes
,服务器将记录错误消息并启用partial_revokes
。 -
对于尝试在运行时禁用
partial_revokes
,将发生错误,partial_revokes
的值将保持不变。
要禁用
partial_revokes
,首先需要修改每个具有部分撤销权限的账户,或者重新授予权限,或者删除账户。Note在权限分配中,启用
partial_revokes
使得MySQL将模式名称中的未转义的_
和%
SQL通配符字符解释为文字字符,就像它们已经被转义为\_
和\%
一样。因为这改变了MySQL对权限的解释,因此在安装中可能启用partial_revokes
时,可能需要避免在权限分配中使用未转义的通配符。此外,从MySQL 8.2.0开始,在授权中使用
_
和%
作为通配符已经弃用,并且您应该期望在未来版本的MySQL中删除对它们的支持。有关更多信息,包括删除部分撤销的说明,请参阅第 8.2.12 节,“使用部分撤销限制权限”。
-
-
Command-Line Format --password-history=#
System Variable password_history
Scope Global Dynamic Yes SET_VAR
Hint AppliesNo Type Integer Default Value 0
Minimum Value 0
Maximum Value 4294967295
该变量定义了全局策略,以控制基于最少密码更改次数的以前密码的重用。对于以前使用的账户密码,该变量指示了在可以重用密码之前需要进行的最少密码更改次数。如果值为 0(默认值),则没有基于密码更改次数的重用限制。
对该变量的更改立即应用于所有使用
PASSWORD HISTORY DEFAULT
选项定义的账户。全局密码更改次数密码重用策略可以使用
PASSWORD HISTORY
选项的CREATE USER
和ALTER USER
语句覆盖。请参阅第 8.2.15 节,“密码管理”。 -
Command-Line Format --password-require-current[={OFF|ON}]
System Variable 需要当前密码
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量定义了全局策略,以控制是否需要指定当前密码以更改账户密码。
对该变量的更改将立即应用于所有使用
PASSWORD REQUIRE CURRENT DEFAULT
选项定义的账户。可以使用
CREATE USER
和ALTER USER
语句的PASSWORD REQUIRE
选项覆盖个别账户的全局策略。见 第 8.2.15 节,“密码管理”。 -
Command-Line Format --password-reuse-interval=#
System Variable 密码重用间隔
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4294967295
Unit 天 该变量定义了全局策略,以控制基于时间过去的密码重用。对于以前使用的账户密码,该变量指定了必须经过的天数,才能重新使用该密码。如果值为 0(默认值),则没有基于时间过去的密码重用限制。
对该变量的更改将立即应用于所有使用
PASSWORD REUSE INTERVAL DEFAULT
选项定义的账户。可以使用
CREATE USER
和ALTER USER
语句的PASSWORD REUSE INTERVAL
选项覆盖个别账户的全局策略。见 第 8.2.15 节,“密码管理”。 -
Command-Line Format --persisted-globals-load[={OFF|ON}]
System Variable 加载持久全局变量
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
是否从数据目录中的
mysqld-auto.cnf
文件加载持久配置设置。服务器通常在启动时处理该文件,位于所有其他选项文件之后(见 第 6.2.2.2 节,“使用选项文件”)。禁用加载持久全局变量
将导致服务器启动序列跳过mysqld-auto.cnf
。要修改
mysqld-auto.cnf
的内容,请使用SET PERSIST
、SET PERSIST_ONLY
和RESET PERSIST
语句。见 第 7.1.9.3 节,“持久系统变量”。 -
Command-Line Format --persist-only-admin-x509-subject=string
System Variable 仅管理员 X509 主题
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value 空字符串
SET PERSIST
和SET PERSIST_ONLY
可以将系统变量持久化到mysqld-auto.cnf
选项文件中(见 第 15.7.6.1 节,“SET 语法用于变量赋值”)。持久化系统变量可以在服务器重启后生效,这对于远程管理非常方便,不需要直接访问 MySQL 服务器主机选项文件。然而,一些系统变量不能持久化或只能在特定条件下持久化。系统变量
persist_only_admin_x509_subject
指定了 SSL 证书 X.509 主题值,用户必须具有该值才能持久化系统变量。默认值为空字符串,这样禁用了主题检查,使得持久化受限的系统变量不能被任何用户持久化。如果
persist_only_admin_x509_subject
不为空,用户可以使用加密连接并提供 SSL 证书的指定主题值,然后使用SET PERSIST_ONLY
持久化持久化受限的系统变量。有关持久化受限系统变量的信息和配置 MySQL 以启用persist_only_admin_x509_subject
的说明,请参阅 第 7.1.9.4 节,“不可持久化和持久化受限系统变量”。 -
persist_sensitive_variables_in_plaintext
Command-Line Format --persist_sensitive_variables_in_plaintext[={OFF|ON}]
System Variable persist_sensitive_variables_in_plaintext
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
persist_sensitive_variables_in_plaintext
控制服务器是否允许以明文格式存储敏感系统变量的值,如果 keyring 组件支持不可用时使用SET PERSIST
设置系统变量的值。它还控制服务器是否可以启动,如果加密值无法解密。请注意,keyring 插件不支持敏感系统变量的安全存储;MySQL 服务器实例必须启用 keyring 组件(见 第 8.4.4 节,“MySQL Keyring”)以支持安全存储。默认设置为
ON
,如果 keyring 组件支持可用,则加密值,否则以明文格式存储(并发出警告)。下次设置任何持久化系统变量时,如果 keyring 支持可用,则服务器将加密未加密的敏感系统变量的值。ON
设置还允许服务器启动,如果加密系统变量值无法解密,在这种情况下,发出警告并使用默认值。最安全的设置为
OFF
,这意味着敏感系统变量值不能持久化,如果 keyring 组件支持不可用。OFF
设置还意味着服务器不会启动,如果加密系统变量值无法解密。有关更多信息,请参阅 持久化敏感系统变量。
-
Command-Line Format --pid-file=file_name
System Variable pid_file
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 文件中服务器写入其进程ID的路径名。服务器在数据目录中创建文件,除非指定了绝对路径名以指定不同的目录。如果您指定了这个变量,必须指定一个值。如果您不指定这个变量,MySQL将使用默认值:
,其中:主机名
.pid主机名
是主机机器的名称。进程ID文件由其他程序,如:mysqld_safe,用于确定服务器的进程ID。在 Windows 上,这个变量还影响默认错误日志文件名。见:第 7.4.2 节,“错误日志”。
-
Command-Line Format --plugin-dir=dir_name
System Variable plugin_dir
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 目录名 Default Value BASEDIR/lib/plugin
插件目录的路径名。
如果插件目录可由服务器写入,可能允许用户使用:
SELECT ... INTO DUMPFILE
将可执行代码写入目录中的文件。这可以通过使:plugin_dir
只读或将:secure_file_priv
设置为一个安全的目录来防止。 -
Command-Line Format --port=port_num
System Variable port
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 3306
Minimum Value 0
Maximum Value 65535
服务器监听 TCP/IP 连接的端口号。这个变量可以使用:
--port
选项设置。 -
Command-Line Format --preload-buffer-size=#
System Variable preload_buffer_size
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 32768
Minimum Value 1024
Maximum Value 1073741824
Unit 字节 预加载索引时分配的缓冲区大小。
设置这个系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。见:第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --print-identified-with-as-hex[={OFF|ON}]
System Variable print_identified_with_as_hex
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
在:
SHOW CREATE USER
的输出中,IDENTIFIED WITH
子句中的密码哈希值可能包含不可打印字符,这些字符可能对终端显示和其他环境产生不良影响。启用:print_identified_with_as_hex
导致:SHOW CREATE USER
将这些哈希值显示为十六进制字符串,而不是普通字符串文字。哈希值中不包含不可打印字符的仍然显示为普通字符串文字,即使启用了这个变量。 -
如果设置为 0 或
OFF
(默认值),则禁用语句配置文件。如果设置为 1 或ON
,则启用语句配置文件,并且SHOW PROFILE
和SHOW PROFILES
语句提供了访问配置文件信息的权限。见 第 15.7.7.33 节,“SHOW PROFILES 语句”。该变量已弃用;预计在未来 MySQL 版本中删除。
-
如果
配置文件
启用,则维护配置文件信息的语句数。默认值为 15。最大值为 100。将值设置为 0 将禁用配置文件。见 第 15.7.7.33 节,“SHOW PROFILES 语句”。该变量已弃用;预计在未来 MySQL 版本中删除。
-
Command-Line Format --protocol-compression-algorithms=value
System Variable 协议压缩算法
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 设置 Default Value zlib,zstd,uncompressed
Valid Values zlib
zstd
uncompressed
服务器允许的压缩算法,用于传入连接。这些连接包括客户端程序和参与源/副本复制或组复制的服务器。压缩不适用于
FEDERATED
表的连接。协议压缩算法
不控制 X 协议的连接压缩。见 第 22.5.5 节,“连接压缩与 X 插件” 了解其工作原理。变量值是一个或多个以逗号分隔的压缩算法名称列表,选择以下项目(不区分大小写):
-
zlib
: 允许使用zlib
压缩算法的连接。 -
zstd
: 允许使用zstd
压缩算法的连接。 -
uncompressed
: 允许未压缩的连接。如果该算法名称不在协议压缩算法
值中,服务器不允许未压缩的连接。它仅允许使用其他指定算法的压缩连接,没有回退到未压缩的连接。
默认值
zlib,zstd,uncompressed
表示服务器允许所有压缩算法。更多信息,请见 第 6.2.8 节,“连接压缩控制”。
-
-
System Variable 协议版本
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 10
Minimum Value 0
Maximum Value 4294967295
MySQL 服务器使用的客户端/服务器协议版本。
-
如果当前客户端是另一个用户的代理,则该变量是代理用户帐户名称。否则,该变量是
NULL
。参见 第 8.2.19 节,“代理用户”。 -
伪复制模式
用于服务器内部使用。它有助于正确处理来自旧服务器或新服务器的交易。 mysqlbinlog 在执行任何 SQL 语句之前将伪复制模式
设置为 true。设置会话值
伪复制模式
是一个受限操作。会话用户必须具有REPLICATION_APPLIER
权限(见 第 19.3.3 节,“复制权限检查”),或足以设置受限会话变量的权限(见 第 7.1.9.1 节,“系统变量权限”)。然而,请注意,该变量不是供用户设置的;它是由复制基础结构自动设置的。伪复制模式
对于预备 XA 事务的处理有以下影响,这些事务可以附加到或从处理会话中分离(默认情况下,是发出XA START
的会话):-
如果为 true,并且处理会话已经执行了内部使用的
BINLOG
语句,XA 事务将自动从会话中分离,以便可以由任何具有XA_RECOVER_ADMIN
权限的会话提交或回滚。 -
如果为 false,XA 事务将保持附加到处理会话,直到该会话断开连接或服务器重新启动。在这期间,其他会话无法提交事务。
伪复制模式
对于原始提交时间戳复制延迟时间戳和original_server_version
系统变量有以下影响:-
如果为 true,未明确设置
original_commit_timestamp
或original_server_version
的事务将被假定来自其他未知服务器,因此将时间戳和系统变量设置为 0,表示未知。 -
如果为 false,未明确设置
original_commit_timestamp
或original_server_version
的事务将被假定来自当前服务器,因此将当前时间戳和当前服务器版本分配给时间戳和系统变量。
伪复制模式
对于处理设置一个或多个不支持的 SQL 模式的语句有以下影响:-
如果为 true,服务器将忽略不支持的模式并发出警告。
-
如果为 false,服务器将以
ER_UNSUPPORTED_SQL_MODE
拒绝语句。
-
-
已弃用的别名,用于
pseudo_replica_mode
。 -
System Variable pseudo_thread_id
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2147483647
Minimum Value 0
Maximum Value 2147483647
该变量用于服务器内部使用。
Warning更改会话值
pseudo_thread_id
系统变量将更改CONNECTION_ID()
函数返回的值。设置会话值的该系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --query-alloc-block-size=#
System Variable query_alloc_block_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8192
Minimum Value 1024
Maximum Value 4294966272
Unit 字节 Block Size 1024
在语句解析和执行期间创建对象的内存块的分配大小。如果您遇到内存碎片问题,可能需要增加该参数。
块大小为 1024 字节。MySQL 服务器在存储系统变量值之前将非块大小的值向下舍入到最近的块大小。
-
Command-Line Format --query-prealloc-size=#
Deprecated 是 System Variable query_prealloc_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8192
Minimum Value 8192
Maximum Value (64-bit platforms) 18446744073709550592
Maximum Value (32-bit platforms) 4294966272
Unit 字节 Block Size 1024
query_prealloc_size
已弃用,设置它没有效果;您应该期待在未来版本的 MySQL 中删除它。 -
System Variable rand_seed1
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value N/A
Minimum Value 0
Maximum Value 4294967295
变量
rand_seed1
和rand_seed2
只存在于会话变量中,可以设置但不能读取。这些变量(但不是它们的值)将显示在SHOW VARIABLES
的输出中。这些变量的目的是支持
RAND()
函数的复制。对于调用RAND()
的语句,源服务器将两个值传递给副本,其中它们被用来种子随机数生成器。副本使用这些值设置会话变量rand_seed1
和rand_seed2
RAND()
在副本上生成与源服务器相同的值。 -
请参阅
rand_seed1
的描述。 -
Command-Line Format --range-alloc-block-size=#
System Variable range_alloc_block_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 4096
Minimum Value 4096
Maximum Value (64-bit platforms) 18446744073709550592
Maximum Value 4294966272
Unit 字节 Block Size 1024
执行范围优化时分配的块大小(以字节为单位)。
块大小以1024为基数。MySQL Server在存储系统变量之前将非exact多倍的值向下舍入到最近的块大小。
-
Command-Line Format --range-optimizer-max-mem-size=#
System Variable range_optimizer_max_mem_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8388608
Minimum Value 0
Maximum Value 18446744073709551615
Unit 字节 范围优化器的内存消耗限制。值为0表示“无限制”。如果执行计划考虑的范围访问方法的内存使用量超过限制,优化器将放弃该计划并考虑其他计划。有关更多信息,请参阅限制范围优化的内存使用。
-
System Variable rbr_exec_mode
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value STRICT
Valid Values STRICT
IDEMPOTENT
用于mysqlbinlog的内部使用。此变量在服务器之间切换IDEMPOTENT模式和STRICT模式。IDEMPOTENT模式会抑制
BINLOG
语句中的重复键和找不到键错误,生成mysqlbinlog时。这模式在重放基于行的二进制日志时很有用,可能会与现有数据冲突。mysqlbinlog在指定--idempotent
选项时设置此模式,写入以下内容到输出中:SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
-
Command-Line Format --读取缓冲区大小=#
System Variable 读取缓冲区大小
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 131072
Minimum Value 8192
Maximum Value 2147479552
Unit 字节 Block Size 4096
每个线程执行顺序扫描MyISAM表时,分配一个缓冲区大小(以字节为单位)用于每个表的扫描。如果您执行了许多顺序扫描,可能需要增加该值,默认为131072。该变量的值应该是4KB的倍数。如果设置的值不是4KB的倍数,将其值四舍五入到最近的4KB倍数。
此选项还用于以下所有其他存储引擎的上下文,除了
InnoDB
:-
用于缓存临时文件(不是临时表)中的索引,当对行进行ORDER BY排序时。
-
用于批量插入分区。
-
用于缓存嵌套查询的结果。
读取缓冲区大小
还用于另一种存储引擎特定的方式:确定MEMORY
表的内存块大小。select_into_buffer_size
用于SELECT INTO DUMPFILE和SELECT INTO OUTFILE语句的I/O缓存缓冲区。(读取缓冲区大小
用于所有其他情况下的I/O缓存缓冲区大小。)有关不同操作期间内存使用情况的更多信息,请参阅第10.12.3.1节,“MySQL如何使用内存”。
-
-
Command-Line Format --只读[={OFF|ON}]
System Variable 只读
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果
只读
系统变量启用,服务器仅允许具有CONNECTION_ADMIN
特权(或已弃用的SUPER
特权)的用户执行客户端更新。该变量默认情况下禁用。服务器还支持
超级只读
系统变量(默认情况下禁用),该变量具有以下效果:当
只读
启用时,并且当超级只读
启用时,服务器仍然允许这些操作:-
由复制线程执行的更新,如果服务器是副本。在复制设置中,启用
read_only
在副本服务器上可以确保副本仅从源服务器接受更新,而不是从客户端。 -
写入系统表
mysql.gtid_executed
,该表存储了执行的事务的GTID,该事务不在当前二进制日志文件中。 -
使用
ANALYZE TABLE
或OPTIMIZE TABLE
语句。只读模式的目的是防止表结构或内容的更改。分析和优化不属于这种更改。这意味着,例如,在只读副本上可以使用mysqlcheck--all-databases
--analyze
进行一致性检查。 -
使用
FLUSH STATUS
语句,这些语句总是写入二进制日志。 -
对
TEMPORARY
表的操作。 -
插入日志表(
mysql.general_log
和mysql.slow_log
);见第7.4.1节,“选择通用查询日志和慢查询日志输出目标”。 -
对性能模式表的更新,例如
UPDATE
或TRUNCATE TABLE
操作。
在复制源服务器上对
read_only
的更改不会被复制到副本服务器上。该值可以在副本服务器上独立于源服务器设置。以下条件适用于尝试启用
read_only
(包括隐式尝试,结果来自启用super_read_only
):-
如果您拥有任何显式锁(使用
LOCK TABLES
获取)或拥有挂起的事务,尝试将失败并出现错误。 -
尝试将阻塞,直到其他客户端释放锁和事务结束。同时,其他客户端对表锁或事务的请求也将被阻塞,直到
read_only
被设置。 -
尝试将阻塞,如果有活动的事务持有元数据锁,直到这些事务结束。
-
read_only
可以在您持有全局读锁(使用FLUSH TABLES WITH READ LOCK
获取)时启用,因为这不涉及表锁。
-
-
Command-Line Format --read-rnd-buffer-size=#
System Variable read_rnd_buffer_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 262144
Minimum Value 1
Maximum Value 2147483647
Unit 字节 该变量用于从
MyISAM
表中读取数据,并且对于任何存储引擎,用于多范围读取优化。当从
MyISAM
表中按键排序顺序读取行时,行将通过该缓冲区读取,以避免磁盘寻道。见第10.2.1.16节,“ORDER BY优化”。将该变量设置为大值可以大幅提高ORDER BY
性能。但是,这是一个为每个客户端分配的缓冲区,因此您不应该将全局变量设置为大值。相反,仅从需要运行大查询的客户端会话变量更改。有关不同操作期间内存使用情况的更多信息,请参阅 第 10.12.3.1 节,“MySQL 如何使用内存”。有关 Multi-Range Read 优化的信息,请参阅 第 10.2.1.11 节,“Multi-Range Read 优化”。
-
Command-Line Format --regexp-stack-limit=#
System Variable regexp_stack_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8000000
Minimum Value 0
Maximum Value 2147483647
Unit 字节 用于正则表达式匹配操作的内部堆栈的最大可用内存(以字节为单位),这些操作由
REGEXP_LIKE()
和类似函数执行(见 第 14.8.2 节,“正则表达式”)。 -
Command-Line Format --regexp-time-limit=#
System Variable regexp_time_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 32
Minimum Value 0
Maximum Value 2147483647
正则表达式匹配操作的时间限制,以步骤数表示,影响执行时间间接地。通常,它是毫秒级别的。
-
System Variable require_row_format
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量用于服务器内部的复制和 mysqlbinlog。它将 DML 事件限制为行基于二进制日志记录格式的事件,临时表不能被创建。查询不遵守限制将失败。
将会话值设置为
ON
不需要特权。将会话值设置为OFF
是一个受限操作,会话用户必须具有足够的特权来设置受限会话变量。见 第 7.1.9.1 节,“系统变量特权”。 -
Command-Line Format --require-secure-transport[={OFF|ON}]
System Variable require_secure_transport
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否需要客户端连接到服务器使用某种形式的安全传输。当启用该变量时,服务器仅允许使用 TLS/SSL 加密的 TCP/IP 连接或 Unix 套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。服务器拒绝非安全连接尝试,失败时将出现
ER_SECURE_TRANSPORT_REQUIRED
错误。该功能补充了每个帐户的 SSL 要求,后者优先。例如,如果帐户定义了
REQUIRE SSL
,启用require_secure_transport
不会使得可以使用 Unix 套接字文件连接到该帐户。服务器可能没有安全传输可用。例如,在Windows上启动服务器时,如果没有指定SSL证书或密钥文件,并禁用了
shared_memory
系统变量,那么服务器将写入错误日志并退出。在这些条件下,尝试在启动时启用require_secure_transport
将导致服务器写入错误日志并退出。尝试在运行时启用该变量将失败,并返回ER_NO_SECURE_TRANSPORTS_CONFIGURED
错误。另见配置强制加密连接。
-
System Variable resultset_metadata
Scope 会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value FULL
Valid Values FULL
NONE
对于元数据传输可选的连接,客户端设置
resultset_metadata
系统变量,以控制服务器是否返回结果集元数据。允许的值是FULL
(返回所有元数据;这是默认值)和NONE
(不返回元数据)。对于不可选的连接,设置
resultset_metadata
为NONE
将产生错误。有关管理结果集元数据传输的详细信息,请参阅可选结果集元数据。
-
secondary_engine_cost_threshold
System Variable secondary_engine_cost_threshold
Scope 会话 Dynamic 是 SET_VAR
Hint Applies是 Type 数字 Default Value 100000.000000
Minimum Value 0
Maximum Value DBL_MAX (最大双精度值)
查询卸载到辅助引擎的优化器成本阈值。
用于HeatWave。请参阅MySQL HeatWave 用户指南。
-
Command-Line Format --schema-definition-cache=#
System Variable schema_definition_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 256
Minimum Value 256
Maximum Value 524288
定义了schema定义对象的缓存限制,包括使用和未使用的对象。
未使用的schema定义对象仅在缓存中保留,当使用中的对象数量小于schema_definition_cache定义的容量时。
将schema_definition_cache设置为
0
意味着schema定义对象仅在使用时保留在缓存中。有关详细信息,请参阅第 16.4 节,“数据词典对象缓存”。
-
Command-Line Format --secure-file-priv=dir_name
System Variable secure_file_priv
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value 平台特定
Valid Values 空字符串
dirname
NULL
该变量用于限制数据导入和导出操作的影响,例如由
LOAD DATA
和SELECT ... INTO OUTFILE
语句和LOAD_FILE()
函数执行的操作。这些操作仅允许具有FILE
权限的用户。secure_file_priv
可以设置如下:-
如果为空,则该变量无效。这不是一个安全设置。
-
如果设置为目录的名称,则服务器将导入和导出操作限制为仅在该目录中工作。该目录必须存在;服务器不会创建它。
-
如果设置为
NULL
,则服务器禁用导入和导出操作。
默认值取决于
INSTALL_LAYOUT
CMake 选项的值,如下表所示。要明确指定默认secure_file_priv
值,如果您从源代码构建,请使用INSTALL_SECURE_FILE_PRIVDIR
CMake 选项。INSTALL_LAYOUT
ValueDefault secure_file_priv
Value独立
空 DEB
,RPM
,SVR4
/var/lib/mysql-files
否则 mysql-files
在CMAKE_INSTALL_PREFIX
值下服务器在启动时检查
secure_file_priv
的值,并在错误日志中写入警告,如果值不安全。非NULL
值被认为是不安全的,如果它为空,或者是数据目录或其子目录,或者是所有用户都可以访问的目录。如果secure_file_priv
设置为不存在的路径,服务器将在错误日志中写入错误消息并退出。 -
-
Command-Line Format --select-into-buffer-size=#
System Variable select_into_buffer_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 131072
Minimum Value 8192
Maximum Value 2147479552
Unit 字节 Block Size 4096
使用
SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
将数据转储到一个或多个文件中,以便创建备份、迁移数据或其他目的时,写入操作通常可以缓冲,然后触发大量写入 I/O 活动到磁盘或其他存储设备,并且可能会阻止其他对延迟敏感的查询。您可以使用该变量来控制写入数据到存储设备的缓冲区大小,以确定何时应该发生缓冲区同步,从而防止这种写入停顿的发生。select_into_buffer_size
覆盖了read_buffer_size
的值。(select_into_buffer_size
和read_buffer_size
具有相同的默认、最大和最小值。)您还可以使用select_into_disk_sync_delay
设置超时,以便在每次同步发生时观察。设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --select-into-disk-sync={ON|OFF}
System Variable 同步磁盘写入
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
Valid Values OFF
ON
当设置为
ON
时,启用长时间运行的SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
语句使用select_into_buffer_size
的缓冲区同步写入到输出文件。 -
Command-Line Format --select-into-disk-sync-delay=#
System Variable select_into_disk_sync_delay
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 31536000
Unit 毫秒 当缓冲区同步写入到输出文件由
select_into_disk_sync
启用时,该变量设置一个可选的延迟(以毫秒为单位)在同步后。0
(默认)表示无延迟。设置会话值的这个系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --session-track-gtids=value
System Variable session_track_gtids
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value OFF
Valid Values OFF
OWN_GTID
ALL_GTIDS
控制服务器是否将 GTIDs 返回给客户端,以便客户端跟踪服务器状态。在每个事务执行结束时,服务器的 GTIDs 将被捕获并返回给客户端作为确认的一部分。
session_track_gtids
的可能值如下:-
OFF
:服务器不返回 GTIDs 给客户端。这是默认值。 -
OWN_GTID
:服务器返回当前会话中所有已提交事务的 GTIDs。 -
ALL_GTIDS
:服务器返回其gtid_executed
系统变量的全局值,该值在事务提交后读取。除了当前事务的 GTID 之外,还包括所有客户端提交的所有事务的 GTIDs。
session_track_gtids
不能在事务上下文中设置。有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”。
-
-
Command-Line Format --session-track-schema[={OFF|ON}]
System Variable session_track_schema
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
控制服务器是否跟踪当前会话中的默认模式(数据库)设置,并将模式名称通知客户端。
如果启用了模式名称跟踪器,每次设置默认模式时都会发生名称通知,即使新模式名称与旧模式名称相同。
有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”。
-
Command-Line Format --session-track-state-change[={OFF|ON}]
System Variable session_track_state_change
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
控制服务器是否跟踪当前会话的状态变化,并在状态变化时通知客户端。可以报告的状态变化包括:
-
默认模式(数据库)。
-
会话特定系统变量的值。
-
用户定义的变量。
-
临时表。
-
预备语句。
如果启用了会话状态跟踪器,对于每个跟踪的会话属性的变化都会发生通知,即使新属性值与旧属性值相同。例如,将用户定义的变量设置为当前值将导致通知。
变量
session_track_state_change
只控制状态变化的通知,而不控制变化的内容。例如,状态变化通知将在默认模式设置或跟踪会话系统变量时发生,但通知不包括模式名称或变量值。要接收模式名称或会话系统变量值的通知,请使用session_track_schema
或session_track_system_variables
系统变量。Note将值分配给
session_track_state_change
本身不被视为状态变化,不会被报告为状态变化。然而,如果其名称列在session_track_system_variables
的值中,那么对其的任何分配都会导致通知新的值。有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”。
-
-
session_track_system_variables
Command-Line Format --session-track-system-variables=#
System Variable session_track_system_variables
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value time_zone, autocommit, character_set_client, character_set_results, character_set_connection
控制服务器是否跟踪会话系统变量的分配,并将变量名称和值通知客户端。变量值是一个逗号分隔的变量列表,用于跟踪分配。默认情况下,启用了对
time_zone
、autocommit
、character_set_client
、character_set_results
和character_set_connection
的跟踪。(后三个变量是由SET NAMES
影响的。)要启用每个语句的语句 ID 的显示,请使用
statement_id
变量。例如:mysql> SET @@SESSION.session_track_system_variables='statement_id' mysql> SELECT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.0006 sec) Statement ID: 603835
特殊值
*
(星号)使服务器跟踪所有会话变量的分配。如果给定,这个值必须单独指定,不带有特定系统变量名称。此值还启用每个成功语句处理的语句 ID 的显示。要禁用会话变量赋值的通知,请将
session_track_system_variables
设置为空字符串。如果启用了会话系统变量跟踪,则对跟踪的会话变量的所有赋值都会发出通知,即使新值与旧值相同。
有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”。
-
session_track_transaction_info
Command-Line Format --session-track-transaction-info=value
System Variable session_track_transaction_info
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value OFF
Valid Values OFF
STATE
CHARACTERISTICS
控制服务器是否跟踪当前会话中的事务状态和特征,并通知客户端以使这些信息可用。这些
session_track_transaction_info
值是允许的:-
OFF
:禁用事务状态跟踪。这是默认值。 -
STATE
:启用事务状态跟踪,但不包括特征跟踪。状态跟踪使客户端能够确定事务是否在进行中,并且是否可以在不回滚的情况下将其移到另一个会话中。 -
CHARACTERISTICS
:启用事务状态跟踪,包括特征跟踪。特征跟踪使客户端能够确定如何在另一个会话中重新启动事务,以便它具有与原始会话相同的特征。ISOLATION LEVEL READ ONLY READ WRITE WITH CONSISTENT SNAPSHOT
要使客户端安全地将事务重新定位到另一个会话中,它必须跟踪不仅是事务状态,还有事务特征。此外,客户端还必须跟踪
transaction_isolation
和transaction_read_only
系统变量,以正确地确定会话默认值。(要跟踪这些变量,请将它们列在session_track_system_variables
系统变量的值中。)有关会话状态跟踪的更多信息,请参阅 第 7.1.18 节,“服务器跟踪客户端会话状态”。
-
-
Command-Line Format --set-operations-buffer-size=#
System Variable set_operations_buffer_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 256K
Minimum Value 16K
Maximum Value 1 GB
设置
INTERSECT
和EXCEPT
操作的缓冲区大小,当hash_set_operations
优化器开关启用时。在一般情况下,增加该缓冲区的大小可以提高这些操作的性能,当哈希优化启用时。 -
sha256_password_auto_generate_rsa_keys
Command-Line Format --sha256-password-auto-generate-rsa-keys[={OFF|ON}]
System Variable sha256_password_auto_generate_rsa_keys
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
服务器使用该变量来确定是否在数据目录中自动生成 RSA 私钥/公钥文件,如果它们尚不存在。
在启动时,服务器自动在数据目录中生成RSA私钥/公钥文件,如果满足以下所有条件:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系统变量启用;没有RSA选项指定;RSA文件从数据目录中缺失。这些密钥文件启用了使用RSA在未加密连接上安全密码交换的功能,用于sha256_password
或caching_sha2_password
插件认证的账户;见第 8.4.1.3 节,“SHA-256 Pluggable Authentication”和第 8.4.1.2 节,“Caching SHA-2 Pluggable Authentication”。有关RSA文件自动生成的更多信息,包括文件名和特征,请参阅第 8.3.3.1 节,“使用 MySQL 创建 SSL 和 RSA 证书和密钥”。
系统变量
auto_generate_certs
与之相关,但控制了 SSL 证书和密钥文件的自动生成,以便使用 SSL 进行安全连接。 -
sha256_password_private_key_path
Command-Line Format --sha256-password-private-key-path=file_name
System Variable sha256_password_private_key_path
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value private_key.pem
该变量的值是
sha256_password
认证插件的 RSA 私钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。Important因为该文件存储私钥,因此其访问模式应该限制为仅 MySQL 服务器可以读取。
有关
sha256_password
的信息,请参阅第 8.4.1.3 节,“SHA-256 Pluggable Authentication”。 -
Command-Line Format --sha256-password-proxy-users[={OFF|ON}]
System Variable sha256_password_proxy_users
Scope Global Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量控制
sha256_password
内置认证插件是否支持代理用户。只有在check_proxy_users
系统变量启用时才生效。有关用户代理的信息,请参阅第 8.2.19 节,“Proxy Users”。 -
sha256_password_public_key_path
Command-Line Format --sha256-password-public-key-path=file_name
System Variable sha256_password_public_key_path
Scope Global Dynamic 否 SET_VAR
Hint Applies否 Type 文件名 Default Value public_key.pem
该变量的值是
sha256_password
认证插件的 RSA 公钥文件的路径名。如果文件名指定为相对路径,则相对于服务器数据目录进行解释。文件必须是 PEM 格式。因为该文件存储公钥,可以自由地将其分发给客户端用户。(客户端在使用 RSA 密码加密连接到服务器时,必须使用与服务器相同的公钥。)有关
sha256_password
的信息,包括客户端如何指定 RSA 公钥,请参阅第 8.4.1.3 节,“SHA-256 Pluggable Authentication”。 -
Command-Line Format --shared-memory[={OFF|ON}]
System Variable 共享内存
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Platform Specific Windows Type 布尔值 Default Value OFF
(仅限 Windows) 是否允许服务器使用共享内存连接。
-
Command-Line Format --shared-memory-base-name=name
System Variable 共享内存基准名称
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Platform Specific Windows Type 字符串 Default Value MYSQL
(仅限 Windows) 用于共享内存连接的共享内存名称。这在运行多个 MySQL 实例的单个物理机器上非常有用。默认名称是
MYSQL
。名称区分大小写。如果服务器以
共享内存
系统变量启用以支持共享内存连接,则此变量适用。 -
Command-Line Format --show-create-table-skip-secondary-engine[={OFF|ON}]
System Variable 跳过次要引擎的SHOW CREATE TABLE
Scope 会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
启用
跳过次要引擎的SHOW CREATE TABLE
将从SHOW CREATE TABLE
输出中排除SECONDARY ENGINE
子句,并从CREATE TABLE
语句中dumped by mysqldump 实用程序。mysqldump 提供了
--show-create-skip-secondary-engine
选项。当指定时,它将启用跳过次要引擎的SHOW CREATE TABLE
系统变量,以便在dump操作期间。用于 HeatWave。请参阅 MySQL HeatWave 用户指南。
-
Command-Line Format --show-create-table-verbosity[={OFF|ON}]
System Variable SHOW CREATE TABLE 详细信息
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
SHOW CREATE TABLE
通常不会显示表的ROW_FORMAT
选项,除非它不是默认格式。启用此变量将导致SHOW CREATE TABLE
显示ROW_FORMAT
,无论它是否是默认格式。 -
Command-Line Format --show-gipk-in-create-table-and-information-schema[={OFF|ON}]
System Variable 在CREATE TABLE和信息模式中显示GIPK
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
是否在 SHOW 语句的输出和信息模式表中显示生成的不可见主键。当该变量设置为
OFF
时,这些键将不被显示。该变量不被复制。
有关更多信息,请参阅 第 15.1.20.11 节,“生成的不可见主键”。
-
Command-Line Format --show-old-temporals[={OFF|ON}]
Deprecated 是 System Variable show_old_temporals
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否在 SHOW CREATE TABLE 输出中包括注释,以标记在 pre-5.6.4 格式中发现的时间列 (
TIME
、DATETIME
和TIMESTAMP
列没有小数秒精度支持)。该变量默认情况下是禁用的。如果启用,SHOW CREATE TABLE 输出将如下所示:CREATE TABLE `mytbl` ( `ts` timestamp /* 5.5 binary format */ NOT NULL DEFAULT CURRENT_TIMESTAMP, `dt` datetime /* 5.5 binary format */ DEFAULT NULL, `t` time /* 5.5 binary format */ DEFAULT NULL ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
信息模式 COLUMNS 表的
COLUMN_TYPE
列的输出也将受到类似的影响。该变量已弃用,并将在未来 MySQL 版本中删除。
设置会话值的系统变量是一个受限的操作。会话用户必须具有足够的权限来设置受限的会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --skip-external-locking[={OFF|ON}]
System Variable skip_external_locking
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
如果 mysqld 使用外部锁定(系统锁定),则该变量为
OFF
,否则为ON
。这只影响MyISAM
表访问。该变量由
--external-locking
或--skip-external-locking
选项设置。外部锁定默认情况下是禁用的。外部锁定只影响
MyISAM
表访问。有关更多信息,包括可以和不能使用外部锁定的条件,请参阅 第 10.11.5 节,“外部锁定”。 -
Command-Line Format --skip-name-resolve[={OFF|ON}]
System Variable skip_name_resolve
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否在检查客户端连接时解析主机名。如果该变量为
OFF
,mysqld 在检查客户端连接时解析主机名。如果它是ON
,mysqld 只使用 IP 号码;在这种情况下,授权表中的所有Host
列值必须是 IP 地址。见 第 7.1.12.3 节,“DNS 查找和主机缓存”。根据系统的网络配置和账户的
Host
值,客户端可能需要使用明确的--host
选项,例如--host=127.0.0.1
或--host=::1
。尝试连接到主机
127.0.0.1
通常解析到localhost
账户。但是,如果服务器以skip_name_resolve
启用,那么这将失败。如果您计划这样做,请确保存在可以接受连接的账户。例如,要作为root
使用--host=127.0.0.1
或--host=::1
,创建这些账户:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
-
Command-Line Format --skip-networking[={OFF|ON}]
System Variable skip_networking
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
该变量控制服务器是否允许 TCP/IP 连接。默认情况下,它是禁用的(允许 TCP 连接)。如果启用,服务器仅允许本地(非 TCP/IP)连接,并且所有与 mysqld 的交互都必须使用命名管道或共享内存(在 Windows 上)或 Unix 套接字文件(在 Unix 上)。该选项对于仅允许本地客户端的系统非常推荐。见 第 7.1.12.3 节,“DNS 查找和主机缓存”。
因为使用
--skip-grant-tables
启动服务器禁用身份验证检查,服务器也禁用远程连接,通过启用skip_networking
。 -
Command-Line Format --skip-show-database
System Variable skip_show_database
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
这阻止人们使用
SHOW DATABASES
语句,除非他们拥有SHOW DATABASES
权限。这可以提高安全性,如果您担心用户能够看到其他用户的数据库。其效果取决于SHOW DATABASES
权限:如果变量值为ON
,SHOW DATABASES
语句仅允许拥有SHOW DATABASES
权限的用户,并显示所有数据库名称。如果值为OFF
,SHOW DATABASES
语句允许所有用户,但仅显示用户拥有SHOW DATABASES
或其他权限的数据库名称。Caution因为任何静态全局权限被认为是所有数据库的权限,因此任何静态全局权限使用户可以使用
SHOW DATABASES
或通过检查SCHEMATA
表中的INFORMATION_SCHEMA
,除了在数据库级别上被部分撤销的数据库。 -
Command-Line Format --slow-launch-time=#
System Variable slow_launch_time
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 2
Minimum Value 0
Maximum Value 31536000
Unit 秒 如果创建线程需要超过这个时间,服务器将增加
Slow_launch_threads
状态变量。 -
Command-Line Format --slow-query-log[={OFF|ON}]
System Variable slow_query_log
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否启用慢查询日志。该值可以是 0(或
OFF
)以禁用日志或 1(或ON
)以启用日志。日志输出的目标由log_output
系统变量控制;如果该值为NONE
,即使日志启用,也不会写入日志条目。“慢” 是由
long_query_time
变量的值确定的。见 第 7.4.5 节,“慢查询日志”。 -
Command-Line Format --slow-query-log-file=file_name
System Variable slow_query_log_file
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value host_name-slow.log
慢查询日志文件的名称。默认值是
,但可以使用host_name
-slow.log--slow_query_log_file
选项更改初始值。 -
Command-Line Format --socket={file_name|pipe_name}
System Variable socket
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 Default Value (Windows) MySQL
Default Value (Other) /tmp/mysql.sock
在 Unix 平台上,该变量是用于本地客户端连接的套接字文件的名称。默认值是
/tmp/mysql.sock
。(对于某些发行版格式,目录可能不同,例如/var/lib/mysql
用于 RPM。)在 Windows 平台上,该变量是用于本地客户端连接的命名管道的名称。默认值是
MySQL
(不区分大小写)。 -
Command-Line Format --sort-buffer-size=#
System Variable sort_buffer_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 262144
Minimum Value 32768
Maximum Value (Windows) 4294967295
Maximum Value (Other, 64-bit platforms) 18446744073709551615
Maximum Value (Other, 32-bit platforms) 4294967295
Unit 字节 每个会话必须执行排序的缓冲区大小。
sort_buffer_size
不特定于任何存储引擎,并且以一般方式进行优化。至少sort_buffer_size
值必须足够大以容纳十五个元组在排序缓冲区中。此外,增加max_sort_length
值可能需要增加sort_buffer_size
值。有关更多信息,请参阅第 10.2.1.16 节,“ORDER BY 优化”如果您在
SHOW GLOBAL STATUS
输出中看到每秒许多Sort_merge_passes
,您可以考虑增加sort_buffer_size
值,以加速无法通过查询优化或改进索引的ORDER BY或GROUP BY操作。优化器尝试计算出需要多少空间,但可以分配更多,直到达到限制。将其设置得比所需的更大,全球性地减慢了大多数执行排序的查询。最好将其作为会话设置,只对需要更大大小的会话进行设置。在 Linux 上,有 256KB 和 2MB 的阈值,其中较大的值可能会显著减慢内存分配,因此您应该考虑保持在其中一个值以下。实验以找到最佳值 для您的工作负载。请参阅B.3.3.5 节,“MySQL 存储临时文件的位置”。
允许的最大
sort_buffer_size
设置为 4GB−1。64 位平台(除了 64 位 Windows,后者将较大的值截断为 4GB−1 并发出警告)允许更大的值。 -
System Variable sql_auto_is_null
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
如果启用了该变量,那么在成功插入自动生成的AUTO_INCREMENT值后,您可以通过发出以下形式的语句来找到该值:
SELECT * FROM tbl_name WHERE auto_col IS NULL
如果语句返回一行,该值与调用
LAST_INSERT_ID()
函数相同。有关详细信息,包括多行插入后的返回值,请参阅第 14.15 节,“信息函数”。如果没有成功插入AUTO_INCREMENT值,SELECT
语句将不返回任何行。使用
IS NULL
比较来检索AUTO_INCREMENT值的行为由一些 ODBC 程序使用,例如 Access。请参阅获取自动递增值。可以通过将sql_auto_is_null
设置为OFF来禁用该行为。默认值为
sql_auto_is_null
是OFF。 -
System Variable sql_big_selects
Scope Global, Session Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value ON
如果设置为
OFF
, MySQL 将中止可能需要很长时间执行的SELECT
语句(即,优化器估计要检查的行数超过max_join_size
的值)。这在发出不明智的WHERE
语句时很有用。默认值为ON
,允许所有SELECT
语句。如果您将
max_join_size
系统变量设置为除DEFAULT
以外的值,sql_big_selects
将被设置为OFF
。 -
System Variable sql_buffer_result
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
如果启用,
sql_buffer_result
将强制SELECT
语句的结果放入临时表中。这可以帮助 MySQL 早期释放表锁,并且在发送结果到客户端需要很长时间时非常有用。默认值为OFF
。 -
sql_generate_invisible_primary_key
Command-Line Format --sql-generate-invisible-primary-key[={OFF|ON}]
System Variable sql_generate_invisible_primary_key
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
是否在创建没有主键的
InnoDB
表时生成不可见的主键。该变量不被复制。此外,即使在副本上设置了该变量,复制应用程序线程也会忽略它;这意味着,默认情况下,副本不会为从源创建的没有主键的表生成主键。您可以通过在
CHANGE REPLICATION SOURCE TO
语句中设置REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE
来强制副本生成不可见的主键,可能指定复制通道。有关更多信息和示例,请参阅 第 15.1.20.11 节,“生成不可见的主键”。
-
System Variable sql_log_off
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
Valid Values OFF
(启用日志记录)ON
(禁用日志记录)该变量控制当前会话的通用查询日志记录是否被禁用(假设通用查询日志本身已启用)。默认值为
OFF
(即启用日志记录)。要禁用或启用当前会话的通用查询日志记录,请将会话sql_log_off
变量设置为ON
或OFF
。设置该系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。请参阅 第 7.1.9.1 节,“系统变量权限”。
-
Command-Line Format --sql-mode=name
System Variable sql_mode
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 设置 Default Value ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
Valid Values ALLOW_INVALID_DATES
ANSI_QUOTES
ERROR_FOR_DIVISION_BY_ZERO
HIGH_NOT_PRECEDENCE
IGNORE_SPACE
NO_AUTO_VALUE_ON_ZERO
NO_BACKSLASH_ESCAPES
NO_DIR_IN_CREATE
NO_ENGINE_SUBSTITUTION
NO_UNSIGNED_SUBTRACTION
NO_ZERO_DATE
NO_ZERO_IN_DATE
ONLY_FULL_GROUP_BY
PAD_CHAR_TO_FULL_LENGTH
PIPES_AS_CONCAT
REAL_AS_FLOAT
STRICT_ALL_TABLES
STRICT_TRANS_TABLES
TIME_TRUNCATE_FRACTIONAL
当前服务器 SQL 模式,可以动态设置。详细信息,请参阅 第 7.1.11 节,“服务器 SQL 模式”。
NoteMySQL 安装程序可能在安装过程中配置 SQL 模式。
如果 SQL 模式不同于默认值或您期望的值,请检查启动时读取的选项文件中的设置。
-
如果启用(默认),诊断信息的
Note
级别将增加warning_count
,服务器将记录它们。如果禁用,Note
诊断信息不会增加warning_count
,服务器不会记录它们。mysqldump 包括输出以禁用该变量,以便重新加载转储文件时不会生成警告信息。 -
System Variable sql_quote_show_create
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
如果启用(默认),服务器将为
SHOW CREATE TABLE
和SHOW CREATE DATABASE
语句引用标识符。如果禁用,引用将被禁用。该选项默认启用,以便复制工作正常。详细信息,请参阅 第 15.7.7.11 节,“SHOW CREATE TABLE 语句” 和 第 15.7.7.7 节,“SHOW CREATE DATABASE 语句”。 -
Command-Line Format --sql-require-primary-key[={OFF|ON}]
System Variable sql_require_primary_key
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value OFF
是否强制创建新表或修改现有表的结构时需要主键。
设置会话值的系统变量是一个受限操作。会话用户必须具有足够的权限来设置受限会话变量。详细信息,请参阅 第 7.1.9.1 节,“系统变量权限”。
启用该变量可以避免基于行的复制中可能出现的性能问题,当表没有主键时。假设一个表没有主键,并且更新或删除修改了多行。在复制源服务器上,这个操作可以使用单个表扫描,但是在复制到副本服务器时,结果将是每行修改的表扫描。使用主键,这些表扫描将不会发生。
sql_require_primary_key
适用于基本表和TEMPORARY
表,并且对其值的更改将被复制到副本服务器。表必须使用可以参与复制的 MySQL 存储引擎。启用时,
sql_require_primary_key
具有以下效果:-
尝试创建没有主键的新表将失败并报错。这包括
CREATE TABLE ... LIKE
。它还包括CREATE TABLE ... SELECT
CREATE TABLE
部分包括主键定义。 -
尝试从现有表中删除主键将失败并报错,除非在同一个
ALTER TABLE
语句中删除主键并添加主键。即使表也包含
UNIQUE NOT NULL
索引,删除主键仍将失败。 -
尝试导入没有主键的表将失败并报错。
REQUIRE_TABLE_PRIMARY_KEY_CHECK
选项的CHANGE REPLICATION SOURCE TO
语句使副本可以选择自己的主键策略。当选项设置为ON
时,副本总是使用ON
值的sql_require_primary_key
系统变量在复制操作中,需要主键。当选项设置为OFF
时,副本总是使用OFF
值的sql_require_primary_key
系统变量在复制操作中,因此永远不需要主键,即使源需要一个。当REQUIRE_TABLE_PRIMARY_KEY_CHECK
选项设置为STREAM
时,默认情况下,副本使用从源复制的值,每个事务。使用STREAM
设置的REQUIRE_TABLE_PRIMARY_KEY_CHECK
选项时,如果使用了复制通道的权限检查,PRIVILEGE_CHECKS_USER
帐户需要足够的权限来设置受限会话变量,以便设置sql_require_primary_key
系统变量的会话值。使用ON
或OFF
设置时,帐户不需要这些权限。有关更多信息,请参阅第 19.3.3 节,“复制权限检查”。 -
-
System Variable sql_safe_updates
Scope Global, Session
Dynamic 是
SET_VAR
Hint Applies是
Type 布尔值
Default Value OFF
如果启用该变量,
UPDATE
和DELETE
语句如果不使用WHERE
子句或LIMIT
子句将产生错误。这使得可以捕捉UPDATE
和DELETE
语句,其中键未被正确使用,并且可能会更改或删除大量行。默认值是OFF
。对于mysql客户端,
sql_safe_updates
可以使用--safe-updates
选项启用。有关更多信息,请参阅使用安全更新模式 (--safe-updates)。 -
System Variable 选择限制
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 整数 Default Value 18446744073709551615
Minimum Value 0
Maximum Value 18446744073709551615
从
SELECT
语句返回的最大行数。有关更多信息,请参阅 使用安全更新模式 (--safe-updates)。新连接的默认值是服务器允许每个表的最大行数。典型的默认值是 (232)−1 或 (264)−1。如果您已经更改了限制,可以通过将值设置为
DEFAULT
来恢复默认值。 -
该变量控制单行
INSERT
语句是否在出现警告时生成信息字符串。默认值为OFF
。将值设置为ON
以生成信息字符串。 -
Command-Line Format --ssl-ca=file_name
System Variable SSL 证书颁发机构
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
Certificate Authority (CA) 证书文件的路径名,在 PEM 格式中。该文件包含受信任的 SSL 证书颁发机构列表。
可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新连接或在执行
ALTER INSTANCE RELOAD TLS
后的重启。如果变量值被持久化,请参阅 服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-capath=dir_name
System Variable SSL 证书颁发机构路径
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 目录名 Default Value NULL
包含受信任的 SSL 证书颁发机构证书文件的目录路径名,在 PEM 格式中。
可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新连接或在执行
ALTER INSTANCE RELOAD TLS
后的重启。如果变量值被持久化,请参阅 服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-cert=file_name
System Variable SSL 证书
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
服务器 SSL 公钥证书文件的路径名,在 PEM 格式中。
如果服务器以
ssl_cert
设置为使用任何受限密码或密码类别的证书启动,则服务器将禁用加密连接支持。有关密码限制的信息,请参阅连接密码配置。可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行
ALTER INSTANCE RELOAD TLS
或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-cipher=name
System Variable ssl_cipher
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value NULL
TLS协议1.2及以下版本的加密连接的允许加密密码列表。如果列表中没有支持的密码,加密连接将不工作。
为了最大限度地提高可移植性,密码列表应该是一个或多个密码名称,以冒号分隔。以下示例显示了两个密码名称,以冒号分隔:
[mysqld] ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL支持在https://www.openssl.org/docs/manmaster/man1/ciphers.html中描述的语法来指定密码。
有关MySQL支持的加密密码的信息,请参阅第8.3.2节,“加密连接TLS协议和密码”。
可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行
ALTER INSTANCE RELOAD TLS
或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-crl=file_name
System Variable ssl_crl
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
包含PEM格式证书撤销列表的文件路径名。
可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行
ALTER INSTANCE RELOAD TLS
或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-crlpath=dir_name
System Variable ssl_crlpath
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 目录名 Default Value NULL
包含PEM格式证书撤销列表文件的目录路径。
可以在运行时修改此变量,以影响服务器使用的TLS上下文,以便在执行
ALTER INSTANCE RELOAD TLS
或在重启后,如果变量值被持久化。请参阅服务器端运行时配置和监控加密连接。 -
Command-Line Format --ssl-fips-mode={OFF|ON|STRICT}
Deprecated 是 System Variable ssl_fips_mode
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 枚举 Default Value OFF
Valid Values OFF
(或 0)ON
(或 1)STRICT
(或 2)控制服务器端是否启用 FIPS 模式。
ssl_fips_mode
系统变量不同于其他ssl_
系统变量,它不用于控制服务器是否允许加密连接,而是影响哪些加密操作被允许。见 第 8.8 节,“FIPS 支持”。xxx
这些
ssl_fips_mode
值是允许的:-
OFF
(或 0):禁用 FIPS 模式。 -
ON
(或 1):启用 FIPS 模式。 -
STRICT
(或 2):启用“严格”FIPS 模式。
Note如果 OpenSSL FIPS 对象模块不可用,则
ssl_fips_mode
的唯一允许值是OFF
。在这种情况下,在启动时将ssl_fips_mode
设置为ON
或STRICT
将导致服务器产生错误消息并退出。该选项已弃用,并将在未来版本的 MySQL 中删除。
-
-
Command-Line Format --ssl-key=file_name
System Variable ssl_key
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 文件名 Default Value NULL
服务器 SSL 私钥文件的路径名,以 PEM 格式。为了更好的安全性,使用至少 2048 位的 RSA 密钥。
如果密钥文件受到密码保护,服务器将提示用户输入密码。密码必须交互式输入;不能存储在文件中。如果密码不正确,程序将继续执行,如同无法读取密钥。
可以在运行时修改该变量,以影响服务器使用的 TLS 上下文,用于新建立的连接或在
ALTER INSTANCE RELOAD TLS
语句执行后,或者在重启后如果变量值被持久化。见 Server-Side Runtime Configuration and Monitoring for Encrypted Connections。 -
Command-Line Format --ssl_session_cache_mode={ON|OFF}
System Variable ssl_session_cache_mode
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
Valid Values ON
OFF
控制服务器端是否启用会话缓存模式和服务器生成的会话票据。默认模式是
ON
(启用会话缓存模式)。对ssl_session_cache_mode
系统变量的更改只有在执行ALTER INSTANCE RELOAD TLS
语句后或在重启后如果变量值被持久化时才生效。这些
ssl_session_cache_mode
值是允许的:-
ON
:启用会话缓存模式。 -
OFF
:禁用会话缓存模式。
服务器不宣传其对会话恢复的支持,如果该系统变量的值为
OFF
。当在 OpenSSL 1.0.x
上运行时,会话票据总是生成的,但是在ssl_session_cache_mode
启用时,票据不可用。当前的有效值可以通过
Ssl_session_cache_mode
状态变量观察。 -
-
Command-Line Format --ssl_session_cache_timeout
System Variable ssl_session_cache_timeout
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 300
Minimum Value 0
Maximum Value 84600
Unit 秒 设置在建立新的加密连接到服务器时,允许之前会话重用的时间段,前提是
ssl_session_cache_mode
系统变量启用且之前会话数据可用。如果会话超时期限到期,会话将不再可重用。默认值为 300 秒,最大值为 84600(或一天的秒数)。对
ssl_session_cache_timeout
系统变量的更改只有在执行ALTER INSTANCE RELOAD TLS
语句后或在变量值被持久化后重启服务器时才生效。当前的有效值可以通过Ssl_session_cache_timeout
状态变量观察。 -
Command-Line Format --stored-program-cache=#
System Variable stored_program_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 256
Minimum Value 16
Maximum Value 524288
设置每个连接的存储程序缓存的软上限。该变量的值指定了存储过程和存储函数的缓存大小。
每当存储程序执行时,该缓存大小将被检查;如果同类型的存储程序(存储过程或存储函数)数量超过该变量指定的限制,则对应的缓存将被刷新,并释放之前分配的缓存对象的内存。这允许缓存安全地被刷新,即使存在存储程序之间的依赖关系。
存储过程和存储函数缓存与 dictionary object cache 的存储程序定义缓存分区并行存在。存储过程和存储函数缓存是每个连接的,而存储程序定义缓存是共享的。存储过程和存储函数缓存中的对象存在与存储程序定义缓存中的对象存在无关。更多信息,请参阅 第 16.4 节,“Dictionary Object Cache”。
-
stored_program_definition_cache
Command-Line Format --stored-program-definition-cache=#
System Variable stored_program_definition_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 256
Minimum Value 256
Maximum Value 524288
定义了存储程序定义对象的缓存限制,包括已使用和未使用的对象,可以在字典对象缓存中保留。
未使用的存储程序定义对象仅在字典对象缓存中保留,当使用中的对象数量少于由
stored_program_definition_cache
定义的容量时。设置为 0 意味着存储程序定义对象仅在使用时保留在字典对象缓存中。
存储程序定义缓存分区与存储过程和存储函数缓存并行存在,这些缓存是使用
stored_program_cache
选项配置的。stored_program_cache
选项设置了每个连接的缓存存储过程或函数的软上限,每次连接执行存储过程或函数时都会检查该限制。存储程序定义缓存分区是共享缓存,用于存储其他目的的存储程序定义对象。存储程序定义缓存分区中的对象存在与存储过程缓存或存储函数缓存中的对象存在无关。有关信息,请参阅 第 16.4 节,“字典对象缓存”。
-
Command-Line Format --super-read-only[={OFF|ON}]
System Variable super_read_only
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
如果
read_only
系统变量启用,服务器仅允许具有CONNECTION_ADMIN
权限(或已弃用的SUPER
权限)的用户执行客户端更新。如果super_read_only
系统变量也启用,服务器将禁止来自具有CONNECTION_ADMIN
或SUPER
权限的用户的客户端更新。请参阅read_only
系统变量的描述,以了解只读模式和read_only
和super_read_only
之间的交互。启用
super_read_only
后,客户端更新将被禁止,包括不一定是更新操作的操作,例如CREATE FUNCTION
(安装可加载函数)、INSTALL PLUGIN
和INSTALL COMPONENT
。这些操作被禁止,因为它们涉及到mysql
系统模式表的更改。类似地,如果事件计划程序启用,启用
super_read_only
系统变量将禁止事件计划程序更新事件 “最后执行” 时间戳在events
数据字典表中。这将导致事件计划程序停止下一次尝试执行计划事件时,写入服务器错误日志。(在这种情况下,event_scheduler
系统变量不会从ON
更改为OFF
。这意味着该变量拒绝 DBA 的意图,即事件计划程序启用或禁用,而实际状态可能不同)。如果super_read_only
后续禁用,服务器将自动重新启动事件计划程序。在复制源服务器上对
super_read_only
的更改不会被复制到副本服务器上。该值可以在副本上独立于源服务器上的设置。 -
Command-Line Format --syseventlog.facility=value
System Variable syseventlog.facility
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value daemon
错误日志输出到
syslog
的设施(是什么类型的程序发送消息)。此变量仅在安装了log_sink_syseventlog
错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”。允许的值可能因操作系统而异,请查看系统
syslog
文档。此变量在 Windows 上不存在。
-
Command-Line Format --syseventlog.include-pid[={OFF|ON}]
System Variable syseventlog.include_pid
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
是否在错误日志输出到
syslog
中包括服务器进程 ID。此变量仅在安装了log_sink_syseventlog
错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”。此变量在 Windows 上不存在。
-
Command-Line Format --syseventlog.tag=tag
System Variable syseventlog.tag
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value 空字符串
错误日志输出到
syslog
或 Windows 事件日志中的标签。此变量仅在安装了log_sink_syseventlog
错误日志组件时可用。见 第 7.4.2.8 节,“错误日志记录到系统日志”。默认情况下,不设置标签,因此服务器标识符只是
MySQL
在 Windows 上,和mysqld
在其他平台上。如果指定了标签值tag
,它将被追加到服务器标识符中,结果是syslog
标识符mysqld-
(或tag
MySQL-
在 Windows 上)。tag
在 Windows 上,要使用不存在的标签,服务器必须从管理员权限账户运行,以便创建注册表条目用于该标签。提升权限不是必需的,如果标签已经存在。
-
System Variable system_time_zone
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 服务器系统时区。当服务器开始执行时,它从机器默认值继承时区设置,可能被启动脚本或账户环境修改。该值用于设置
system_time_zone
。要明确指定系统时区,请设置TZ
环境变量或使用--timezone
选项的 mysqld_safe 脚本。除了启动时初始化外,如果服务器主机时区更改(例如,因夏令时),
system_time_zone
反映该更改,对应用程序有以下影响:-
查询引用
system_time_zone
将在日光节约时间更改前后获取不同的值。 -
对于在夏令时更改之前开始执行并在更改后结束的查询,
system_time_zone
在查询中保持不变,因为该值通常在执行开始时被缓存。
system_time_zone
变量不同于time_zone
变量。虽然它们可能具有相同的值,但后者用于初始化每个客户端的时区。请参阅 第 7.1.15 节,“MySQL 服务器时区支持”。 -
-
Command-Line Format --table-definition-cache=#
System Variable table_definition_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value -1
(表示自动调整大小;不要将该文字值分配)Minimum Value 400
Maximum Value 524288
表定义缓存可以存储的表定义数量。如果您使用大量表,可以创建一个大型表定义缓存以加速表的打开。表定义缓存占用较少的空间,不使用文件描述符,与普通表缓存不同。最小值为 400。默认值基于以下公式,限制在 2000:
MIN(400 + table_open_cache / 2, 2000)
对于
InnoDB
,table_definition_cache
设置作为字典对象缓存中的表实例数量和文件每表表空间的软限制。如果字典对象缓存中的表实例数量超过
table_definition_cache
限制,LRU 机制将开始标记表实例以便逐步删除它们。如果打开的表数量超过table_definition_cache
限制,可能是由于具有外键关系的表实例未被放入 LRU 列表。文件每表表空间的打开数量限制由
table_definition_cache
和innodb_open_files
设置共同确定。如果两个变量都被设置,则使用最高的设置。如果两个变量都未被设置,则使用table_definition_cache
设置,该设置具有较高的默认值。如果打开的表空间数量超过table_definition_cache
或innodb_open_files
限制,LRU 机制将搜索 LRU 列表以查找完全刷新且不再被扩展的表空间文件。该过程在每次打开新表空间时执行。只有不活动的表空间被关闭。表定义缓存与字典对象缓存的表定义缓存分区并行存在。两个缓存都存储表定义,但服务于 MySQL 服务器的不同部分。一个缓存中的对象不依赖于另一个缓存中的对象存在。有关更多信息,请参阅 第 16.4 节,“字典对象缓存”。
-
table_encryption_privilege_check
Command-Line Format --table-encryption-privilege-check[={OFF|ON}]
System Variable table_encryption_privilege_check
Scope Global Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
控制在创建或更改带有不同于
TABLE_ENCRYPTION_ADMIN
特权检查的模式或通用表空间时的加密设置,或者在创建或更改带有不同于默认模式加密的表时的加密设置。该检查默认情况下被禁用。在运行时设置
table_encryption_privilege_check
需要SUPER
特权。table_encryption_privilege_check
支持SET PERSIST
和SET PERSIST_ONLY
语法。见第 7.1.9.3 节,“Persisted System Variables”。有关更多信息,请参阅定义模式和通用表空间的加密默认值。
-
Command-Line Format --table-open-cache=#
System Variable table_open_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 4000
Minimum Value 1
Maximum Value 524288
所有线程的打开表的数量。增加该值将增加mysqld所需的文件描述符数量。该变量的有效值是
open_files_limit
- 10 -
的有效值和max_connections
/ 2
的最大值,且至少为 400;即MAX( (open_files_limit - 10 - max_connections) / 2, 400 )
您可以通过检查
Opened_tables
状态变量来检查是否需要增加表缓存。如果Opened_tables
的值很大且您不经常使用FLUSH TABLES
(这只是强制所有表关闭并重新打开),那么您应该增加table_open_cache
变量的值。有关表缓存的更多信息,请参阅第 10.4.3.1 节,“MySQL 如何打开和关闭表”。 -
Command-Line Format --table-open-cache-instances=#
System Variable table_open_cache_instances
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 16
Minimum Value 1
Maximum Value 64
打开表缓存实例的数量。为了通过减少会话之间的争用来提高可扩展性,打开表缓存可以被分区为多个较小的缓存实例,每个实例的大小为
table_open_cache
/table_open_cache_instances
。会话只需要锁定一个实例来访问它以进行 DML 语句。这将缓存访问分段到实例中,允许在有许多会话访问表时提高性能。(DDL 语句仍然需要锁定整个缓存,但这种语句非常少见。)在系统上使用16个或更多核心时,建议将其设置为8或16。然而,如果您在表上有许多大触发器,导致高内存负载,那么默认的
table_open_cache_instances
设置可能会导致过高的内存使用。在那种情况下,将table_open_cache_instances
设置为1,以限制内存使用。 -
Command-Line Format --tablespace-definition-cache=#
System Variable tablespace_definition_cache
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 256
Minimum Value 256
Maximum Value 524288
定义了表空间定义对象缓存中的对象数量限制,包括使用和未使用的对象。
未使用的表空间定义对象仅在使用中的对象数量少于tablespace_definition_cache定义的容量时保留在字典对象缓存中。
将tablespace_definition_cache设置为0意味着表空间定义对象仅在使用时保留在字典对象缓存中。
有关更多信息,请参阅第16.4节,“Dictionary Object Cache”。
-
Command-Line Format --temptable-max-mmap=#
System Variable temptable_max_mmap
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1073741824
Minimum Value 0
Maximum Value 2^64-1
Unit 字节 定义了TempTable存储引擎从内存映射临时文件中分配的最大内存量(以字节为单位),然后开始将数据存储到InnoDB内部临时表中。将其设置为0将禁用从内存映射临时文件中分配内存。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”。
-
Command-Line Format --temptable-max-ram=#
System Variable temptable_max_ram
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1073741824
Minimum Value 2097152
Maximum Value 2^64-1
Unit 字节 定义了TempTable存储引擎占用的最大内存量,然后开始将数据存储到磁盘上。默认值为1073741824字节(1GiB)。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”。
-
Command-Line Format --temptable-use-mmap[={OFF|ON}]
Deprecated 是 System Variable temptable_use_mmap
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
定义了TempTable存储引擎是否将内部内存临时表分配为内存映射临时文件,当TempTable存储引擎占用的内存量超过
temptable_max_ram
变量定义的限制时。禁用temptable_use_mmap
时,TempTable存储引擎将使用InnoDB磁盘内部临时表代替。有关更多信息,请参阅第10.4.4节,“Internal Temporary Table Use in MySQL”。 -
Command-Line Format --thread-cache-size=#
System Variable 线程缓存大小
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value -1
(表示自动调整大小,不要将其设置为该值)Minimum Value 0
Maximum Value 16384
服务器应该缓存多少个线程以便重用。当客户端断开连接时,如果缓存中少于
线程缓存大小
个线程,则将客户端的线程放入缓存中。请求线程时,如果可能,会从缓存中重用线程,只有当缓存为空时才创建新线程。这个变量可以增加以提高性能,如果您有很多新的连接。通常,如果您有一个好的线程实现,这不会提供明显的性能改进。然而,如果您的服务器每秒看到数百个连接,您应该将线程缓存大小
设置得足够高,以便大多数新的连接使用缓存的线程。通过检查Connections
和Threads_created
状态变量的差异,您可以看到线程缓存的效率。详见 第 7.1.10 节,“服务器状态变量”。默认值基于以下公式,限制在 100 以内:
8 + (max_connections / 100)
-
Command-Line Format --thread-handling=name
System Variable 线程处理
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 枚举 Default Value one-thread-per-connection
Valid Values no-threads
one-thread-per-connection
loaded-dynamically
服务器使用的线程处理模型。允许的值是
no-threads
(服务器使用单个线程来处理一个连接)、one-thread-per-connection
(服务器使用一个线程来处理每个客户端连接)和loaded-dynamically
(由线程池插件在初始化时设置)。no-threads
在 Linux 下用于调试;详见 第 7.9 节,“调试 MySQL”。 -
Command-Line Format --thread-pool-algorithm=#
System Variable 线程池算法
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 1
该变量控制线程池插件使用的算法:
-
0
:使用保守的低并发算法。 -
1
:使用激进的高并发算法,该算法在最佳线程数下性能更好,但如果连接数非常高,性能可能会下降。
该变量仅在线程池插件启用时可用。详见 第 7.6.3 节,“MySQL Enterprise 线程池”。
-
-
Command-Line Format --thread-pool-dedicated-listeners
System Variable 线程池专用监听器
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔 Default Value OFF
在每个线程组中专门分配一个监听器线程来监听来自分配给该组的连接的入站语句。
-
OFF
:(默认)禁用专用监听器线程。 -
ON
:在每个线程组中分配一个监听线程,以监听来自连接的入站语句。专用监听线程不执行查询。
仅当定义了事务限制
thread_pool_max_transactions_limit
时,启用thread_pool_dedicated_listeners
才是有用的。否则,不应启用thread_pool_dedicated_listeners
。MySQL HeatWave 服务使用此变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持 MySQL 8.3。
-
-
thread_pool_high_priority_connection
Command-Line Format --thread-pool-high-priority-connection=#
System Variable thread_pool_high_priority_connection
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 1
该变量影响语句的排队顺序。如果值为 0(false,默认值),语句排队使用低优先级和高优先级队列。如果值为 1(true),排队语句总是进入高优先级队列。
该变量仅在启用线程池插件时可用。请参阅 第 7.6.3 节,“MySQL Enterprise 线程池”。
-
thread_pool_max_active_query_threads
Command-Line Format --thread-pool-max-active-query-threads
System Variable thread_pool_max_active_query_threads
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 512
每个组的活动(运行)查询线程的最大允许数量。如果值为 0,线程池插件将使用所有可用的线程。
该变量仅在启用线程池插件时可用。请参阅 第 7.6.3 节,“MySQL Enterprise 线程池”。
-
thread_pool_max_transactions_limit
Command-Line Format --thread-pool-max-transactions-limit
System Variable thread_pool_max_transactions_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 1000000
线程池插件允许的最大事务数量。定义事务限制可以将线程绑定到事务直到提交,从而帮助在高并发情况下稳定吞吐量。
默认值为 0,表示没有事务限制。该变量是动态的,但不能在运行时从 0 更改为更高的值,反之亦然。非零值在启动时允许动态配置在运行时。
CONNECTION_ADMIN
权限是配置thread_pool_max_transactions_limit
在运行时所需的。当您定义事务限制时,启用
thread_pool_dedicated_listeners
将在每个线程组中创建一个专用监听线程。额外的专用监听线程将消耗更多资源并影响线程池性能。thread_pool_dedicated_listeners
应该谨慎使用。当达到
thread_pool_max_transactions_limit
定义的限制时,新的连接似乎会hang,直到一个或多个现有的事务完成。同样,当尝试在现有的连接上启动新事务时,也会发生这种情况。如果现有的连接被阻止或长时间运行,可能需要特权连接来访问服务器,以增加限制、删除限制或杀死正在运行的事务。请参阅特权连接。MySQL HeatWave 服务使用这个变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持 MySQL 8.3。
-
thread_pool_max_unused_threads
Command-Line Format --thread-pool-max-unused-threads=#
System Variable thread_pool_max_unused_threads
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 4096
线程池中未使用线程的最大允许数量。此变量使得可以限制睡眠线程使用的内存量。
值为 0(默认)表示没有睡眠线程的限制。值为
N
,其中N
大于 0,表示 1 个消费者线程和N
-1 个备用线程。在这种情况下,如果线程准备睡眠但睡眠线程的数量已经达到最大值,则线程退出而不是睡眠。睡眠线程要么是消费者线程,要么是备用线程。线程池允许一个线程作为消费者线程睡眠。如果线程睡眠并且没有现有的消费者线程,它睡眠作为消费者线程。当需要唤醒线程时,选择消费者线程,如果没有消费者线程,则选择备用线程。
该变量仅在启用线程池插件时可用。请参阅第 7.6.3 节,“MySQL Enterprise Thread Pool”。
-
Command-Line Format --thread-pool-prio-kickup-timer=#
System Variable thread_pool_prio_kickup_timer
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1000
Minimum Value 0
Maximum Value 4294967294
Unit 毫秒 该变量影响等待执行的语句队列中的语句。该值是等待语句被移到高优先级队列前的毫秒数。默认值为 1000(1 秒)。
该变量仅在启用线程池插件时可用。请参阅第 7.6.3 节,“MySQL Enterprise Thread Pool”。
-
thread_pool_query_threads_per_group
Command-Line Format --thread-pool-query-threads-per-group
System Variable thread_pool_query_threads_per_group
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 1
Minimum Value 1
Maximum Value 4096
每个线程组中允许的查询线程的最大数量。最大值为 4096,但如果
thread_pool_max_transactions_limit
被设置,则thread_pool_query_threads_per_group
不得超过该值。默认值为 1,表示每个线程组中只有一个活动查询线程,这适合许多负载。当使用高并发线程池算法(
thread_pool_algorithm = 1
)时,如果您遇到较慢的响应时间由于长时间运行的事务,可能需要增加该值。需要
CONNECTION_ADMIN
权限来配置thread_pool_query_threads_per_group
在运行时。如果您在运行时减少
thread_pool_query_threads_per_group
的值,当前正在运行用户查询的线程将被允许完成,然后移到备用池或终止。如果您在运行时增加该值,并且线程组需要更多线程,那么这些线程将从备用池中获取,如果可能,否则将创建新的线程。MySQL HeatWave 服务使用这个变量,该变量仅在 MySQL Enterprise Edition 中可用,不支持 MySQL 8.3。
-
Command-Line Format --thread-pool-size=#
System Variable thread_pool_size
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 16
Minimum Value 1
Maximum Value 512
线程池中的线程组数。这是控制线程池性能的最重要参数。它影响可以同时执行的语句数量。如果指定的值超出允许的范围,线程池插件将不会加载,并且服务器将写入错误日志。
该变量仅在 thread pool 插件启用时可用。见 第 7.6.3 节,“MySQL Enterprise 线程池”。
-
Command-Line Format --thread-pool-stall-limit=#
System Variable thread_pool_stall_limit
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 6
Minimum Value 4
Maximum Value 600
Unit 毫秒 * 10 该变量影响执行语句。该值是语句开始执行后被定义为停滞的时间量,在此时间后,线程池允许线程组开始执行另一个语句。该值以 10 毫秒为单位,因此默认值 6 表示 60ms。短等待值允许线程更快启动。短值也更好地避免了死锁情况。长等待值对包含长时间运行语句的工作负载非常有用,以避免启动太多新的语句,而当前语句正在执行。
该变量仅在 thread pool 插件启用时可用。见 第 7.6.3 节,“MySQL Enterprise 线程池”。
-
Command-Line Format --thread-pool-transaction-delay
System Variable thread_pool_transaction_delay
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 0
Minimum Value 0
Maximum Value 300000
执行新事务前的延迟期限,以毫秒为单位。最大值为 300000(5 分钟)。
事务延迟可以在并行事务影响其他操作的性能时使用。例如,如果并行事务影响索引创建或在线缓冲池调整操作,可以配置事务延迟以减少资源争用。
工作线程在执行新事务前将睡眠指定的毫秒数。
thread_pool_transaction_delay
设置不影响来自特权连接(分配给Admin
线程组)的查询。这些查询不受配置的事务延迟的影响。 -
Command-Line Format --thread-stack=#
System Variable thread_stack
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 整数 Default Value 1048576
Minimum Value 131072
Maximum Value (64-bit platforms) 18446744073709550592
Maximum Value (32-bit platforms) 4294966272
Unit 字节 Block Size 1024
每个线程的堆栈大小。默认值足够正常操作。如果线程堆栈大小太小,将限制服务器可以处理的 SQL 语句的复杂性、存储过程的递归深度和其他内存消耗的操作。
-
System Variable time_zone
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 字符串 Default Value SYSTEM
Minimum Value -13:59
Maximum Value +14:00
当前时区。此变量用于初始化每个客户端的时区。默认情况下,初始值为
'SYSTEM'
(这意味着,使用 “使用system_time_zone
的值”)。可以在服务器启动时使用--default-time-zone
选项指定值。请参阅 第 7.1.15 节,“MySQL 服务器时区支持”。Note如果设置为
SYSTEM
,每个 MySQL 函数调用都需要时区计算,会调用系统库来确定当前系统时区。这可能会导致全局互斥锁争用。 -
System Variable timestamp
Scope 会话 Dynamic 是 SET_VAR
Hint Applies是 Type 数字 Default Value UNIX_TIMESTAMP()
Minimum Value 1
Maximum Value 2147483647
设置客户端的时间。用于从二进制日志还原行时获取原始时间戳。
timestamp_value
应该是一个 Unix 纪元时间戳(类似于UNIX_TIMESTAMP()
返回的值,而不是'
格式)或YYYY-MM-DD hh:mm:ss
'DEFAULT
。将
timestamp
设置为常量值将使其保持该值,直到再次更改。将timestamp
设置为DEFAULT
将使其值为当前日期和时间。timestamp
是一个DOUBLE
而不是BIGINT
,因为其值包括微秒部分。最大值对应于'2038-01-19 03:14:07'
UTC,同TIMESTAMP
数据类型相同。SET timestamp
影响NOW()
的返回值,但不影响SYSDATE()
的返回值。这意味着二进制日志中的时间戳设置不影响SYSDATE()
的调用。可以使用--sysdate-is-now
选项启动服务器,以使SYSDATE()
成为NOW()
的同义词,在这种情况下,SET timestamp
将影响这两个函数。 -
tls_certificates_enforced_validation
Command-Line Format --tls-certificates-enforced-validation[={OFF|ON}]
System Variable tls_certificates_enforced_validation
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 布尔值 Default Value 关闭
在启动期间,服务器确保每个所需的SSL证书文件的位置在默认数据目录中,如果文件位置没有在命令行上指定。然而,服务器不验证证书文件,因此可以在启动时使用无效的证书。
tls_certificates_enforced_validation
系统变量控制是否在启动时强制证书验证。如果启用了验证强制,发现无效证书将停止启动执行。默认情况下,证书验证强制是禁用(关闭
)。可以通过在命令行上指定
--tls-certificates-enforced-validation
选项启用验证强制,带或不带ON
值。当启用验证强制时,证书也将在通过ALTER INSTANCE RELOAD TLS
语句重新加载时进行验证。此系统变量不能在重新启动后持久化。有关更多信息,请参阅配置证书验证强制。 -
Command-Line Format --tls-ciphersuites=ciphersuite_list
System Variable tls_ciphersuites
Scope 全局 Dynamic 是 SET_VAR
Hint Applies否 Type 字符串 Default Value NULL
服务器允许用于TLSv1.3加密连接的密码套件列表。该值是一个或多个以冒号分隔的密码套件名称。
可以命名的密码套件取决于编译MySQL时使用的SSL库。如果未设置该变量,其默认值为
NULL第8.3.2节,“加密连接TLS协议和密码”。
-
Command-Line Format --tls-version=protocol_list
System Variable tls_version
Scope 全局
Dynamic 是
SET_VAR
Hint Applies否
Type 字符串
Default Value TLSv1.2,TLSv1.3
服务器允许用于加密连接的协议列表。该值是一个或多个以逗号分隔的协议名称,不区分大小写。可以命名的协议取决于编译MySQL时使用的SSL库。选择的协议不应留下“漏洞”在列表中。有关详细信息,请参阅第8.3.2节,“加密连接TLS协议和密码”。
可以在运行时修改该变量,以影响服务器用于新连接的TLS上下文。请参阅服务器端运行时配置和监控加密连接。
Important-
MySQL 8.3不支持TLSv1和TLSv1.1连接协议。请参阅删除对TLSv1和TLSv1.1协议的支持以获取更多信息。
-
在MySQL 8.3中,提供了TLSv1.3协议的支持,前提是MySQL Server使用OpenSSL 1.1.1或更高版本编译。如果OpenSSL版本低于1.1.1,TLSv1.3将从默认值中删除。在这种情况下,默认值为
TLSv1.2
。
-
-
Command-Line Format --tmp-table-size=#
System Variable tmp_table_size
Scope 全局、会话
Dynamic 是
SET_VAR
Hint Applies是
Type 整数
Default Value 16777216
Minimum Value 1024
Maximum Value 18446744073709551615
Unit 字节
定义了内部内存临时表的最大大小,由
MEMORY
和TempTable
存储引擎创建。如果内部内存临时表超过此大小,它将自动转换为磁盘内部临时表。变量
tmp_table_size
不适用于用户创建的MEMORY
表。用户创建的TempTable
表不受支持。使用
MEMORY
存储引擎时,实际大小限制是tmp_table_size
和max_heap_table_size
的较小值。max_heap_table_size
设置不适用于TempTable
表。如果您执行了许多高级的
GROUP BY
查询,并且您有很多内存,那么增加tmp_table_size
的值(如果必要,增加max_heap_table_size
的值)。您可以通过比较
Created_tmp_disk_tables
和Created_tmp_tables
值来比较内部磁盘临时表的数量和内部临时表的总数量。 -
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
变量为副本设置不同的临时目录。有关临时文件的存储位置的更多信息,请参见B.3.3.5 节,“MySQL 存储临时文件的位置”。
-
Command-Line Format --transaction-alloc-block-size=#
System Variable transaction_alloc_block_size
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 8192
Minimum Value 1024
Maximum Value 131072
Unit 字节 Block Size 1024
每个事务内存池需要增加的字节数。请参见
transaction_prealloc_size
的描述。 -
Command-Line Format --事务隔离级别=name
System Variable 事务隔离级别
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 枚举 Default Value 可重复读
Valid Values 未提交读
已提交读
可重复读
可串行化
事务隔离级别。默认是
可重复读
。事务隔离级别有三个作用域:全局、会话和下一个事务。这三个作用域的实现导致了一些非标准的隔离级别赋值语义,如后面所述。
要在启动时设置全局事务隔离级别,请使用
--事务隔离
服务器选项。在运行时,可以使用
SET
语句将值分配给事务隔离
系统变量,或者使用SET TRANSACTION
语句。如果您直接将事务隔离
设置为包含空格的隔离级别名称,则名称应该用引号括起来,并将空格替换为破折号。例如,使用以下SET
语句设置全局值:SET GLOBAL transaction_isolation = 'READ-COMMITTED';
设置全局
事务隔离
值将设置所有后续会话的隔离级别。现有会话不受影响。要设置会话或下一个事务的
事务隔离
值,请使用SET
语句。大多数会话系统变量的这些语句是等效的方式来设置值:SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如前所述,事务隔离级别有三个作用域:全局、会话和下一个事务。
SET
语句的语义对于事务隔离
不是标准的:-
要设置会话隔离级别,请使用任何以下语法:
SET @@SESSION.transaction_isolation = value; SET SESSION transaction_isolation = value; SET transaction_isolation = value;
对于这些语法,这些语义适用:
-
设置会话中的所有后续事务的隔离级别。
-
在事务中允许,但不影响当前正在进行的事务。
-
如果在事务之间执行,覆盖任何前一个设置下一个事务隔离级别的语句。
-
对应于
SET SESSION TRANSACTION ISOLATION LEVEL
(带有SESSION
关键字)。
-
-
要设置下一个事务的隔离级别,请使用以下语法:
SET @@transaction_isolation = value;
对于该语法,这些语义适用:
-
仅设置会话中的下一个单个事务的隔离级别。
-
后续事务将恢复到会话隔离级别。
-
不允许在事务中。
-
对应于
SET TRANSACTION ISOLATION LEVEL
(不带SESSION
关键字)。
-
有关
SET TRANSACTION
和其与事务隔离
系统变量的关系,请参阅 第 15.3.7 节,“SET TRANSACTION 语句”。 -
-
Command-Line Format --事务预分配大小=#
Deprecated 是 System Variable 事务预分配大小
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 4096
Minimum Value 1024
Maximum Value 131072
Unit 字节 Block Size 1024
每个事务都有一个内存池,用于各种事务相关的分配内存。池的初始大小是
事务预分配大小
字节。对于每个无法从池中满足的分配,因为池中没有足够的内存,池将增加事务分配块大小
字节。当事务结束时,池将被截断到事务预分配大小
字节。通过使事务预分配大小
足够大以容纳单个事务中的所有语句,可以避免许多malloc()
调用。事务预分配大小
已弃用,不再对其进行设置。 -
Command-Line Format --事务只读[={OFF|ON}]
System Variable 事务只读
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value OFF
事务访问模式。值可以是
OFF
(读写;默认)或ON
(只读)。事务访问模式有三个作用域:全局、会话和下一个事务。这三个作用域的实现导致了一些非标准的访问模式赋值语义,如后面所述。
要在启动时设置全局事务访问模式,使用
--事务只读
服务器选项。在运行时,可以使用
SET
语句直接设置事务只读
系统变量的值,或者使用SET TRANSACTION
语句间接设置。SET GLOBAL transaction_read_only = ON;
设置全局
事务只读
值将设置所有后续会话的访问模式。现有会话不受影响。SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如前所述,事务访问模式有三个作用域:全局、会话和下一个事务。
-
要设置会话访问模式,使用以下语法:
SET @@SESSION.transaction_read_only = value; SET SESSION transaction_read_only = value; SET transaction_read_only = value;
对于每个语法,这些语义适用:
-
设置所有后续事务的访问模式。
-
在事务中允许,但不影响当前事务。
-
如果在事务之间执行,覆盖任何前一个设置下一个事务访问模式的语句。
-
对应于
SET SESSION TRANSACTION {READ WRITE | READ ONLY}
(带有SESSION
关键字)。
-
-
要设置下一个事务的访问模式,使用以下语法:
SET @@transaction_read_only = value;
对于该语法,这些语义适用:
-
仅设置下一个事务的访问模式。
-
后续事务将恢复到会话访问模式。
-
不允许在事务中使用。
-
对应于
SET TRANSACTION {READ WRITE | READ ONLY}
(不包括SESSION
关键字)。
-
有关
SET TRANSACTION
及其与transaction_read_only
系统变量的关系,请参阅 第 15.3.7 节,“SET TRANSACTION 语句”。 -
-
System Variable unique_checks
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value ON
如果设置为 1(默认值),则在
InnoDB
表中执行唯一性检查。如果设置为 0,存储引擎可以假设输入数据中没有唯一性违规。如果您确定您的数据不包含唯一性违规,可以将其设置为 0,以加速大型表的导入到InnoDB
。将该变量设置为 0 不会 要求 存储引擎忽略重复键。引擎仍然可以检查重复键并在检测到时发出重复键错误。
-
Command-Line Format --updatable-views-with-limit[={OFF|ON}]
System Variable updatable_views_with_limit
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value 1
该变量控制是否可以在视图中执行更新操作,即使视图不包含基本表的所有列,如果更新语句包含
LIMIT
子句。(这种更新通常是由 GUI 工具生成的。)更新是指UPDATE
或DELETE
语句。这里的主键是指PRIMARY KEY
,或一个UNIQUE
索引,其中没有列可以包含NULL
。该变量可以有两个值:
-
1
或YES
:仅发出警告(而不是错误消息)。这是默认值。 -
0
或NO
:禁止更新。
-
-
System Variable use_secondary_engine
Scope 会话 Dynamic 是 SET_VAR
Hint Applies是 Type 枚举 Default Value ON
Valid Values OFF
ON
FORCED
未来使用。
是否执行查询使用辅助引擎。
用于 HeatWave。请参阅 MySQL HeatWave 用户指南。
-
validate_password.
xxx
validate_password 组件实现了一组系统变量,名称形式为
validate_password.
。这些变量影响密码测试;请参阅 第 8.4.3.2 节,“密码验证选项和变量”。xxx
-
服务器的版本号。该值可能还包括服务器构建或配置信息的后缀。
-debug
表示服务器是带有调试支持构建的。 -
System Variable version_comment
Scope 全局 Dynamic 否 SET_VAR
Hint Applies否 Type 字符串 CMake 配置程序具有一个
COMPILATION_COMMENT_SERVER
选项,允许在构建 MySQL 时指定注释。该变量包含该注释的值。 -
服务器二进制文件的类型。
-
MySQL 构建时的操作系统类型。
-
编译时使用的 zlib 库版本。
-
Command-Line Format --wait-timeout=#
System Variable 等待超时
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 整数 Default Value 28800
Minimum Value 1
Maximum Value (Windows) 2147483
Maximum Value (Other) 31536000
Unit 秒 服务器在非交互式连接上等待活动的秒数,然后关闭连接。
在线程启动时,会话
等待超时
值将从全局等待超时
值或全局交互超时
值初始化,具体取决于客户端类型(由CLIENT_INTERACTIVE
连接选项到mysql_real_connect()
定义)。见交互超时
。 -
最后一条语句生成的错误、警告和注意的数量。该变量是只读的。见 第 15.7.7.44 节,“SHOW WARNINGS 语句”。
-
Command-Line Format --windowing-use-high-precision[={OFF|ON}]
System Variable 窗口使用高精度
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies是 Type 布尔值 Default Value ON
是否在窗口操作中计算高精度。见 第 10.2.1.21 节,“窗口函数优化”。
-
Command-Line Format --xa-detach-on-prepare[={OFF|ON}]
System Variable XA 分离准备
Scope 全局、会话 Dynamic 是 SET_VAR
Hint Applies否 Type 布尔值 Default Value ON
当设置为
ON
(启用)时,所有XA事务将从连接(会话)中断开(断开)作为XA PREPARE
的一部分。这意味着XA事务可以由另一个连接提交或回滚,即使原始连接尚未终止,并且该连接可以启动新事务。临时表不能在断开的XA事务中使用。
当它被设置为
OFF
(禁用)时,XA事务将严格关联到同一个连接,直到会话断开。建议您允许它被启用(默认行为)以便复制。有关更多信息,请参阅 第 15.3.8.2 节,“XA事务状态”。