mysql variables(1)

activate_all_roles_on_login

属性
系统变量activate_all_roles_on_login
范围Global
动态yes
类型Boolean
默认值OFF
引入版本mysql 8.0.2
  • 此参数在版本8.0.2引入,是一个可以动态调整的global级参数,默认值为OFF。此参数用于控制在账户登录时是否激活已经授予的角色,如果为ON则授予的角色会被激活,设置为OFF时只能通过SET DEFAULT ROLE显式激活用户角色。activate_all_roles_on_login设置只在账户登录或者开始执行存储过程时生效,如果想更改session的role需要执行SET ROLE语句。
  • 当用户登录到服务器时,是否启用所有已授权角色的自动激活:
    如果激活activate_all_roles_on_login,服务器将在登录时激活授予每个帐户的所有角色。这优先于使用SET default角色指定的默认角色。
  • 如果activate_all_roles_on_login被禁用,服务器将在登录时使用SET default ROLE(如果有的话)激活指定的默认角色。
  • 被授予的角色包括显式授予用户的角色和在mandatory_roles系统变量值中命名的角色。
  • activate_all_roles_on_login仅适用于登录时,以及在definer上下文中执行的存储程序和视图的执行开始时。要更改会话中的活动角色,请使用SET角色。若要更改存储程序的活动角色,程序主体应执行SET角色。

admin_address

属性
系统变量admin_address
范围Global
动态no
类型string
引入版本mysql 8.0.14

要绑定到管理网络接口上的连接的IP地址
如果指定,值必须满足以下要求:
值必须是单个IPv4地址、IPv6地址或主机名。
该值不能指定通配符地址格式 (*, 0.0.0.0, or :?。
如果该值是主机名,服务器将该名称解析为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连接。
    如果绑定到该地址失败,服务器将产生一个错误,并且不会启动。
    没有默认的admin_address值。如果在启动时没有指定值,服务器将不维护管理接口。
    admin_address系统变量类似于 --bind-address选项,该选项将服务器绑定到普通客户机连接的地址,但有以下不同之处:
    admin_address允许单个地址。 --bind-address允许多个地址。
    admin_address不允许通配符地址。 --bind-address允许通配符地址。

admin_port

属性
系统变量admin_port
范围Global
动态no
类型Integer
引入版本mysql 8.0.14
默认值33062
最小值0
最大值65535

用于管理网络接口上的连接的TCP/IP端口号,将此变量设置为0将使用默认值。
如果没有指定admin_address,则设置admin_port无效,因为在这种情况下,服务器不维护管理网络接口

authentication_windows_log_level

属性
系统变量authentication_windows_log_level
范围Global
动态no
类型Integer
引入版本mysql 8.0.11
默认值2
最小值0
最大值4

此变量仅在authentication_windows身份验证插件已启用且调试代码已启用时可用
这个变量设置Windows身份验证插件的日志级别。下表显示了允许的值。

描述
0无日志
1只有error日志
2level1+warning日志
3level2+note日志
4level3+debug日志

authentication_windows_use_principal_name

属性
系统变量authentication_windows_use_principal_name
范围Global
动态no
类型Boolean
引入版本mysql 8.0.11
默认值ON

此变量仅在authentication_windows Windows身份验证插件启用时可用

  • 使用initsecurityContext()函数进行身份验证的客户机应提供一个字符串,用于标识与其连接的服务(targetname)。MySQL使用运行服务器的帐户的主体名称(UPN)。UPN的格式为user_id@computer_name,无需在任何地方注册即可使用。此UPN由服务器在身份验证握手开始时发送。
  • 此变量控制服务器是否在初始质询中发送UPN。默认情况下,变量处于启用状态。出于安全原因,可以禁用它,以避免以明文形式将服务器的帐户名发送到客户端。如果变量被禁用,服务器在第一个质询中总是发送一个0x00字节,客户机不指定targetname,因此使用NTLM身份验证。
  • 如果服务器无法获取其UPN(这主要发生在不支持Kerberos身份验证的环境中),则服务器不会发送UPN,并使用NTLM身份验证。

auto_increment_increment / auto_increment_offset

属性
系统变量auto_increment_increment/auto_increment_offset
范围Global, Session
动态yes
类型int
默认值1
最小值1
最大值65535
  • auto_increment_increment和auto_increment_offset用于主-主复制,可用于控制AUTO_INCREMENT列的操作。
  • 这两个变量都有全局值和会话值,并且每个变量都可以假设包含1到65,535之间的整数值。将这两个变量中的任何一个的值设置为0都会导致将其值设置为1。如果试图将这两个变量中的任何一个的值设置为大于65,535或小于0的整数,则会导致将其值设置为65,535。
  • 尝试将auto_increment_increment或auto_increment_offset的值设置为非整数值会产生错误,变量的实际值保持不变。
  • 在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。
  • auto_increment_increment也支持与NDB表一起使用。
  • auto_increment_increment控制连续列值之间的间隔。
  • auto_increment_offset确定AUTO_INCREMENT列值的起点。
  • 当auto_increment_offset的值大于auto_increment_increment的值时,将忽略auto_increment_offset的值。
  • 如果这两个变量被改变后,再次向AUTO_INCREMENT列插入,那么此时的值应该大于最大AUTO_INCREMENT列中的现有值,初始值应为 auto_increment_offset + N × auto_increment_increment 其中N为级数[1,2,3,…]中的正整数。
    在这里插入图片描述
    auto_increment_increment和auto_increment_offset显示的值生成系列5 + N×10,也就是说[5, 15, 25, 35, 45, …]。在插入之前,col列中的最大值为31,AUTO_INCREMENT系列中的下一个可用值为35,因此,为col插入的值从该点开始,结果如SELECT查询所示。
  • 不可能将这两个变量的影响限制在一个表中 ;这些变量控制MySQL服务器上所有表中所有AUTO_INCREMENT列的行为。如果设置了这两个变量的全局值,则其效果将持续到通过设置会话值更改或覆盖全局值,或重新启动mysqld为止。如果设置了本地值,则新值将影响当前用户在会话期间插入新行到的所有表的AUTO_INCREMENT列,除非在会话期间更改了这些值。

autocommit

  • 在InnoDB中,所有的用户活动都发生在事务内部。 如果启用了autocommit模式,则每个SQL语句单独形成一个事务 。默认情况下,MySQL为每个启用autocommit的新连接启动会话,因此如果每个SQL语句没有返回错误, MySQL会在每个SQL语句之后执行一次commit 。如果语句返回错误,则提交或回滚行为取决于错误类型。
  • 启用autocommit的会话可以执行多语句事务,方法是使用显式的START事务或BEGIN语句启动它,然后使用COMMIT或ROLLBACK语句结束它。
  • 如果使用autocommit = 0 禁用autocommit模式,那么该会话始终打开一个事务。只有COMMIT或ROLLBACK语句能够结束当前事务,并自动启动下一个新事务。
  • 如果禁用autocommit的会话在没有显式提交最终事务的情况下结束,MySQL将回滚该事务。
  • 有些语句隐式地结束事务,就像在执行语句之前执行了commit
    详见:

https://blog.csdn.net/m0_37827567/article/details/86491962

  • commit意味着在当前事务中所做的更改是永久性的,并且对其他会话可见。另一方面,ROLLBACK语句取消当前事务所做的所有修改。提交和回滚都释放当前事务期间设置的所有InnoDB锁。
  • 默认情况下,到MySQL服务器的连接从启用autocommit模式开始,该模式在执行时自动提交每个SQL语句。如果您有使用其他数据库系统的经验,您可能不熟悉这种操作模式,在其他数据库系统中,标准的做法是发出一系列DML语句并将它们提交或一起回滚。
  • 要使用多语句事务,请使用SQL语句SET autocommit = 0关闭autocommit,并在适当的情况下使用commit或rollback结束每个事务。若要保留autocommit,请以START TRANSACTION开始每个事务,以COMMIT或ROLLBACK结束事务。

automatic_sp_privileges

属性
系统变量automatic_sp_privileges
范围Global
动态yes
类型Boolean
默认值true

如果用户有create routine 权限那么他就可以创建procedure | function 。
当automatic_sp_privileges=1时
如果用户创建了procedure | function 那么mysql 会自动赋予它对procedure | function 的alter routine和execute 权限。
当例程(procedure | function)被删除时,服务器还会自动从创建者那里删除这些特权
在这里插入图片描述

  • automatic_sp_privileges为0,服务器不会自动添加或删除这些特权。
  • 例程的创建者是用于执行该例程的CREATE语句的帐户

avoid_temporal_upgrade

属性
弃用yes
系统变量avoid_temporal_upgrade
范围Global
动态yes
类型Boolean
默认值OFF

此变量已弃用,将在未来的MySQL版本中删除。

auto_generate_certs

属性
系统变量auto_generate_certs
范围Global
动态NO
类型Boolean
默认值ON
  • 如果服务器使用OpenSSL编译,则可以使用此变量(请参见6.4.4节“OpenSSL与wolfSSL的比较”)。它控制服务器是否在数据目录中自动生成SSL密钥和证书文件(如果它们还不存在的话)。
  • 在启动时,如果auto_generate_certs系统变量被启用,服务器将自动在数据目录中生成服务器端和客户端SSL证书以及密钥文件 ,没有指定除–ssl之外的ssl选项并且数据目录中缺少服务器端的SSL文件 ,这些文件将使用SSL启用安全客户机连接。

back_log

属性
系统变量back_log
范围Global
动态no
类型int
默认值-1(表示自动调整大小;不分配此文本值)
最小值1
最大值65535
  • back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。
  • MySQL可以有未完成连接请求的数量。当主MySQL线程在很短的时间内收到非常多的连接请求时,就会出现这种情况。然后,主线程需要一些时间(尽管很少)来检查连接并启动一个新线程。back_log值表示在MySQL暂时停止响应新请求之前的这段短时间内可以堆叠多少个请求。只有当您希望在短时间内有大量连接时,才需要增加这个值。
  • 换句话说,这个值是传入TCP/IP连接的监听队列的大小。您的操作系统对这个队列的大小有自己的限制。Unix listen()系统调用的手册页应该有更多详细信息。请检查您的OS文档,以获取该变量的最大值。不能将back_log设置为高于操作系统限制的值。
  • 默认值是max_connections的值,它允许backlog调整到最大允许连接数。
  • 查看当前系统的TCP/IP连接的侦听队列的大小命令:cat /proc/sys/net/ipv4/tcp_max_syn_backlog,目前系统为1024。对于Linux系统推荐设置为大于512的整数
  • 修改系统内核参数,可以编辑/etc/sysctl.conf去调整它。如:net.ipv4.tcp_max_syn_backlog = 2048,改完后执行sysctl -p 让修改立即生效。

basedir

属性
系统变量basedir
范围Global
动态no
类型目录
默认值 (>= 8.0.2)mysqld安装目录的父目录
默认值 (<= 8.0.1)mysql配置文件
  • MySQL安装基本目录的路径。

big_tables

属性
系统变量big_tables
范围Global, Session
动态yes
类型Boolean
默认值OFF

如果设置为1,则所有的临时表不会在内存中存储,而是在磁盘上。明显这会影响性能。 正常来说,不需要改变默认值,mysql会自动识别是否需要磁盘空间

bind_address

属性
系统变量bind_address
范围Global
动态no
类型string
默认值*

bind-address后面增加远程访问IP地址或者使用默认值就可以让远程机登陆访问了。

block_encryption_mode

属性
系统变量block_encryption_mode
范围Global, Session
动态Yes
类型string
默认值aes-128-ecb
  • 此变量控制基于块的算法(如AES)的块加密模式。它影响AES_ENCRYPT()和AES_DECRYPT()的加密。
  • block_encryption_mode接受aes-keylen-mode格式的值,其中keylen是位的密钥长度,mode是加密模式。该值不区分大小写。允许的keylen值是128、192和256。允许的加密模式取决于MySQL是使用OpenSSL还是wolfSSL编译的:
  • 对于OpenSSL,允许的模式值为:ECB、CBC、CFB1、CFB8、CFB128、OFB
  • 对于wolfSSL,允许的模式值为:ECB, CBC
  • 例如,该语句导致AES加密函数使用256位密钥长度和CBC模式:
SET block_encryption_mode = 'aes-256-cbc';
  • 将block_encryption_mode设置为包含不受支持的密钥长度或SSL库不支持的模式的值时,将发生错误。
  • 特别需要注意的时mysql5.5及以下的版本仅支持aes-128-ecb模式,如果需要其它模式需要mysql5.6及以上版本才支持

bulk_insert_buffer_size

属性
系统变量bulk_insert_buffer_size
范围Global, Session
动态Yes
类型Integer
默认值8388608
最小值0
最大值(64位平台)18446744073709551615
最大值(32位平台)4294967295
  • MyISAM使用一种特殊的树状缓存使批量插入更快,默认值是8MB
  • 和key_buffer_size一样,这个参数同样也仅作用于使用 MyISAM存储引擎,用来缓存批量插入数据的时候临时缓存写入数据。当我们使用如下几种数据写入语句的时候,会使用这个内存区域来缓存批量结构的数据以帮助批量写入数据文件:
    INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., and LOAD DATA

caching_sha2_password_auto_generate_rsa_keys

属性
系统变量caching_sha2_password_auto_generate_rsa_keys
范围Global
动态no
类型Boolean
默认值on
引入8.0.4
  • 如果服务器使用OpenSSL编译,则此变量可用。服务器使用它来决定是否在数据目录中自动生成RSA私有/公共密钥对文件(如果它们不存在的话)。
  • 在启动时,如果所有这些条件都为真,服务器将自动在数据目录中生成RSA私有/公共密钥对文件:
    • sha256_password_auto_generate_rsa_keys或caching_sha2_password_auto_generate_rsa_keys系统变量被启用;
    • 没有指定RSA选项;数据目录中缺少RSA文件。
    • 这些密钥对文件为通过sha256_password或caching_sha2_password插件验证的帐户启用RSA在未加密连接上的安全密码交换;

caching_sha2_password_private_key_path

属性
系统变量caching_sha2_password_private_key_path
范围Global
动态no
类型文件目录
默认值private_key.pem
引入8.0.3
  • 此变量指定caching_sha2_password身份验证插件的RSA私钥文件的路径名。如果文件被命名为相对路径,那么它将相对于服务器数据目录进行解释。文件必须是PEM格式。
  • 因为这个文件存储私钥,所以它的访问模式应该受到限制,这样只有MySQL服务器才能读取它。

aching_sha2_password_public_key_path

属性
系统变量aching_sha2_password_public_key_path
范围Global
动态no
类型文件目录
默认值public_key.pem
引入8.0.3

此变量指定caching_sha2_password身份验证插件的RSA公钥文件的路径名。如果文件被命名为相对路径,那么它将相对于服务器数据目录进行解释。文件必须是PEM格式。

character_set_client

属性
系统变量character_set_client
范围Global, Session
动态Yes
类型String
默认值(>= 8.0.1)utf8mb4
默认值 (8.0.0)utf8
  • 来自客户端的语句的字符集。当客户端连接到服务器时,使用客户端请求的字符集设置此变量的会话值。
  • 变量的全局值用于在客户机请求的值未知或不可用或服务器被配置为忽略客户机请求的情况下设置会话值:
    • 客户机请求服务器不知道的字符集。例如,当连接到未配置sjis支持的服务器时,支持日语的客户机请求sjis。
    • 客户端来自MySQL 4.1以上版本,因此不请求字符集。
    • mysqld以–skip-character-set-client-handshake选项启动,该选项导致它忽略客户机字符集配置。这将复制MySQL 4.0的行为,如果您希望在不升级所有客户机的情况下升级服务器,这将非常有用。
  • 有些字符集不能用作客户端字符集。尝试将它们用作character_set_client值会产生错误。
  • 在这里插入图片描述

character_set_connection

属性
系统变量character_set_connection
范围Global, Session
动态Yes
类型String
默认值(>= 8.0.1)utf8mb4
默认值 (8.0.0)utf8
  • 用于在没有字符集引导器的情况下指定的文本以及用于数字到字符串转换的字符集。
  • 连接使用的编码

character_set_database

属性
系统变量character_set_database
范围Global, Session
动态Yes
类型String
默认值(>= 8.0.1)utf8mb4
默认值 (8.0.0)latin1
备注此选项是动态的,但只有服务器应该设置此信息。您不应该手动设置此变量的值。
  • 默认数据库使用的字符集。每当默认数据库发生更改时,服务器都会设置此变量。如果没有默认数据库,则变量的值与character_set_server相同。
  • 在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量
  • 全局character_set_database和collation_database系统变量已被弃用,将在MySQL的未来版本中删除。
  • 为会话character_set_database和collation_database系统变量赋值是不赞成的,赋值会产生警告。在MySQL的未来版本中,会话变量将成为只读变量,分配将产生错误。仍然可以访问会话变量来确定默认数据库的数据库字符集和排序规则。

character_set_filesystem

属性
系统变量character_set_filesystem
范围Global, Session
动态Yes
类型String
默认值binary
  • 文件系统字符集,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。
  • 此变量用于解释有关于文件名的字符串,例如在LOAD DATA、SELECT … INTO OUTFILE语句 或LOAD_FILE()函数中。这样的文件名会在文件尝试打开之前从character_set_client转换为character_set_filesystem。
  • 默认值为binary,这意味着不会发生转换。
  • 对于允许使用多字节文件名的系统,不同的值可能更合适。例如,如果系统使用utf-8来体现文件名,请将character_set_filesystem设置为“utf8mb4”。
  • 从mysql 8.0.14开始,设置这个系统变量的会话值是一个受限操作。会话用户必须具有足够的权限来设置受限制的会话变量。

character_set_results

属性
系统变量character_set_results
范围Global, Session
动态Yes
类型String
默认值 (>= 8.0.1)utf8mb4
默认值(8.0.0)utf8
  • 用于将查询结果返回到客户端的字符集。这包括结果数据(如列值)、结果元数据(如列名称)和错误消息。

character_set_server

属性
系统变量character_set_server
范围Global, Session
动态Yes
类型String
默认值 (>= 8.0.1)utf8mb4
默认值(8.0.0)latin1
  • 服务器的默认字符集。

character_set_system

属性
系统变量character_set_system
范围Global
动态no
类型String
默认值utf8
  • 服务器用于存储标识符的字符集。值始终为utf8

character_sets_dir

属性
系统变量character_sets_dir
范围Global
动态no
类型Directory name
  • 安装字符集的目录
    在启动mysql后,我们只关注下列变量是否符合我们的要求
    character_set_client
    character_set_connection
    character_set_database
    character_set_results
    character_set_server
    下列三个系统变量不会影响乱码等问题
    character_set_filesystem
    character_set_system
    character_sets_dir

check_proxy_users

属性
系统变量check_proxy_users
范围Global
动态yes
类型Boolean
默认值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。

collation_connection

属性
系统变量collation_connection
范围Global, Session
动态yes
类型string

collation_connection对于比较文本字符串很重要。
对于字符串与列值的比较,排序规则连接并不重要,因为列有自己的排序规则,后者具有较高的排序规则优先级。

collation_database

属性
系统变量collation_database
范围Global, Session
动态Yes
类型String
默认值 (>= 8.0.1)utf8mb4_0900_ai_ci
默认值(8.0.0)latin1_swedish_ci
备注此选项是动态的,但只有服务器应该设置此信息。您不应该手动设置此变量的值。
  • 默认数据库使用的排序规则。每当默认数据库发生更改时,服务器都会设置此变量。如果没有默认数据库,则变量的值与collation_server相同。
  • 在MySQL 8.0.14中,设置这个系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。
  • 全局character_set_database和collation_database系统变量已被弃用,将在MySQL的未来版本中删除。
  • 为会话character_set_database和collation_database系统变量赋值是不赞成的,赋值会产生警告。在MySQL的未来版本中,会话变量将成为只读变量,分配将产生错误。仍然可以访问会话变量来确定默认数据库的数据库字符集和排序规则。

collation_server

属性
系统变量collation_server
范围Global, Session
动态Yes
类型String
默认值 (>= 8.0.1)utf8mb4_0900_ai_ci
默认值(8.0.0)latin1_swedish_ci
  • 服务器的默认排序规则

completion_type

属性
系统变量completion_type
范围Global, Session
动态Yes
类型Enumeration
默认值NO_CHAIN
可用值NO_CHAIN,CHAIN,RELEASE,0,1,2
  • 事务完成类型。这个变量可以接受下表所示的值。可以使用名称值或相应的整数值来分配变量。
描述
NO_CHAIN (or 0)COMMIT and ROLLBACK 不受影响。这是默认值。
CHAIN (or 1)COMMIT和ROLLBACK分别等价于COMMIT AND CHAIN, ROLLBACK AND CHAIN。(新事务立即以与刚刚终止的事务相同的隔离级别启动。)
RELEASE (or 2)COMMIT and ROLLBACK分别相当于COMMIT RELEASE and ROLLBACK RELEASE。(服务器在终止事务后断开连接。)
  • completion_type影响以START事务开始或以COMMIT或ROLLBACK开始和结束的事务。它不适用于执行 “导致隐式提交的语句”中列出的语句所导致的隐式提交。它也不适用于XA COMMIT, XA ROLLBACK或autocommit=1时。
    在这里插入图片描述
    测试设置set @@completion_type=1;
    begin后插入2,commit后由于completion_type=1立即开启一个新事务 插入3,4 所以rollback后3,4插入失败。
    在这里插入图片描述
    测试设置set @@completion_type=2
    在事务终止后会断开连接

concurrent_insert

属性
系统变量concurrent_insert
范围Global
动态Yes
类型Enumeration
默认值AUTO
可用值NEVER,AUTO,ALWAYS,0,1,2
  • 如果是AUTO(默认),MySQL允许INSERT和SELECT语句并发地运行在MyISAM表中,这些表在数据文件中间没有空闲块。如果以-skip-new开始mysqld,则将该变量设置为NEVER。
  • 这个变量可以接受下表所示的值。可以使用名称值或相应的整数值来分配变量。
描述
NEVER (or 0)禁用并发插入
AUTO (or 1)(默认)为没有洞洞的MyISAM表启用并发插入,新数据位于数据文件结尾
ALWAYS (or 2)支持对所有MyISAM表进行并发插入,即使有洞洞的表也是如此。对于有洞洞的表,如果其他线程正在使用新行,则在表的末尾插入新行。否则,MySQL获取一个普通的写锁,并将行插入洞洞中。

connect_timeout

属性
系统变量connect_timeout
范围Global
动态Yes
类型int
默认值10
最小值2
最大值31536000
  • mysqld服务器在使用错误握手进行响应之前等待连接包的秒数。默认值是10秒。
  • 如果错误 Lost connection to MySQL server at 'XXX', system error: errno. 经常出现,可以调高此变量的值来提供帮助。

core_file

属性
系统变量core_file
范围Global
动态No
类型Boolean
默认值OFF

是否在服务器崩溃时编写核心文件。此变量由–core-file选项设置。
在某些情况下,禁用innodb_buffer_pool_in_core_file会导致禁用core_file。

create_admin_listener_thread

属性
系统变量create_admin_listener_thread
范围Global
动态No
类型Boolean
默认值OFF
引入8.0.14
  • 是否在管理网络接口上为客户端连接使用专用监听线程(参见8.12.4.1节“MySQL如何处理客户端连接”)。默认情况下,使用用于普通连接的侦听器线程实现管理接口。
  • 根据平台类型和工作负载等因素,您可能会发现该变量的一个设置比另一个设置的性能更好。
  • 如果没有指定admin_address,则设置create_admin_listener_thread无效,因为在这种情况下,服务器不维护管理网络接口。

cte_max_recursion_depth

属性
系统变量cte_max_recursion_depth
范围Global
动态YES
类型Integer
默认值1000
最大值0
最小值4294967295
引入8.0.3
  • 限制CTE中的递归。用一个名为cte_max_recursion_depth的变量来限制CTE中的递归。这样做是为了保护用户失控查询,例如,如果用户忘记向递归查询块添加WHERE子句。当递归CTE执行超过cte_max_recursion_depth次时,执行将停止并返回错误消息。
  • CTE:with aaa as (select * from yl ) select * from aaa;
  • 在这里插入图片描述

datadir

属性
系统变量datadir
范围Global
动态no
类型Directory name
  • MySQL服务器数据目录的路径。相对路径是相对于当前目录解析的。如果服务器将自动启动,那么最好将datadir值指定为一个绝对路径。

date_format/datetime_format

已在MySQL 8.0.3版本删除

debug

属性
系统变量debug
范围Global, Session
动态yes
类型String
默认值(Windows)d:t:i:O,\mysqld.trace
默认值(unix)d:t:i:o,/tmp/mysqld.trace
  • 此变量指示当前调试设置。它仅对使用调试支持构建的服务器可用。初始值来自服务器启动时给出的——debug选项的实例值。全局值和会话值可以在运行时设置。
  • 设置此系统变量的会话值是一个受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。
  • 指定一个以+或-开头的值,使该值与当前值相加或相减:
    在这里插入图片描述

debug_sync

属性
系统变量debug_sync
范围Session
动态yes
类型String
  • 这个变量是调试同步工具的用户界面。使用调试同步需要使用-DENABLE_DEBUG_SYNC=1 CMake选项配置MySQL(参见2.9.4节“MySQL源代码配置选项”)。如果没有编译调试同步,则此系统变量不可用。
  • 全局变量值仅被读取,并指示是否启用该功能。
    默认情况下,Debug Sync是禁用的,debug_sync的值是关闭的。
    如果服务器以——Debug - Sync -timeout=N启动,其中N是大于0的超时值,则启用调试同步,debug_sync的值为ON - current signal,后面跟着信号名称。
    同时,N成为各个同步点的默认超时。
  • 会话值可以被任何用户读取,并且具有与全局变量相同的值。可以将会话值设置为控制同步点。

default_authentication_plugin

属性
系统变量default_authentication_plugin
范围Global
动态no
类型Enumeration
默认值(>= 8.0.4)caching_sha2_password
默认值(<= 8.0.3)mysql_native_password
可用值(>= 8.0.3)mysql_native_password、sha256_password、caching_sha2_password
可用值 (<= 8.0.2)mysql_native_password、sha256_password

默认的身份验证插件。这些值是允许的:
mysql_native_password: 使用MySQL native passwords;

sha256_password: 使用SHA-256 passwords;

caching_sha2_password: 使用SHA-256 passwords;

  • note:在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户机和连接器的兼容性的信息,
  • default_authentication_plugin值影响服务器操作的这些方面:
    • 它确定服务器将哪个身份验证插件分配给CREATE USER创建的新帐户,以及不显式指定身份验证插件的GRANT语句。
    • 对于使用以下语句创建的帐户,服务器将该帐户与默认身份验证插件关联,并为该帐户分配给定的密码,该密码按照插件的要求进行散列:在这里插入图片描述

default_collation_for_utf8mb4

属性
系统变量default_collation_for_utf8mb4
范围Global,Session
动态yes
类型Enumeration
可用值utf8mb4_0900_ai_ci、utf8mb4_general_ci
引入8.0.11
  • 供内部复制使用。这个系统变量被设置为utf8mb4字符集的默认排序规则。变量的值从一个主节点复制到一个从节点,这样从节点就可以正确地处理来自一个主节点的数据。此变量主要用于支持从MySQL 5.7或更老的主服务器复制到MySQL 8.0从服务器,或使用MySQL 5.7主节点和一个或多个MySQL 8.0次服务器进行组复制。MySQL 5.7中utf8mb4的默认排序规则是utf8mb4_general_ci,而MySQL 8.0中utf8mb4_0900_ai_ci。该变量在MySQL 8.0之前的版本中不存在,因此如果从版本没有接收到该变量的值,那么它假定主版本来自较早的版本,并将该值设置为前面的默认排序规则utf8mb4_general_ci。
  • 默认的utf8mb4排序规则用于以下语句:
    • SHOW COLLATION and SHOW CHARACTER SET.
    • CREATE TABLE and ALTER TABLE包含CHARACTER SET utf8mb4 且不包含 COLLATION的表字符集或列字符集。
    • CREATE DATABASE and ALTER DATABASE包含CHARACTER SET utf8mb4 且不包含 COLLATION的表字符集或列字符集
    • 任何没有COLLATE子句且包含_utf8mb4’some text’形式的字符串文字的语句。

default_password_lifetime

属性
系统变量default_password_lifetime
范围Global
动态yes
类型Integer
默认值0
最小值0
最大值65535
  • 此变量定义全局密码自动过期策略。默认default_password_lifetime值为0,这将禁用自动密码过期。如果default_password_lifetime的值为正整数N,则表示允许的密码生存期;密码必须每N天更改一次。

default_storage_engine

属性
系统变量default_storage_engine
范围Global, Session
动态yes
类型Enumeration
默认值InnoDB
  • 默认存储引擎。此变量仅为永久表设置存储引擎。要为临时表设置存储引擎,请设置default_tmp_storage_engine系统变量。
  • 要查看哪些存储引擎可用和启用,可以使用SHOW engines语句或查询INFORMATION_SCHEMA engines表。
  • 如果在服务器启动时禁用默认存储引擎,则必须将永久表和临时表的默认引擎设置为不同的引擎,否则服务器将不会启动。

default_tmp_storage_engine

属性
系统变量default_tmp_storage_engine
范围Global, Session
动态yes
类型Enumeration
默认值InnoDB
  • 临时表的默认存储引擎(使用CREATE临时表创建)。要为永久表设置存储引擎,请设置default_storage_engine系统变量。也请参阅有关该变量可能值的讨论。
  • 如果在服务器启动时禁用默认存储引擎,则必须将永久表和临时表的默认引擎设置为不同的引擎,否则服务器将不会启动。

default_week_format

属性
系统变量default_week_format
范围Global, Session
动态yes
类型int
默认值0
最小值0
最大值7
  • 用于 WEEK()函数的默认模式值
  • week():这个函数返回日期的周号。WEEK()的双参数形式使您能够指定从周日还是周一开始,以及返回值应该在0到53之间还是1到53之间。如果省略mode参数,则使用default_week_format系统变量的值
    在这里插入图片描述

delay_key_write

属性
系统变量delay_key_write
范围Global
动态yes
类型Enumeration
默认值ON
可用值ON、OFF、ALL
  • 此选项仅适用于MyISAM表。它可以具有以下值之一,以影响在CREATE table语句中使用的DELAY_KEY_WRITE表选项的处理。
描述
OFFDELAY_KEY_WRITE禁用
ONMySQL支持create table语句中指定的任何DELAY_KEY_WRITE选项。这是默认值
ALL所有新打开的表都将被视为是在启用了delay_key_write选项的情况下创建的。
  • 如果为表启用DELAY_KEY_WRITE,则不会在每次索引更新时刷新表的键缓冲区,而是只在表关闭时刷新。这大大加快了键上的写操作,但是如果您使用这个特性,您应该通过使用——MyISAM - recovery -options选项(例如–MyISAM - recovery -options=BACKUP,FORCE)启动服务器来添加对所有MyISAM表的自动检查。
  • warning:如果使用–external locking启用外部锁定,那么对于使用延迟的键写入的表,就没有针对索引损坏的保护。

delayed_insert_limit/delayed_insert_timeout/delayed_queue_size

  • 此系统变量已弃用 ,将在将来的版本中删除。

disabled_storage_engines

属性
系统变量disabled_storage_engines
范围Global
动态no
类型string
默认值empty string
  • 此变量指示哪些存储引擎不能用于创建表或表空间。例如,要防止创建新的myisam或联合表,请在服务器选项文件中使用以下行启动服务器:在这里插入图片描述
  • 默认情况下,禁用的存储引擎为空(没有禁用的引擎),但可以将其设置为一个或多个引擎的逗号分隔列表(不区分大小写)。该值中命名的任何引擎都不能 CREATE TABLE or CREATE TABLESPACE, and cannot be used with ALTER TABLE … ENGINE or ALTER TABLESPACE … ENGINE来修改现有表或表空间,尝试这样做会导致ER_DISABLED_STORAGE_ENGINE错误。
  • 禁用的存储引擎不限制现有表的其他DDL语句,如 CREATE INDEX, TRUNCATE TABLE, ANALYZE TABLE, DROP TABLE, or DROP TABLESPACE.。这允许平滑的转换,以便使用禁用引擎的现有表或表空间可以通过诸如ALTER TABLE … ENGINE转换成允许的存储引擎。
  • 允许将默认的存储引擎或默认的存储引擎系统变量设置为禁用的存储引擎。这可能会导致应用程序行为不稳定或失败,尽管这可能是开发环境中一种有用的技术,用于识别使用禁用引擎的应用程序,以便对其进行修改。
  • 禁用的存储引擎将被禁用,如果服务器使用以下任何选项启动,则不会产生任何效果:–initialize,–initialize unsecure,–skip grant tables。
    设置禁用的存储引擎可能会导致 mysql_upgrade出现问题。

disconnect_on_expired_password

属性
系统变量disconnect_on_expired_password
范围Global
动态no
类型Boolean
默认值ON
  • 此变量控制服务器如何处理密码过期的客户端:
  • 如果客户机表示它可以处理过期密码,那么disconnect_on_expired_password的值是不相关的。服务器允许客户机连接,但将其置于沙盒模式。
    如果客户机不表示可以处理过期密码,服务器将根据disconnect_on_expired_password的值处理客户机:
    如果启用disconnect_on_expired_password:,服务器将断开客户机的连接。
    如果禁用disconnect_on_expired_password:,服务器允许客户机连接,但将其置于沙盒模式。

div_precision_increment

属性
系统变量div_precision_increment
范围Global, Session
动态yes
类型Integer
默认值4
最小值0
最大值30
  • 此变量指示用/运算符执行的除法运算结果的小数位数。默认值为4。最小值和最大值分别为0和30。下面的示例说明增加默认值的效果。在这里插入图片描述

dragnet.log_error_filter_rules

属性
系统变量dragnet.log_error_filter_rules
范围Global
动态yes
类型String
默认值IF prio>=INFORMATION THEN drop. IF EXISTS source_line THEN unset source_line.
引用8.0.4
  • 控制日志筛选器错误日志筛选器组件操作的筛选器规则。如果未安装Log_filter_dragnet,则dragnet.log_error_filter_规则不可用。如果安装了Log_filter_dragnet但未启用,则对dragnet.log_error_filter_规则的更改无效。

end_markers_in_json

属性
系统变量end_markers_in_json
范围Global, Session
动态yes
类型Boolean
默认值OFF
  • 优化器JSON输出是否应该添加结束标记。
  • 如果JSON结构很大,则很难将其右括号与左括号配对;为了帮助读者(但这不是json兼容的),在结束括号附近设置@@end_markers_in_json=on重复结构的键(如果有的话)。它还以同样的方式影响“EXPLAIN FORMAT=JSON”。注意,在MySQL 5.6.6之前,这个变量并不存在,而是@@optimizer_trace变量中的一个开关(它的设置是’set optimizer_trace=“end_marker=on”;’)。

eq_range_index_dive_limit

属性
系统变量eq_range_index_dive_limit
范围Global, Session
动态yes
类型Integer
默认值200
最小值0
最大值4294967295
  • 当优化器在估计符合条件的行数时,如果in()中的数量或or的数量大于eq_range_index_dive_limit的值,则MySQL会跳过索引dive,并从统计信息中估计行数,可能导致explain行数估计错误。
  • 要禁用索引统计信息并始终使用索引跳转而不管数量,请将eq_range_index_dive_limit设置为0。
  • 要更新表索引统计信息以获得最佳估计,请使用ANALYZE table。

error_count

  • 生成消息的最后一条语句所导致的错误数。此变量仅被读取。
  • SHOW COUNT(*) ERRORS语句显示错误的数量,您还可以从error_count变量中检索这个数字

event_scheduler

属性
系统变量event_scheduler
范围Global
动态yes
类型Enumeration
默认值(>= 8.0.3)ON
默认值 (<= 8.0.2)OFF
可用值ON\OFF\DISABLED
  • 此变量指示事件调度程序的状态;可能的值是打开、关闭和禁用的,默认值是打开的。这个变量及其对事件调度程序操作的影响将在 Overview section of the Events chapter的概述部分中进行更详细的讨论。
  • 要使event起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1。

explicit_defaults_for_timestamp

属性
系统变量explicit_defaults_for_timestamp
范围Global, Session
动态yes
类型Boolean
默认值(>= 8.0.2)ON
默认值 (<= 8.0.1)OFF
  • 此系统变量确定服务器是否为TIMESTAMP列中的默认值和空值处理启用某些非标准行为。默认情况下,将启用definit_defaults_for_timestamp,这将禁用非标准行为。禁用definit_defaults_for_timestamp将导致警告。
  • 当explicit_defaults_for_timestamp=false时,按照如下规则"初始化":
    • 未明确声明为NULL属性的TIMESTAMP列被分配为NOT NULL属性。 (其他数据类型的列,如果未显式声明为NOT NULL,则允许NULL值。)将此列设置为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”,并且不会发生警告。
  • 当explicit_defaults_for_timestamp=true时,按照如下规则"初始化":
    • 未明确声明为NOT NULL的TIMESTAMP列允许NULL值。 将此列设置为NULL将其设置为NULL,而不是当前时间戳。
    • 没有TIMESTAMP列自动分配DEFAULT CURRENT_TIMESTAMP或ON UPDATE CURRENT_TIMESTAMP属性。 必须明确指定这些属性。
    • 声明为NOT NULL且没有显式DEFAULT子句的TIMESTAMP列被视为没有默认值。 对于不为此列指定显式值的插入行,结果取决于SQL模式。 如果启用了严格的SQL模式,则会发生错误。 如果未启用严格的SQL模式,则会为列分配隐式默认值“0000-00-00 00:00:00”,并发出警告。 这类似于MySQL如何处理其他时间类型,如DATETIME
  • expit_defaults_for_timestamp本身是不赞成的,因为它的唯一目的是允许对不赞成的时间戳行为进行控制,这些行为将在未来的MySQL版本中删除。当删除这些行为发生时,expit_defaults_for_timestamp将没有任何用途,也将被删除。

external_user

属性
系统变量external_user
范围Session
动态no
类型String
  • 身份验证过程中使用的外部用户名,由用于身份验证客户机的插件设置。使用本机(内置)MySQL身份验证,或者如果插件没有设置该值,则该变量为NULL。

flush

属性
系统变量flush
范围Global
动态Yes
类型Boolean
默认值OFF
  • 如果打开,服务器在每个SQL语句之后刷新(同步)所有磁盘更改。通常,MySQL只在每个SQL语句之后将所有更改写入磁盘,并让操作系统处理到磁盘的同步。参见B.6.3.3节“如果MySQL持续崩溃怎么办”。如果使用–flush选项启动mysqld,则将此变量设置为ON。
  • 如果启用刷新,则flush_time的值无关紧要,对flush_time的更改对刷新行为没有影响。

flush_time

属性
系统变量flush_time
范围Global
动态Yes
类型Integer
默认值0
最小值0
  • 如果将其设置为非零值,则每隔flush_time秒关闭所有表,以释放资源并将未刷新的数据同步到磁盘。此选项最好只在资源最少的系统上使用。

foreign_key_checks

属性
系统变量foreign_key_checks
范围Global, Session
动态Yes
类型Boolean
默认值on
  • 如果设置为1(默认值),将检查InnoDB表的外键约束。如果设置为0,则忽略外键约束,但有几个例外。在重新创建已删除的表时,如果表定义不符合引用该表的外键约束,则返回错误。同样,如果外键定义的格式不正确,ALTER TABLE操作将返回一个错误。
  • 设置此变量对NDB表的效果与对InnoDB表的效果相同。通常,在正常操作期间启用此设置,以强制引用完整性。禁用外键检查对于以不同于父/子关系所需的顺序重新加载InnoDB表非常有用。
  • 将foreign_key_check设置为0也会影响数据定义语句:DROP SCHEMA删除一个模式,即使它包含由模式外的表引用的外键的表,而DROP TABLE删除由其他表引用的外键的表
  • 将foreign_key_check设置为1不会触发对现有表数据的扫描。因此,当foreign_key_check = 0时添加到表中的行将不会验证一致性。
  • 即使使用foreign_key_check =0,也不允许删除外键约束所需的索引。在删除索引之前,必须删除外键约束。

ft_boolean_syntax

属性
系统变量ft_boolean_syntax
范围Global
动态Yes
类型String
默认值+ -><()~*:""&
  • 布尔模式下执行的布尔全文搜索支持的操作符列表。见第12.9.2节“布尔全文搜索”。
  • 默认的变量值是’+ -><()~*:""&|’。更改该值的规则如下:
    运算符函数由字符串中的位置决定。
    替换值必须为14个字符。
    每个字符必须是ASCII非字母数字字符。
    第一个或第二个字符必须是空格。
    除了位置11和12中的短语引用操作符外,不允许重复。这两个字符不一定相同,但它们可能是唯一相同的两个字符。
    位置10、13和14(默认设置为:、&和|)保留给将来的扩展。

ft_max_word_len

属性
系统变量ft_max_word_len
范围Global
动态NO
类型Integer
最小值10

MyISAM全文索引中包含的单词的最大长度。
请注意
更改此变量后,必须重新生成MyISAM表上的全文索引
使用 REPAIR TABLE tbl_name QUICK.

ft_min_word_len

属性
系统变量ft_min_word_len
范围Global
动态NO
类型Integer
默认值4
最小值1

MyISAM全文索引中包含的单词的最小长度

ft_query_expansion_limit

属性
系统变量ft_query_expansion_limit
范围Global
动态NO
类型Integer
默认值20
最小值0
最大值1000

MyISAM引擎表使用 with query expansion 进行全文搜索的最大匹配数

ft_stopword_file

属性
系统变量ft_stopword_file
范围Global
动态NO
类型File name
  • 从中读取myisam表全文搜索的非索引字列表的文件。服务器在数据目录中查找文件,除非指定了绝对路径名以指定其他目录。文件中的所有单词都将被使用;不接受注释。默认情况下,使用内置的非索引字列表(如storage/myisam/ft_static.c文件中定义的那样)。将此变量设置为空字符串(“”)将禁用停止字筛选

general_log

属性
系统变量general_log
范围Global
动态NO
类型Boolean
默认OFF

是否启用常规查询日志。值可以是0(或off)以禁用日志,也可以是1(或on)以启用日志。默认值取决于是否给定–general_log选项。日志输出的目录由 log_output 系统变量控制;如果该值为NONE,则即使启用了日志,也不会写入任何日志条目。

general_log_file

属性
系统变量general_log_file
范围Global
动态YES
类型File name
默认host_name.log

常规查询日志文件的名称。默认值是host_name.log,但初始值可以通过–general_log_file选项更改。

group_concat_max_len

属性
系统变量group_concat_max_len
范围Global, Session
动态YES
类型Integer
默认1024
最小值4
最大值(64位)18446744073709551615
最大值(32位)4294967295
  • GROUP_CONCAT()函数允许的最大结果长度(字节)。默认值为1024

have_compress

值:yes/no
是否服务器可以使用zlib压缩库。如果不是,则不能使用compress()和uncompress()函数

have_crypt

此变量在 MySQL 8.0.3.被删除

have_dynamic_loading

值:yes/no
mysqld是否支持插件的动态加载
如果值为no,则不能使用如–plugin load在服务器启动时加载的插件,或者install plugin语句在运行时加载的插件

have_geometry

值:yes/no
服务器是否支持空间数据类型

have_openssl

此变量是have_ssl的别名。
mysqld是否支持SSL连接,禁用表示服务器是用SSL支持编译的,但没有用适当的–ssl xxx选项启动

have_profiling

是否存在语句分析功能,如果存在,分析系统变量控制此功能是启用还是禁用。
此变量已弃用,将在未来的MySQL版本中删除。

have_query_cache

在mysql 8.0.3中删除了查询缓存。have-query-cache不推荐使用,它的值始终为no,并将在以后的MySQL版本中删除。

have_rtree_keys

rtree索引是否可用(这些用于myisam表中的空间索引。)

have_statement_timeout

属性
系统变量have_statement_timeout
范围Global
动态NO
类型Boolean

语句执行超时功能是否可用(请参阅语句执行时间优化器提示)。如果无法初始化此功能使用的后台线程,则该值不能为no。

have_symlink

  • 是否启用了符号链接支持。在Unix上,这是支持数据目录和索引目录表选项所必需的。如果服务器是用–skip-symbolic-links选项启动的,那么该值将被禁用。
    这个变量在Windows上没有意义。
  • 符号链接支持以及控制它的–symbolymic links选项被弃用,并将在未来的mysql版本中删除。此外,默认情况下禁用该选项。相关的have_symlink系统变量也被弃用,将在未来的mysql版本中删除。

histogram_generation_max_mem_size

属性
系统变量histogram_generation_max_mem_size
范围Global, Session
动态YES
类型Integer
默认20000000
最小值1000000
最大值(64位)18446744073709551615
最大值(32位)4294967295

可用于生成柱状图统计信息的最大内存量
设置此系统变量的会话值是受限制的操作。会话用户必须具有足够的权限来设置受限制的会话变量。

host_cache_size

属性
系统变量host_cache_size
范围Global
动态YES
类型Integer
默认-1(表示自动调整大小;不分配此文本值)
最小值0
最大值65536
  • 此变量控制主机缓存的大小,以及显示缓存内容的性能架构host_cache 表的大小。将大小设置为0将禁用主机缓存。在运行时更改缓存大小会导致隐式 FLUSH HOSTS操作,该操作清除主机缓存,截断 host_cache表,并取消阻止任何被阻止的主机。
  • 默认值自动调整为128,最大连接数为500时加1,最大连接数为500时每增加20,加1,上限为2000。
  • 使用- -skip host cache选项类似于将主机缓存大小系统变量设置为0,但主机缓存大小更为灵活,因为它还可用于在运行时调整、启用和禁用主机缓存,而不仅仅是在服务器启动时。使用- -skip host cache启动服务器不会阻止更改主机缓存大小的值,但是这样的更改没有效果,并且即使在运行时将主机缓存大小设置为大于0,也不会重新启用缓存。

hostname

属性
系统变量hostname
范围Global
动态No
类型String

服务器在启动时将此变量设置为服务器主机名。

identity

  • 此变量是最后一个插入变量的同义词。它的存在是为了与其他数据库系统兼容。您可以使用select@@identity读取其值,并使用set identity进行设置。
  • @@identity 是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。
  • 比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。

init_connect

属性
系统变量init_connect
范围Global
动态Yes
类型String

服务器为连接的每个客户机执行的字符串。字符串由一个或多个SQL语句组成,用分号分隔。
init_connect 是用户登录到数据库上之后,在执行第一次查询之前执行 里面的内容的。
如果init_connect 的内容有语法错误,导致执行失败,会导致用户无法执行查询,从mysql 退出。
init_connect 对具有super 权限的用户是无效的

  • 从MySQL8.0.5开始,任何密码过期的客户机用户都将跳过init_connect执行。这样做是因为这样的用户不能执行任意语句,因此init连接执行将失败,使客户机无法连接。跳过init_connect执行可以使用户连接和更改密码。
  • 服务器将丢弃init_connect值中的语句生成的所有结果集

information_schema_stats_expiry

属性
系统变量information_schema_stats_expiry
范围Global, Session
动态Yes
类型Integer
默认值86400
最大值31536000
最小值0
引入8.0.3

一些 INFORMATION_SCHEMA 库中的表 包含提供表统计信息的列
在这里插入图片描述
这些列表示动态表元数据;也就是说,随着表内容的变化而变化的信息。
默认情况下,当查询列时,mysql从mysql.index_stats和mysql.table_stats字典表中检索这些列的缓存值,这比直接从存储引擎检索统计数据更有效。如果缓存的统计信息不可用或已过期,MySQL将从存储引擎中检索最新的统计信息,并将其缓存到mysql.index_stats和mysql.table_stats字典表中。后续查询将检索缓存的统计信息,直到缓存的统计信息过期。

  • information_schema_stats_expiry变量定义缓存统计信息过期之前的时间段。默认值为86400秒(24小时),但时间段最多可延长一年。
  • 要随时更新给定表的缓存值,请使用analyze table。
  • 要始终直接从存储引擎中检索最新的统计信息并绕过缓存值,请将information_schema_stats_expiry设置为0。
    哪些情况下,字典缓存中索引和表的统计信息不会自动更新呢?
    1.缓存中统计信息还没过期;
    2.information_schema_stats_expiry没设成0;
    3.当实例在read_only相关模式下运行;
    4.当查询同时获取performance schema的数据。
    针对第一二点,可以通过设置set global information_schema_stats_expiry=0来解决,也可以仅在会话级设置;针对以上问题,除了第三点,都可以通过analyze table来解决

init_file

属性
系统变量init_file
范围Global
动态no
类型File name
  • 启动服务器时使用——init-file选项指定的文件的名称。这个文件应该包含您希望服务器在启动时执行的SQL语句。每个语句必须在一行中,不应该包含注释。

insert_id

当插入AUTO_INCREMENT值时,下面的INSERT或ALTER TABLE语句将使用的值。这主要用于二进制日志。

interactive_timeout

属性
系统变量interactive_timeout
范围Global, Session
动态Yes
类型Integer
默认值28800
最小值1

服务器在关闭交互式连接之前等待活动的秒数。
交互式客户机就是使用CLIENT_INTERACTIVE选项到mysql_real_connect()的客户机

internal_tmp_disk_storage_engine

属性
系统变量internal_tmp_disk_storage_engine
范围Global
动态Yes
类型Enumeration
默认值INNODB
可用值INNODB、MYISAM

磁盘上内部临时表的存储引擎(参见8.4.4节“MySQL中内部临时表的使用”)。允许的值是MYISAM和INNODB(默认值)。

优化器对磁盘上的内部临时表使用internal_tmp_disk_storage_engine定义的存储引擎。

当使用internal_tmp_disk_storage_engine=INNODB(默认值)时,在磁盘上生成超过INNODB行或列限制的内部临时表的查询将返回行大小过大或列数量过多的错误。解决方案是将internal_tmp_disk_storage_engine设置为MYISAM。

internal_tmp_mem_storage_engine

属性
系统变量internal_tmp_disk_storage_engine
范围Global, Session
动态Yes
类型Enumeration
默认值TempTable
可用值TempTable、MEMORY
引入8.0.2

内存内部临时表的存储引擎(参见8.4.4节“MySQL中内部临时表的使用”)。允许的值是TempTable(默认值)和MEMORY。

优化器对内存中的内部临时表使用 internal_tmp_mem_storage_engine定义的存储引擎。

join_buffer_size

属性
系统变量join_buffer_size
范围Global, Session
动态Yes
类型Integer
默认值262144
最小值128
最大值(64位)18446744073709547520
最大值(32位)4294967295
最大值(windows)4294967295
  • 用于普通索引扫描、范围索引扫描和不使用索引因而执行全表扫描的连接的缓冲区的最小大小。通常,获得快速连接的最佳方法是添加索引。增加join_buffer_size的值,以便在无法添加索引时获得更快的完整连接。为两个表之间的每个完整连接分配一个连接缓冲区。对于不使用索引的多个表之间的复杂连接,可能需要多个连接缓冲区。
  • 除非使用批处理键访问(BKA),否则将缓冲区设置为大于容纳每个匹配行所需的缓冲区没有任何好处,并且所有连接至少分配最小大小,因此在全局将该变量设置为大值时要谨慎。最好保持全局设置较小,只在执行大连接的会话中更改为较大的设置。如果全局大小大于使用它的大多数查询所需的大小,那么内存分配时间会导致性能显著下降。
  • 当使用BKA时,join_buffer_size的值定义了存储引擎的每个请求中的密钥批大小。缓冲区越大,对连接操作的右手表的顺序访问就越多,这可以显著提高性能。
  • 默认值是256KB。的最大容许设置join_buffer_size =4GB−1。更大的值允许在64位平台上(除了64位Windows)。
  • 如果3个表join就会分配2次joinbuffer(而不是一个session只分配一次)

keep_files_on_create

属性
系统变量keep_files_on_create
范围Global, Session
动态Yes
类型Boolean
默认值OFF
  • 此项默认值为OFF。如果不使用 DATA DIRECTORY or INDEX DIRECTORY选项创建MyISAM类型的表时,mysqld会在数据目录中为其创建一个.MYD文件和一个.MYI文件,如果数据目录中已经存在一个同名的文件,默认设定为覆盖操作,当设定此变量为OFF时,则会返回一个错误信息。作用范围为全局或会话级别,可用于配置文件,属动态变量。
  • 如果使用 DATA DIRECTORY or INDEX DIRECTORY选项创建了MyISAM表,并且找到了现有的. myd或. myi文件,MyISAM总是返回一个错误。它不会覆盖指定目录中的文件。

key_buffer_size

属性
系统变量key_buffer_size
范围Global
动态Yes
类型Integer
默认值8388608
最小值8
最大值64位OS_PER_PROCESS_LIMIT
最大值32位4294967295
  • MyISAM Key Cache
  • MyISAM表的索引块被缓冲,并由所有线程共享。key_buffer_size是用于索引块的缓冲区的大小。索引缓冲区也称为索引缓存。
  • 在32位平台上的最大容许设置key_buffer_size值为4G-1,64位平台允许使用更大的值。
  • 有效的最大大小可能更小,这取决于可用的物理RAM和操作系统或硬件平台施加的每个进程RAM限制。此变量的值指示所请求的内存数量。在内部,服务器会分配尽可能多的内存,但实际的分配可能会更少。
  • 可以增加该值,以便更好地处理所有读和多个写的索引;在一个主要功能是使用MyISAM存储引擎运行MySQL的系统上,对于这个变量,机器总内存的25%是可以接受的。
  • 但是,您应该注意,如果将值设置得太大(例如,超过计算机总内存的50%),系统可能会开始分页并变得非常慢。这是因为MySQL依赖于操作系统对数据读取执行文件系统缓存,所以必须为文件系统缓存留出一些空间。您还应该考虑除MyISAM之外可能使用的任何其他存储引擎的内存需求。
  • 您可以通过发出SHOW STATUS语句并检查Key_read_requests、key_read、Key_write_requests和key_write状态变量来检查密钥缓冲区的性能。
  • Key_reads/Key_read_requests比率通常应该小于0.01。如果您主要使用更新和删除,那么key_write /Key_write_requests的比率通常接近1,但是如果您倾向于同时进行影响许多行的更新,或者使用DELAY_KEY_WRITE表选项,那么这个比率可能会小得多。
  • 可以使用key_buffer_size与Key_blocks_unused状态变量和缓冲区块大小(可从key_cache_block_size系统变量获得)结合使用key_buffer_size来确定使用中的键缓冲区的比例:
    • 1 - ((Key_blocks_unused * key_cache_block_size) / key_buffer_size)
  • 这个值是一个近似值,因为键缓冲区中的一些空间在内部分配给管理结构。影响这些结构的开销的因素包括块大小和指针大小。随着块大小的增加,键缓冲区丢失给开销的百分比趋于减少。更大的块会导致更少的读操作(因为每次读获得更多的键),但相反,未检查的键的读增加(如果不是块中的所有键都与查询相关)。
  • 可以创建多个MyISAM密钥缓存。4GB的大小限制单独适用于每个缓存,而不是作为一个组。

key_cache_age_threshold

属性
系统变量key_cache_age_threshold
范围Global
动态Yes
类型Integer
默认值300
最小值100
最大值64位18446744073709551615
最大值32位4294967295
  • MyISAM Key Cache
    控制Hot Area中的Cache Block何时该被降级到Warm Area中。系统默认值为300,最小可以设置为100。值越小,被降级的可能性越大

key_cache_block_size

属性
系统变量key_cache_block_size
范围Global
动态Yes
类型Integer
默认值1024
最小值512
最大值16384
  • MyISAM Key Cache
    键缓存中块的字节大小。默认值是1024
  • MyISAM存储引擎的索引存放于“.MYI”文件中,每个“.MYI”文件由文件头和实际的索引数据共同组成。在“.MYI”的相关概念中,其逻辑上表现为多个Index Block,但并非物理结构。在物理上,索引是以文件块(File Block)的形式来存放在磁盘上面的。在Key Cache中缓存的索引信息是以缓存块(Cache Block)的形式组织存放的,缓存块是一组相同大小的存储空间,和“.MYI”文件物理存储的Block(File Block)类似。
  • 在一条查询语句通过索引检索表数据的时候,首先会检查索引缓存(key_buffer_cache)中是否已经存储了需要的索引信息,如果没有,则会读取“.MYI”文件,将相应的索引数据读入Key Cache中的内存空间中,并存储为缓存块格式。此时,如果整个Key Cache中已经没有空闲的缓存块空间可以使用的话,mysqld将会通过LRU算法将某些缓存块予以清除。

key_cache_division_limit

属性
系统变量key_cache_division_limit
范围Global
动态Yes
类型Integer
默认值100
最小值1
最大值100
  • MyISAM Key Cache
  • 在MySQL的Key Cache中所使用的LRU算法并不像传统的算法一样仅仅只是通过访问频率以及最后访问时间来通过一个唯一的链表实现,而是将其分成了两部分。一部分用来存放使 用比较频繁的Hot Cache Lock(Hot Chain),被称作Hot Area,另外一部分则用来存放使用不太频繁的Warm Cache Block(Warm Chain),也被称作Warm Area。这样做的目的主要是为了保护使用比较频繁的Cache Block更不容易被换出。而key_cache_division_limit参数则正是用于告诉MySQL该如何划分整个Cache Chain划分为Hot Chain和Warm Chain两部分,参数值为Warm Chain占整个Chain 的百分比值。设置范围1~100,系统默认为100,也就是只有Warm Chain

large_files_support

属性
系统变量large_files_support
范围Global
动态no

mysqld是否使用支持大文件的选项进行编译。

large_pages

属性
系统变量large_pages
范围Global
动态no
类型Boolean
默认值FALSE

Linux平台上专用的参数,用于设定mysqld是否支持使用大内存页。使用大内存而可以提高TLB的命中率,进行提高系统性能

large_page_size

属性
系统变量large_pages
范围Global
动态no
类型Integer
默认值0

Linux平台上专用的参数,用于设定mysqld使用的大内存页的大小,一般为4MB,在其它平台上此参数的值为0

last_insert_id

从LAST_INSERT_ID()返回的值。当您在更新表的语句中使用LAST_INSERT_ID()时,它存储在二进制日志中。设置此变量不会更新mysql_insert_id() C API函数返回的值

lc_messages

属性
系统变量lc_messages
范围Global, Session
动态yes
类型String
默认值en_US

用于错误消息的区域设置。默认值是en_US。服务器将参数转换为语言名称,并将其与lc_messages_dir的值组合,以生成错误消息文件的位置

lc_messages_dir

属性
系统变量lc_messages_dir
范围Global,
动态no
类型Directory name

错误消息所在的目录。服务器使用该值和lc_messages的值来生成错误消息文件的位置

lc_time_names

属性
系统变量lc_time_names
范围Global, Session
动态no
类型String
  • 此变量指定区域设置,该区域设置控制用于显示日、月名称和缩写的语言。这个变量影响DATE_FORMAT()、DAYNAME()和MONTHNAME()函数的输出。地区名称是posix风格的值,如“ja_JP”或“pt_BR”。无论您的系统的地区设置如何,默认值都是’en_US’。

license

属性
系统变量license
范围Global
动态no
类型String
默认值GPL

服务器拥有的许可证类型

local_infile

属性
系统变量local_infile
范围Global
动态yes
类型Boolean
默认值(>= 8.0.2)OFF
默认值(<= 8.0.1)ON
  • 此变量控制用于加载数据语句的服务器端本地功能。根据local_infile设置,服务器拒绝或允许在客户端启用local的客户端加载本地数据。
    • 要显式地导致服务器拒绝或允许加载数据本地语句(无论在构建时或运行时如何配置客户机程序和库),请分别禁用或启用local_infile启动mysqld。local_infile也可以在运行时设置。

lock_wait_timeout

属性
系统变量lock_wait_timeout
范围Global, Session
动态yes
类型Integer
默认值31536000
最小值1
最大值31536000
  • 此变量指定尝试获取元数据锁的超时时间(以秒为单位)。容许值范围为1至31536000(1年)。默认值是31536000。
  • 此变量指定尝试获取元数据锁的超时时间(以秒为单位)。容许值范围为1至31536000(1年)。默认值是31536000。
  • 此超时适用于所有使用元数据锁的语句。这些操作包括表、视图、存储过程和存储函数上的DML和DDL操作,以及LOCK TABLES、FLUSH TABLES WITH READ LOCK和HANDLER语句。
  • 此超时不适用于对mysql数据库中的系统表的隐式访问,例如由grant或REVOKE语句或表日志语句修改的grant表。但适用于直接访问的系统表,例如SELECT或UPDATE。
  • 此超时时长分别应用于每个元数据锁,因此,一个语句可能会持有多个元数据锁,那么其最后的生效超时时长有可能会超过这个设定值。当发生锁定超时时,报告ER_LOCK_WAIT_TIMEOUT。
  • lock_wait_timeout还定义了备份语句的锁实例在放弃之前等待锁的时间量。

locked_in_memory

属性
系统变量locked_in_memory
范围Global
动态no

mysqld是否使用–memlock被锁定在内存中

log_error

属性
系统变量log_error
范围Global,
动态no
类型File name

错误日志名
默认错误日志目标。如果目标是控制台,则值为stderr。否则,目标是一个文件,日志错误值是文件名。

log_error_filter_rules

属性
系统变量log_error_filter_rules
范围Global,
动态yes
类型string
默认值set by server
引入8.0.2
移除8.0.4

错误日志记录的筛选规则。此变量未使用。它在mysql 8.0.4中被删除。

log_error_services

属性
系统变量log_error_services
范围Global,
动态yes
类型string
默认值log_filter_internal; log_sink_internal
引入8.0.2

支持错误日志记录的组件。变量可以包含包含0、1或多个元素的列表。在后一种情况下,元素可以用分号或逗号分隔(在MySQL 8.0.12中),也可以选择空格。给定的设置不能同时使用分号和逗号分隔符。组件顺序很重要,因为服务器按照列出的顺序执行组件。在log_error_services值中命名的任何可加载(非内置)组件必须首先与INSTALL组件一起安装。

log_error_suppression_list

属性
系统变量log_error_suppression_list
范围Global,
动态yes
类型string
默认值empty string
引入8.0.13

此变量允许在错误日志中出现严重警告或信息时指定不应该将哪些诊断写入错误日志。例如,如果错误日志中认为某种特定类型的警告是不受欢迎的“噪声”,因为它经常出现,但不受关注,那么可以抑制它。
变量值可以是不进行抑制的空字符串,也可以是一个由一个或多个逗号分隔的值组成的列表,这些值指示要抑制的错误代码。
错误代码可以用符号或数字形式指定。(有关错误符号和数字的列表,请参见B.3节“服务器错误消息引用”。)可以使用或不使用MY-前缀来指定数字代码。数字部分的前导零不重要。容许的代码格式例子:
在这里插入图片描述
在可读性和可移植性方面,符号值优于数字值。

虽然要抑制的代码可以用符号或数字形式表示,但每个代码的数值必须在允许的范围内:

1到999:服务器和客户端使用的全局错误代码。
10000或更高:准备写入错误日志的服务器错误代码(不发送给客户端)。

此外,MySQL必须实际使用每个代码。尝试分配一个错误代码在一个不允许的范围或一个范围内,但MySQL不使用产生一个错误和log_error_suppression_list值保持不变。

服务器可以以不同的严重程度为给定的错误代码生成消息,因此与log_error_suppression_list中列出的错误代码相关联的消息的抑制取决于其严重程度。假设该变量的值为’ER_PARSER_TRACE,MY-010001,10002’。然后:
如果生成的错误级别为 WARNING or INFORMATION,则不会将这些代码的消息写入错误日志。
生成的严重级别为ERROR or SYSTEM的消息不会被抑制,而是被写入错误日志,而不管它们的代码是什么。

log_error_suppression_list的效果与log_error_verbosity的效果相结合。考虑一个服务器以这种设置启动:
在这里插入图片描述
在这种情况下,log_error_verbosity丢弃 INFORMATION 级别所有消息。在其余的消息中,log_error_suppression_list丢弃具有WARNING 严重性的消息和任何命名错误的代码。

示例(2)中显示的log_error_verbosity值也是它的默认值,因此它对所有INFORMATION 消息的抑制效果在默认情况下是如上所述的。如果希望log_error_suppression_list影响INFORMATION 严重性的消息,则必须将log_error_verbosity设置为3。

考虑一个服务器以这种设置启动:
在这里插入图片描述
在这种情况下,log_error_verbosity丢弃具有WARNING 或INFORMATION 严重性的所有消息。设置log_error_suppression_list不会有任何效果,因为它可能会抑制的所有错误代码已经由于log_error_verbosity设置而被丢弃。

log_error_suppression_list(类似于log_error_verbosity)影响默认启用的log_filter_internal错误日志过滤器。如果禁用该筛选器,则不会出现错误代码抑制,必须在需要的地方使用任何筛选器服务进行建模(例如,在使用log_filter_dragnet时使用单个筛选器规则)。

log_error_verbosity

属性
系统变量log_error_verbosity
范围Global,
动态yes
类型Integer
默认值(>= 8.0.4)2
默认值(<= 8.0.3)3
最小值1
最大值3

通过log_filter_internal错误日志筛选器组件(默认情况下启用该组件)筛选错误日志事件的详细信息。如果禁用log_filter_internal,则log_error_verbosity无效。
下表显示了允许的详细值。

想要过滤的日志级别log_error_verbosity 值
Error1
Error and warning2
Error, warning, and information3

不管log_error_verbosity值是多少,有关非错误情况的选定的重要系统消息都会打印到错误日志中。这些消息包括启动和关闭消息,以及对设置的一些重要更改。
log_error_verbosity的效果与log_error_suppression_list的效果相结合。有关后者的示例,请参见其描述。

log_output

属性
系统变量log_output
范围Global,
动态yes
类型Set
默认值file
可用值file、table、none

用于普通查询日志和慢速查询日志输出的一个或多个目的地
file表示日志存到文件
table表示日志存到数据库
none表示禁用日志记录
如果值中存在none,则它优先于存在的任何其他单词。

此变量选择日志输出目的地,但不启用日志输出。为此,请启用general_log和slow_query_log系统变量。对于文件日志记录,general_log_file和slow_query_log_file系统变量决定日志文件的位置。

log_queries_not_using_indexes

属性
系统变量log_queries_not_using_indexes
范围Global,
动态yes
类型Boolean
默认值OFF

是否将不使用索引的查询记录到慢速查询日志中

log_slow_admin_statements

属性
系统变量log_slow_admin_statements
范围Global,
动态yes
类型Boolean
默认值OFF

在写入慢速查询日志的语句中包含慢速管理语句。管理语句包括ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、optimization TABLE和REPAIR TABLE。

log_slow_extra

属性
系统变量log_slow_extra
范围Global,
动态yes
类型Boolean
默认值OFF
引入8.0.14

如果启用了慢速查询日志,并且输出目的地包含文件,服务器将向日志文件行写入额外的字段,这些文件行提供关于慢速语句的信息。参见https://blog.csdn.net/m0_37827567/article/details/86534638。表输出不受影响。

log_syslog

属性
系统变量log_syslog
范围Global,
动态yes
类型Boolean
默认值(Windows, <= 8.0.1)ON
默认值 (Unix, <= 8.0.1)off
默认值 (Unix, >= 8.0.2)ON
引入8.0.2 ( 8.0.13删除)

在MySQL 8.0之前,这个变量控制是否将错误日志记录到系统日志(Windows上的事件日志,Unix和类Unix系统上的syslog)。

在MySQL 8.0中,log_sink_syseventlog日志组件实现了系统日志的错误日志记录(参见5.4.2.3节“系统日志的错误日志记录”),因此可以通过将该组件添加到log_error_services系统变量中来启用这种类型的日志记录。log_syslog被移除。(在MySQL 8.0.13之前,log_syslog存在,但不推荐使用,也没有效果)。

log_syslog_facility

属性
系统变量log_syslog_facility
范围Global,
动态yes
类型String
默认值daemon
移除8.0.13

这个变量在MySQL 8.0.13中被删除,由syseventlog.facility代替

log_syslog_include_pid

属性
系统变量log_syslog_include_pid
范围Global,
动态yes
类型Boolean
默认值on
移除8.0.13

在MySQL 8.0.13中删除了这个变量,代之以syseventlog.include_pid。

log_syslog_tag

属性
系统变量log_syslog_tag
范围Global,
动态yes
类型String
默认值empty string
移除8.0.13

在MySQL 8.0.13中删除了这个变量,代之以syseventlog.tag。

log_timestamps

属性
系统变量log_timestamps
范围Global,
动态yes
类型Enumeration
默认值UTC
可用值UTC、SYSTEM

此变量控制写入错误日志的消息中的时间戳时区,以及写入文件的一般查询日志和慢速查询日志消息中的时间戳时区。它不影响写入表(mysql)的常规查询日志和慢速查询日志消息的时区。general_log mysql.slow_log)。通过CONVERT_TZ()或通过设置会话time_zone系统变量,可以将从这些表检索到的行从本地系统时区转换为所需的任何时区。

允许的log_timestamp值是UTC(默认值)和SYSTEM(本地系统时区)。

时间戳使用ISO 8601 / RFC 3339格式编写:YYYY-MM-DDThh:mm:ss。uuuuuu +尾巴值Z代表格林尼治标准时间(UTC)或±hh:mm(UTC)的偏移量。

log_throttle_queries_not_using_indexes

属性
系统变量log_throttle_queries_not_using_indexes
范围Global,
动态yes
类型Integer
默认值0

如果启用log_queries_not_using_indexes,则log_throttle_queries_not_using_indexes变量将限制每分钟可以写入慢速查询日志的此类查询的数量。值0(默认值)表示“没有限制”

log_warnings

属性
系统变量log_warnings
范围Global,
动态yes
类型Integer
默认值2
删除8.0.3
最小值0
最大值64位18446744073709551615
最大值32位4294967295

在MySQL 8.0.3中删除了这个系统变量。改为使用log_error_verbosity系统变量。

long_query_time

属性
系统变量long_query_time
范围Global, Session,
动态yes
类型Numeric
默认值10
最小值0

如果查询花费的时间超过这么多秒,服务器将递增Slow_queries状态变量。如果启用了慢速查询日志,则将查询记录到慢速查询日志文件中。此值是实时测量的,而不是CPU时间,因此在负载较轻的系统上低于阈值的查询可能在负载较重的系统上高于阈值。long_query_time的最小值和默认值分别为0和10。该值可以指定为微秒级的分辨率。

low_priority_updates

属性
系统变量low_priority_updates
范围Global, Session,
动态yes
类型Boolean
默认值false

如果设置为1,则所有INSERT、UPDATE、DELETE和LOCK表写语句都将等待,直到受影响的表上没有挂起的SELECT或LOCK表读为止。这只影响只使用表级锁定(如MyISAM、内存和MERGE)的存储引擎。

lower_case_file_system

属性
系统变量lower_case_file_system
范围Global
动态No
类型Boolean

此变量描述数据目录所在的文件系统上文件名的大小写敏感性。OFF表示文件名区分大小写,ON表示文件名不区分大小写。这个变量只被读取,因为它反映了一个文件系统属性,并且设置它对文件系统没有影响。

lower_case_table_names

属性
系统变量lower_case_table_names
范围Global
动态No
类型Integer
默认值0
最小值0
最大值2
  • 如果设置为0,则按照指定的方式存储表名,并且比较区分大小写。如果设置为1,则表名以小写形式存储在磁盘上,比较不区分大小写。如果设置为2,则表名存储为给定的,但以小写进行比较。此选项也适用于数据库名称和表别名。
  • 在Windows上,默认值是1。在macOS上,默认值是2。在Linux上,不支持值2;服务器将值强制设置为0
  • 如果在不区分大小写的文件系统(如Windows或macOS)上运行MySQL,则不应将lower_case_table_names设置为0。当使用错误的tbl_name字母大小写运行INSERT INTO … SELECT … FROM tbl_name操作时,这种不受支持的组合可能导致挂起条件。使用MyISAM,使用不同字母大小写访问表名可能会导致索引损坏。
  • 如果您试图在不区分大小写的文件系统上以——lower_case_table_names=0启动服务器,则会打印一条错误消息,服务器将退出。
    如果您正在使用InnoDB表,那么您应该在所有平台上将这个变量设置为1,以强制名称转换为小写。
  • MySQL 8.0中这个变量的设置会影响复制过滤选项的大小写敏感性行为
  • 禁止使用与初始化服务器时使用的设置不同的 lower_case_table_names设置启动服务器。这种限制是必要的,因为各种数据字典表字段使用的排序是基于服务器初始化时定义的设置,使用不同的设置重新启动服务器会导致标识符的排序和比较方式不一致。

mandatory_roles

属性
系统变量mandatory_roles
范围Global
动态yes
类型String
默认值empty string
引入8.0.2

服务器应该将角色视为强制性的。实际上,这些角色是自动授予每个用户的,尽管设置mandatory_roles实际上不会更改任何用户帐户,而且授予的角色在mysql中是不可见的。role_edges系统表。
变量值是一个以逗号分隔的角色名称列表。例子:
在这里插入图片描述
设置mandatory_roles需要ROLE_ADMIN特权,而设置全局系统变量通常需要SYSTEM_VARIABLES_ADMIN或SUPER特权。
角色名由user_name@host_name格式的用户部分和主机部分组成。如果省略主机部分,则默认为%。

如果引用了用户名和主机名,则必须以允许在引用字符串中引用的方式编写。
在mandatory_roles值中命名的角色不能用REVOKE撤销,也不能用DROP角色或DROP用户撤销。

强制角色,如显式授予的角色,在激活之前不会生效(参见激活角色)。在登录时,如果激活activate_all_roles_on_login系统变量,则会对所有授予的角色进行角色激活,否则仅对设置为默认角色的角色进行角色激活。在运行时,SET ROLE激活角色。

当分配给mandatory_roles时不存在但稍后创建的角色可能需要特殊处理才能认为是强制的。有关详细信息,请参见定义强制角色。

max_allowed_packet

属性
系统变量mandatory_roles
范围Global, Session
动态yes
类型Integer
默认值(>= 8.0.3)67108864
默认值(<= 8.0.2)4194304
最小值1024
最大值1073741824

一个包或任何生成的/中间字符串或mysql_stmt_send_long_data() C API函数发送的任何参数的最大大小。默认值是64MB。

包消息缓冲区初始化为net_buffer_length字节,但在需要时可以增长为max_allowed_packet字节。默认情况下,这个值很小,用于捕获较大的(可能不正确的)数据包。

如果使用大型0BLOB0列或长字符串,则必须增加此值。它应该和你想要使用的最大的0BLOB0一样大。max_allowed_packet的协议限制是1GB。这个值应该是1024的倍数;非倍数四舍五入到最接近的倍数。
当您通过更改max_allowed_packet变量的值来更改消息缓冲区大小时,如果客户机程序允许,您还应该更改客户机端的缓冲区大小。客户端库中内置的默认max_allowed_packet值是1GB,但是单个客户端程序可能会覆盖这个值。例如,mysql和mysqldump的默认值分别为16MB和24MB。它们还允许您通过在命令行或选项文件中设置max_allowed_packet来更改客户端值。

此变量的会话值是只读的。客户机可以接收与会话值一样多的字节。但是,服务器发送给客户机的字节不会超过当前的全局max_allowed_packet值。(如果在客户端连接后更改了全局值,则全局值可能小于会话值。)

max_connect_errors

属性
系统变量max_connect_errors
范围Global
动态yes
类型Integer
默认值100
最小值1
最大值64位18446744073709551615
最大值32位4294967295

在max_connect_errors之后,来自主机的连续连接请求在没有成功连接的情况下被中断,服务器将阻止该主机继续连接。如果在前一个连接中断后,在少于max_connect_errors尝试的范围内成功地建立了来自主机的连接,则该主机的错误计数将被清除为零。然而,一旦主机被阻塞,刷新主机缓存是解除阻塞的唯一方法。要刷新主机缓存,可以执行flush HOSTS语句、截断表语句(截断性能模式host_cache表)或mysqladmin刷新- HOSTS命令。

max_connections

属性
系统变量max_connections
范围Global
动态yes
类型Integer
默认值151
最小值1
最大值100000

允许同时进行的客户端连接的最大数量。

max_delayed_threads

属性
系统变量max_delayed_threads
范围Global, Session
动态yes
类型Integer
默认值20
最小值1
最大值16384

此系统变量已被弃用(因为不支持延迟插入),并将在未来的版本中删除。

max_digest_length

属性
系统变量max_digest_length
范围Global
动态no
类型Integer
默认值1024
最小值1
最大值1048576

为计算规范化语句摘要而为每个会话保留的最大内存字节数。一旦在摘要计算过程中使用了那么多的空间,就会发生截断:不会再收集解析语句中的标记,也不会将其转换为摘要值。只有在许多字节的已解析标记产生相同的规范化语句摘要之后才有差异的语句,如果进行比较或对摘要统计进行聚合,则认为这些语句是相同的。

减小max_digest_length值会减少内存使用,但会导致更多语句的digest值变得不可区分,如果这些语句只在结尾处有所不同。增加值允许区分较长的语句,但会增加内存使用,特别是对于涉及大量同时会话的工作负载(服务器为每个会话分配最大摘要长度字节)

解析器使用这个系统变量作为它计算的规范化语句摘要最大长度的限制。如果Performance Schema跟踪语句摘要,则使用 performance_schema_max_digest_length复制摘要值.因此,如果 performance_schema_max_digest_length小于 max_digest_length,则存储在 Performance Schema中的摘要值相对于原始摘要值被截断。

max_error_count

属性
系统变量max_error_count
范围Global Session
动态Yes
类型Integer
默认值1024
默认值 (>= 8.0.3)64
最小值 (<= 8.0.2)0
最大值65535

由SHOW ERRORS和SHOW warning语句存储以供显示的错误、警告和信息消息的最大数量。这与诊断区域中的条件区域的数量相同,因此可以通过GET diagnostics检查条件的数量。

max_execution_time

属性
系统变量max_execution_time
范围Global Session
动态Yes
类型Integer
默认值0
  • SELECT语句的执行超时,单位为毫秒。如果值为0,则不启用超时。
  • max_execution_time的应用如下:
  • 全局max_execution_time值为新连接的会话值提供默认值,会话值适用于在会话中执行select查询,不适用于 MAX_EXECUTION_TIME(N)优化器提示或N为0的执行
  • 超时报错:mysql> select count(*) from aaa where status =‘asdasd’;
    ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded
  • max_execution_time应用于只读选择语句。不只读的语句是那些调用存储函数并作为副作用修改数据的语句。
    存储程序中的select语句将忽略最大执行时间。

max_heap_table_size

属性
系统变量max_heap_table_size
范围Global Session
动态Yes
类型Integer
默认值16777216
最小值16384
最大值 (64-bit platforms)1844674407370954752
最大值 (32-bit platforms)4294967295

此变量设置允许用户创建的内存表增长到的最大大小。变量的值用于计算内存表的最大行值。设置此变量不会影响任何现有的内存表,除非使用诸如create table之类的语句重新创建表,或者使用alter table或truncate table进行更改。服务器重新启动还将现有内存表的最大大小设置为全局最大堆表大小值。

此变量还与tmp_table_size结合使用,以限制内存中内部表的大小。
此变量不被复制,主从需要同时设置

max_insert_delayed_threads

属性
系统变量max_insert_delayed_threads
范围Global Session
动态Yes
类型Integer

这个变量是max_delayed_threads的同义词。

此系统变量已被弃用(因为不支持延迟插入),并将在未来的版本中删除。

max_join_size

属性
系统变量max_join_size
范围Global Session
动态Yes
类型Integer
默认值18446744073709551615
最小值1
最大值18446744073709551615

不允许 需要检查超过max_join_size 行(对于单表语句)或 行组合(对于多表语句) 或可能执行超过max-join-size磁盘查找的语句。通过设置这个值,您可以捕获键使用不当的语句,这可能需要很长的时间。如果您的用户倾向于执行缺少WHERE子句、耗时较长或返回数百万行的联接,请设置它

将此变量设置为默认值以外的值会将sql_big_select的值重置为0。如果再次设置sql_big_select值,则忽略max_join_size变量。

max_length_for_sort_data

属性
系统变量max_length_for_sort_data
范围Global Session
动态Yes
类型Integer
默认值 (>= 8.0.1)4096
默认值 (8.0.0)1024
最小值4
最大值8388608

索引值大小的截止值,该值决定使用哪种文件排序算法

max_points_in_geometry

属性
系统变量max_points_in_geometry
范围Global Session
动态Yes
类型Integer
默认值65536
最小值3
最大值1048576

st_buffer_strategy()函数的points_per_circle参数的最大值。

max_prepared_stmt_count

属性
系统变量max_prepared_stmt_count
范围Global
动态Yes
类型Integer
默认值16382
最小值0
最大值1048576

此变量限制服务器中已准备语句的总数。它可以用于可能发生拒绝服务攻击的环境中,这种攻击的基础是通过准备大量语句使服务器耗尽内存。如果将该值设置为低于当前已准备语句的数量,则现有语句不受影响,可以使用,但在当前语句的数量低于该限制之前,不能准备任何新语句。默认值是16,382。允许的值范围从0到100万。将该值设置为0将禁用准备好的语句。

max_seeks_for_key

属性
系统变量max_seeks_for_key
范围Global, Session
动态Yes
类型Integer
默认值 64bit18446744073709551615
默认值 32bit4294967295
最小值1
最大值 64bit18446744073709551615
最大值 32bit4294967295

当基于键查找行时,限制假定的最大查找数量。MySQL优化器假设,在通过扫描索引来搜索表中匹配的行时,所需要的键查找数量不超过这个数量,而与索引的实际基数无关(参见13.7.6.22节“显示索引语法”)。通过将其设置为一个低值(比如100),可以强制MySQL选择索引而不是表扫描。

max_sort_length

属性
系统变量max_sort_length
范围Global, Session
动态Yes
类型Integer
默认值1024
最小值4
最大值8388608

当排序时只使用该列的前max_sort_length个字节,服务器只使用每个值的前max_sort_length字节,而忽略其余的字节。因此,对于GROUP BY、ORDER BY和DISTINCT的操作,只有在max_sort_length字节之后才会有不同的值进行比较
增加max_sort_length的值可能还需要增加sort_buffer_size的值。

max_sp_recursion_depth

属性
系统变量max_sp_recursion_depth
范围Global, Session
动态Yes
类型Integer
默认值0
最大值255

递归调用任何给定存储过程的次数。此选项的默认值为0,这将完全禁用存储过程中的递归。最大值是255。

存储过程递归增加了对线程堆栈空间的需求。如果增加max_sp_recursion_depth的值,可能需要在服务器启动时通过增加thread_stack的值来增加线程堆栈的大小。

max_tmp_tables

在MySQL 8.0.3中删除了这个系统变量。

max_user_connections

属性
系统变量max_user_connections
范围Global, Session
动态Yes
类型Integer
默认值0
最小值0
最大值4294967295

允许与任何给定mysql用户帐户同时连接的最大数目。值为0(默认值)表示“无限制”。

这个变量有一个全局值,可以在服务器启动或运行时设置。它还有一个只读会话值,指示应用于与当前会话关联的帐户的有效同时连接限制。会话值初始化如下:

如果用户帐户具有非零的MAX_USER_CONNECTIONS资源限制,则会话MAX_USER_CONNECTIONS值设置为该限制。

否则,会话max_user_connections值设置为全局值。

使用CREATE USER或ALTER USER语句指定帐户资源限制。

max_write_lock_count

属性
系统变量max_write_lock_count
范围Global,
动态Yes
类型Integer
默认值 64bit18446744073709551615
默认值 32bit4294967295
最小值1
最大值 64bit18446744073709551615
最大值 32bit4294967295

在这么多写锁之后,允许在其间处理一些挂起的读锁请求。写锁请求的优先级高于读锁请求。但是,如果max_write_lock_count设置为某个低值(比如10),那么如果读锁请求已经被传递给10个写锁请求,那么读锁请求可能比挂起的写锁请求更可取。通常不会出现这种行为,因为max_write_lock_count默认值非常大。

mecab_rc_file

属性
系统变量mecab_rc_file
范围Global,
动态no
类型Directory name

设置mecab全文分析器时使用mecab_rc_file
mecab_rc_file选项定义mecab rc配置文件的路径,该文件是mecab的配置文件。该选项是只读的,只能在启动时设置。初始化mecab需要mecabrc配置文件。

metadata_locks_cache_size

属性
系统变量metadata_locks_cache_size
范围Global,
动态no
类型Integer
默认值1024
最小值1
最大值1048576
弃用Yes (removed in 8.0.13)

metadata_locks_hash_instances

属性
系统变量metadata_locks_hash_instances
范围Global,
动态no
类型Integer
默认值8
最小值1
最大值1024
弃用Yes (removed in 8.0.13)

min_examined_row_limit

属性
系统变量min_examined_row_limit
范围Global, Session
动态yes
类型Integer
默认值0
最小值0
最大值64bit18446744073709551615
最大值32bit4294967295

检查的行数少于此数的查询不会记录到慢速查询日志中。

multi_range_count

属性
系统变量multi_range_count
范围Global, Session
动态yes
类型Integer
默认值256
最小值1
最大值4294967295
弃用Yes (removed in 8.0.3)

myisam_data_pointer_size

属性
系统变量myisam_data_pointer_size
范围Global,
动态yes
类型Integer
默认值6
最小值2
最大值7

默认的指针大小(以字节为单位),当没有指定MAX_ROWS选项时,MyISAM表的CREATE table 将使用它。这个变量不能小于2,也不能大于7。默认值是6。

myisam_max_sort_file_size

属性
系统变量myisam_max_sort_file_size
范围Global,
动态yes
类型Integer
默认值64bit9223372036854775807
默认值32bit2147483648

MySQL在重新创建MyISAM索引(在修复表、修改表或加载数据期间)时允许使用的临时文件的最大大小。如果文件大小大于这个值,则使用键缓存来创建索引,这比较慢。该值以字节为单位给出。

如果MyISAM索引文件超过此大小,并且磁盘空间可用,则增加该值可能有助于提高性能。空间必须在包含原始索引文件所在目录的文件系统中可用。

myisam_mmap_size

属性
系统变量myisam_mmap_size
范围Global,
动态no
类型Integer
默认值64bit18446744073709551615
默认值32bit4294967295
最小值7
最大值64bit18446744073709551615
最大值32bit4294967295

用于内存映射压缩的MyISAM文件的最大内存量。如果使用许多压缩的MyISAM表,则可以降低该值,以减少内存交换问题的可能性。

myisam_recover_options

属性
系统变量myisam_recover_options
范围Global,
动态no

–myisam-recover-options选项的值

myisam_repair_threads

属性
系统变量myisam_repair_threads
范围Global, Session
动态yes
类型Integer
默认值1
最小值1
最大值64bit18446744073709551615
最大值32bit4294967295

如果该值大于1,则在Repair by sorting过程中并行创建MyISAM表索引(每个索引在其自己的线程中)。默认值是1。

myisam_sort_buffer_size

属性
系统变量myisam_sort_buffer_size
范围Global, Session
动态yes
类型Integer
默认值8388608
最小值4096
最大值32bit18446744073709551615
最大值64bit4294967295
最大值Windows 64bit18446744073709551615
最大值Windows 32bit4294967295

在 REPAIR TABLE 期间对MyISAM索引进行排序或使用CREATE INDEX或ALTER TABLE创建索引时分配的缓冲区大小。

myisam_stats_method

属性
系统变量myisam_stats_method
范围Global, Session
动态yes
类型Enumeration
默认值nulls_unequal
可用值nulls_equal、nulls_unequal、nulls_ignored

当收集关于MyISAM表索引值分布的统计信息时,服务器如何处理空值。这个变量有三个可能的值,nulls_equal、nulls_unequal和nulls_ignore。对于nulls_equal,所有空索引值都被认为是相等的,并形成一个大小等于空值数量的值组。对于nulls_unequal,空值被认为是不等的,每个空值形成大小为1的不同的值组。对于nulls_ignore,将忽略空值。
用于生成表统计信息的方法会影响优化器为查询执行选择索引的方式

myisam_use_mmap

属性
系统变量myisam_use_mmap
范围Global,
动态yes
类型Boolean
默认值off

使用内存映射来读写MyISAM表

mysql_native_password_proxy_users

属性
系统变量mysql_native_password_proxy_users
范围Global,
动态yes
类型Boolean
默认值off

这个变量控制mysql_native_password内置身份验证插件是否支持代理用户。除非启用check_proxy_users系统变量,否则它没有效果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值