MySQL 伺服器維護許多影響其運作的系統變數。大部分系統變數可以在伺服器啟動時,使用命令列或選項檔案中的選項來設定。大部分的系統變數可以在執行階段使用 SET
陳述式動態變更,這可讓您修改伺服器的運作,而無需停止並重新啟動它。某些變數是唯讀的,它們的值由系統環境、MySQL 在系統上的安裝方式,或可能由用於編譯 MySQL 的選項決定。大部分系統變數都有預設值,但也有例外,包括唯讀變數。您也可以在運算式中使用系統變數值。
設定全域系統變數執行階段值通常需要 SYSTEM_VARIABLES_ADMIN
權限(或已棄用的 SUPER
權限)。設定工作階段系統執行階段變數值通常不需要特殊權限,並且任何使用者都可以執行,儘管也有例外。如需詳細資訊,請參閱第 7.1.9.1 節「系統變數權限」。
有幾種方法可以查看系統變數的名稱和值
若要查看伺服器根據其內建預設值和其讀取的任何選項檔案所使用的值,請使用此命令
mysqld --verbose --help
若要查看伺服器僅根據其內建預設值(忽略任何選項檔案中的設定)所使用的值,請使用此命令
mysqld --no-defaults --verbose --help
若要查看執行中伺服器使用的目前值,請使用
SHOW VARIABLES
陳述式或 Performance Schema 系統變數表格。請參閱 第 29.12.14 節「Performance Schema 系統變數表格」。
本節提供每個系統變數的說明。如需系統變數摘要表格,請參閱第 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 Cluster 系統變數」列出特定於 NDB Cluster 的系統變數。
關於特定於複製的伺服器系統變數資訊,請參閱第 19.1.6 節,「複製和二進位記錄選項與變數」。
以下某些變數描述會提及「啟用」或「停用」變數。這些變數可以使用SET
陳述式將其設定為 ON
或 1
來啟用,或設定為 OFF
或 0
來停用。布林變數可以在啟動時設定為 ON
、TRUE
、OFF
和 FALSE
值(不區分大小寫),以及 1
和 0
。請參閱第 6.2.2.4 節,「程式選項修飾詞」。
某些系統變數會控制緩衝區或快取的大小。對於給定的緩衝區,伺服器可能需要配置內部資料結構。這些結構通常從配置給緩衝區的總記憶體中配置,並且所需的空間量可能與平台相關。這表示當您為控制緩衝區大小的系統變數指定值時,實際可用的空間量可能與指定的值不同。在某些情況下,該數量可能小於指定的值。伺服器也可能會向上調整值。例如,如果您為最小值为 1024 的變數指定值為 0,伺服器會將值設定為 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
下。如果值為絕對路徑名稱,則其位置如路徑名稱所給定。
-
命令列格式 --activate-all-roles-on-login[={OFF|ON}]
系統變數 activate_all_roles_on_login
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 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
。 -
命令列格式 --admin-address=addr
系統變數 admin_address
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 要在管理網路介面上接聽 TCP/IP 連線的 IP 位址(請參閱第 7.1.12.1 節,「連線介面」)。沒有預設的
admin_address
值。如果未在啟動時指定此變數,則伺服器不會維護管理介面。伺服器也有一個bind_address
系統變數,用於配置一般(非管理)用戶端 TCP/IP 連線。請參閱第 7.1.12.1 節,「連線介面」。如果指定
admin_address
,其值必須滿足以下要求該值必須是單一 IPv4 位址、IPv6 位址或主機名稱。
該值不能指定萬用字元位址格式(
*
、0.0.0.0
或::
)。該值可以包含網路命名空間指定符。
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
不允許。
-
命令列格式 --admin-port=port_num
系統變數 admin_port
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 33062
最小值 0
最大值 65535
要在管理網路介面上用於連線的 TCP/IP 連接埠號碼(請參閱第 7.1.12.1 節,「連線介面」)。將此變數設定為 0 會導致使用預設值。
如果未指定
admin_address
,則設定admin_port
無效,因為在這種情況下,伺服器不會維護管理網路介面。 -
命令列格式 --admin-ssl-ca=file_name
系統變數 admin_ssl_ca
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_ca
系統變數與ssl_ca
類似,不同之處在於它適用於管理連線介面,而不是主要連線介面。關於設定管理介面的加密支援資訊,請參閱管理介面支援加密連線。 -
命令列格式 --admin-ssl-capath=dir_name
系統變數 admin_ssl_capath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
admin_ssl_capath
系統變數與ssl_capath
類似,不同之處在於它適用於管理連線介面,而不是主要連線介面。關於設定管理介面的加密支援資訊,請參閱管理介面支援加密連線。 -
命令列格式 --admin-ssl-cert=file_name
系統變數 admin_ssl_cert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
admin_ssl_cert
系統變數與ssl_cert
類似,不同之處在於它適用於管理連線介面,而不是主要連線介面。關於設定管理介面的加密支援資訊,請參閱管理介面支援加密連線。 -
命令列格式 --admin-ssl-cipher=name
系統變數 admin_ssl_cipher
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
系統變數類似於admin_ssl_cipher
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。ssl_cipher
此變數指定的清單可以包含以下任何值:
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES256-CCM
ECDHE-ECDSA-AES128-CCM
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-CCM
DHE-RSA-AES128-CCM
DHE-RSA-CHACHA20-POLY1305
當設定此變數時,嘗試在密碼列表中包含此處未顯示的任何值會引發錯誤(
ER_BLOCKED_CIPHER
)。 -
命令列格式 --admin-ssl-crl=file_name
系統變數 admin_ssl_crl
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
系統變數類似於admin_ssl_crl
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。ssl_crl
-
命令列格式 --admin-ssl-crlpath=dir_name
系統變數 admin_ssl_crlpath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
系統變數類似於admin_ssl_crlpath
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。ssl_crlpath
-
命令列格式 --admin-ssl-key=file_name
系統變數 admin_ssl_key
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 NULL
系統變數類似於admin_ssl_key
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。ssl_key
-
命令列格式 --admin-tls-ciphersuites=ciphersuite_list
系統變數 admin_tls_ciphersuites
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
系統變數類似於admin_tls_ciphersuites
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。tls_ciphersuites
此值是由零個或多個冒號分隔的密碼套件名稱組成的清單,這些名稱來自此處列出的名稱:
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
當設定此變數時,嘗試在密碼列表中包含此處未顯示的任何值會引發錯誤(
ER_BLOCKED_CIPHER
)。 -
命令列格式 --admin-tls-version=protocol_list
系統變數 admin_tls_version
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 TLSv1.2,TLSv1.3
系統變數類似於admin_tls_version
,但它適用於管理連線介面,而非主要的連線介面。有關設定管理介面加密支援的資訊,請參閱管理介面的加密連線支援。tls_version
重要MySQL 9.0 不支援 TLSv1 和 TLSv1.1 連線協定。有關更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 協定的支援。
如果 MySQL 伺服器是使用 OpenSSL 1.1.1 或更新版本編譯的,則 MySQL 9.0 支援 TLSv1.3 協定。伺服器會在啟動時檢查 OpenSSL 的版本,如果版本早於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為
TLSv1.2
。
-
命令列格式 --authentication-policy=value
系統變數 authentication_policy
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 *,,
此變數用於管理多重身份驗證 (MFA) 功能。它適用於
和CREATE USER
陳述式的身份驗證因素相關子句,這些陳述式用於管理 MySQL 帳戶定義,其中「因素」對應於與帳戶相關聯的身份驗證方法或外掛程式ALTER USER
控制帳戶可以擁有的身份驗證因素數量。也就是說,它控制哪些因素是必要或允許的。authentication_policy
針對每個因素,
也控制允許哪些外掛程式(或方法)。authentication_policy
會決定未明確命名外掛程式的身份驗證規格的預設身份驗證外掛程式。authentication_policy
由於
僅在建立或變更帳戶時適用,因此變更其值不會對現有的使用者帳戶產生影響。authentication_policy
注意雖然
系統變數對authentication_policy
和CREATE USER
陳述式的身份驗證相關子句施加了某些限制,但具有ALTER USER
權限的使用者不受這些限制的約束。(對於其他情況下不允許的陳述式,會發生警告。)AUTHENTICATION_POLICY_ADMIN
的值是包含 1、2 或 3 個以逗號分隔元素的清單。每個存在的元素可以是身份驗證外掛程式名稱、星號 (authentication_policy
*
)、空白或遺失。(例外:元素 1 不能為空白或遺失。)在所有情況下,元素都可以用空白字元括起來,並且整個清單都用單引號括起來。在清單中為元素
N
指定的值類型會影響帳戶定義中是否必須存在因素N
,以及可以使用哪些身份驗證外掛程式如果元素
N
是身份驗證外掛程式名稱,則因素N
的身份驗證方法是必要的,並且必須使用指定的外掛程式。此外,該外掛程式會成為未明確命名外掛程式的因素
N
身份驗證方法的預設外掛程式。有關詳細資訊,請參閱預設身份驗證外掛程式。使用內部憑證儲存的身份驗證外掛程式只能針對第一個元素指定,並且不能重複。例如,不允許以下設定
authentication_policy = 'caching_sha2_password, sha256_password'
authentication_policy = 'caching_sha2_password, authentication_webauthn, sha256_password'
如果元素
N
是星號 (*
),則因素N
的身份驗證方法是必要的。它可以使用任何對元素N
有效的身份驗證外掛程式(如稍後所述)。如果元素
N
為空白,則因素N
的身份驗證方法是可選的。如果給定,它可以使用任何對元素N
有效的身份驗證外掛程式(如稍後所述)。如果清單中遺失元素
N
(也就是說,值中的逗號少於N
−1 個),則禁止因素N
的身份驗證方法。例如,值為'*'
僅允許單一因素,因此會強制使用單因素身份驗證 (1FA) 來建立的新帳戶,這些帳戶是使用
建立的,或是使用CREATE USER
對現有帳戶所做的變更。在這種情況下,此類陳述式無法指定因素 2 或 3 的身份驗證。ALTER USER
當
元素命名身份驗證外掛程式時,元素的允許外掛程式名稱受以下條件約束authentication_policy
元素 1 必須命名一個不需要註冊步驟的外掛程式。例如,不能命名
authentication_webauthn
。元素 2 和 3 必須命名一個不使用內部憑證儲存的外掛程式。
有關哪些身份驗證外掛程式使用內部憑證儲存的資訊,請參閱第 8.2.15 節「密碼管理」。
當
元素authentication_policy
N
為*
時,帳戶定義中因素N
的允許外掛程式名稱受以下條件約束對於因素 1,帳戶定義可以使用任何外掛程式。預設身份驗證外掛程式規則適用於未命名外掛程式的身份驗證規格。請參閱預設身份驗證外掛程式。
對於因素 2 和 3,帳戶定義不能命名使用內部憑證儲存的外掛程式。例如,使用 '
*,*
'、'*,*,*
'、'*,
'、'*,,
'
設定,使用內部憑證儲存的外掛程式僅允許用於第一個因素,且不能重複。authentication_policy
當
authentication_policy
元素N
為空時,帳戶定義中因素N
允許的插件名稱需符合以下條件對於因素 1,此規則不適用,因為元素 1 不得為空。
對於因素 2 和 3,帳戶定義不能指定使用內部憑證儲存的插件。
空元素必須出現在列表的末尾,接在非空元素之後。換句話說,第一個元素不能為空,而且要么沒有空元素,要么最後一個元素為空,要么最後兩個元素為空。例如,值
',,'
是不允許的,因為這表示所有因素都是可選的。這是不可行的;帳戶必須至少有一個身份驗證因素。authentication_policy
的預設值為'*,,'
。這表示帳戶定義中必須要有因素 1,且可以使用任何身份驗證插件,而因素 2 和 3 則為可選,且每個都可以使用任何不使用內部憑證儲存的身份驗證插件。下表顯示了一些
authentication_policy
值以及每個值為建立或更改帳戶所建立的策略。表 7.4 authentication_policy 值範例
authentication_policy 值 生效策略 '*'
僅允許建立或變更具有一個因素的帳戶。 '*,*'
僅允許建立或變更具有兩個因素的帳戶。 '*,*,*'
僅允許建立或變更具有三個因素的帳戶。 '*,'
允許建立或變更具有一個或兩個因素的帳戶。 '*,,'
允許建立或變更具有一個、兩個或三個因素的帳戶。 '*,*,'
允許建立或變更具有兩個或三個因素的帳戶。 '*,
auth_plugin
'允許建立或變更具有兩個因素的帳戶,其中第一個因素可以使用任何身份驗證方法,而第二個因素必須是指定的插件。 '
auth_plugin
,*,'允許建立或變更具有兩個或三個因素的帳戶,其中第一個因素必須是指定的插件。 '
auth_plugin
,'允許建立或變更具有一個或兩個因素的帳戶,其中第一個因素必須是指定的插件。 '
auth_plugin
,auth_plugin
,auth_plugin
'允許建立或變更具有三個因素的帳戶,其中這些因素必須使用指定的插件。 authentication_windows_log_level
命令列格式 --authentication-windows-log-level=#
系統變數 authentication_windows_log_level
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 0
最大值 4
只有在啟用
authentication_windows
Windows 身份驗證插件且啟用除錯程式碼時,此變數才可用。請參閱第 8.4.1.5 節「Windows 可插拔身份驗證」。此變數設定 Windows 身份驗證插件的記錄層級。下表顯示允許的值。
值 描述 0 不記錄任何訊息 1 僅記錄錯誤訊息 2 記錄層級 1 的訊息和警告訊息 3 記錄層級 2 的訊息和資訊備註 4 記錄層級 3 的訊息和除錯訊息 authentication_windows_use_principal_name
命令列格式 --authentication-windows-use-principal-name[={OFF|ON}]
系統變數 authentication_windows_use_principal_name
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
只有在啟用
authentication_windows
Windows 身份驗證插件時,此變數才可用。請參閱第 8.4.1.5 節「Windows 可插拔身份驗證」。使用
InitSecurityContext()
函數進行身份驗證的客戶端應提供一個字串,用於識別其連接的服務 (targetName
)。MySQL 使用執行伺服器的帳戶的主體名稱 (UPN)。UPN 的格式為
,且不需要在任何地方註冊即可使用。此 UPN 由伺服器在身份驗證交握開始時傳送。user_id
@computer_name
此變數控制伺服器是否在初始挑戰中傳送 UPN。預設情況下,此變數為啟用狀態。出於安全考量,可以停用它,以避免以明文形式將伺服器的帳戶名稱傳送到客戶端。如果此變數停用,則伺服器始終在第一個挑戰中傳送
0x00
位元組,客戶端不指定targetName
,因此會使用 NTLM 身份驗證。如果伺服器無法取得其 UPN(主要發生在不支援 Kerberos 身份驗證的環境中),則伺服器不會傳送 UPN,且會使用 NTLM 身份驗證。
-
命令列格式 --autocommit[={OFF|ON}]
系統變數 autocommit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
自動提交模式。如果設定為 1,則對資料表的所有變更會立即生效。如果設定為 0,您必須使用
COMMIT
來接受交易,或使用ROLLBACK
來取消交易。如果autocommit
為 0,而您將其變更為 1,則 MySQL 會自動COMMIT
任何開啟的交易。開始交易的另一種方法是使用START TRANSACTION
或BEGIN
陳述式。請參閱第 15.3.1 節「START TRANSACTION、COMMIT 和 ROLLBACK 陳述式」。預設情況下,客戶端連線會以
autocommit
設定為 1 開始。若要讓客戶端以預設值 0 開始,請使用--autocommit=0
選項啟動伺服器,來設定全域autocommit
值。若要使用選項檔案來設定變數,請包含以下幾行[mysqld] autocommit=0
-
命令列格式 --automatic-sp-privileges[={OFF|ON}]
系統變數 automatic_sp_privileges
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
當此變數的值為 1 (預設值) 時,如果使用者尚未擁有執行和變更或刪除常式的權限,則伺服器會自動將
EXECUTE
和ALTER ROUTINE
權限授予預存常式的建立者。(刪除常式需要ALTER ROUTINE
權限。)當常式刪除時,伺服器也會自動從建立者那裡刪除這些權限。如果automatic_sp_privileges
為 0,則伺服器不會自動新增或刪除這些權限。常式的建立者是用於執行其
CREATE
陳述式的帳戶。這可能與常式定義中指定為DEFINER
的帳戶不同。如果您使用
--skip-new
啟動 mysqld,則automatic_sp_privileges
會設定為OFF
。 -
命令列格式 --auto-generate-certs[={OFF|ON}]
系統變數 auto_generate_certs
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數控制伺服器是否在資料目錄中自動產生 SSL 金鑰和憑證檔案 (如果它們尚不存在)。
在啟動時,如果啟用
auto_generate_certs
系統變數,且伺服器端 SSL 檔案遺失於資料目錄中,則伺服器會自動在資料目錄中產生伺服器端和客戶端 SSL 憑證和金鑰檔案。在這些情況下,無論任何其他 TLS 選項的值為何,都會產生這些憑證。憑證和金鑰檔案可以使用 SSL 啟用安全的客戶端連線;請參閱第 8.3.1 節「設定 MySQL 以使用加密連線」。如需關於 SSL 檔案自動產生的詳細資訊 (包含檔案名稱和特性),請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」
sha256_password_auto_generate_rsa_keys
和caching_sha2_password_auto_generate_rsa_keys
系統變數是相關的,但控制在未加密連線時,使用 RSA 安全密碼交換所需的 RSA 金鑰配對檔案的自動產生。 -
命令列格式 --back-log=#
系統變數 back_log
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 1
最大值 65535
MySQL 可以擁有的未處理連線請求數。當主要 MySQL 執行緒在極短的時間內收到大量連線請求時,這會產生作用。然後,主要執行緒需要一些時間 (儘管非常短) 來檢查連線並啟動新的執行緒。
back_log
值表示在這段短時間內,在 MySQL 暫時停止回應新的請求之前可以堆疊多少請求。只有在您預期在短時間內有大量連線時,才需要增加此值。換句話說,此值是傳入 TCP/IP 連線的接聽佇列的大小。您的作業系統對此佇列的大小有自己的限制。Unix
listen()
系統呼叫的手冊頁應該有更多詳細資訊。請檢查您的作業系統文件,以取得此變數的最大值。back_log
的設定值不能高於作業系統的限制。預設值為
max_connections
的值,這使得允許的待辦項目調整為允許的最大連線數。 -
MySQL 安裝基礎目錄的路徑。
-
命令列格式 --big-tables[={OFF|ON}]
系統變數 big_tables
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用此選項,伺服器會將所有暫存表格儲存在磁碟上,而不是在記憶體中。這樣可以避免大部分需要大型暫存表格的
SELECT
操作出現The table
錯誤,但也會減慢記憶體表格足夠應付的查詢速度。tbl_name
is full新連線的預設值為
OFF
(使用記憶體中的暫存表格)。通常,永遠都不需要啟用此變數。當記憶體中的內部暫存表格由TempTable
儲存引擎管理(預設)且TempTable
儲存引擎可佔用的最大記憶體量超出時,TempTable
儲存引擎會開始將資料儲存到磁碟上的暫存檔案。當記憶體中的暫存表格由MEMORY
儲存引擎管理時,記憶體中的表格會根據需要自動轉換為基於磁碟的表格。如需詳細資訊,請參閱第 10.4.4 節,「MySQL 中內部暫存表格的使用」。 -
命令列格式 --bind-address=addr
系統變數 bind_address
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 *
MySQL 伺服器會在一個或多個網路 Socket 上接聽 TCP/IP 連線。每個 Socket 都會繫結至一個位址,但一個位址可能會對應到多個網路介面。若要指定伺服器應如何接聽 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 介面上接受 TCP/IP 連線,而且如果伺服器主機支援 IPv6,也會在所有 IPv6 介面上接受連線。使用此位址可允許所有伺服器介面上的 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
伺服器會接聽
red
命名空間中的198.51.100.20
IPv4 位址、blue
命名空間中的2001:db8:0:f101::1
IPv6 位址,以及全域命名空間中的192.0.2.50
IPv4 位址。
當
bind_address
指定單一值(萬用字元或非萬用字元)時,伺服器會接聽單一 Socket,對於萬用字元位址,該 Socket 可以繫結至多個網路介面。當bind_address
指定多個值的清單時,伺服器會接聽每個值一個 Socket,而且每個 Socket 都會繫結至單一網路介面。Socket 的數量與指定的值數量成線性關係。根據作業系統接受連線的效率,較長的值清單可能會導致接受 TCP/IP 連線的效能下降。因為檔案描述元是配置給接聽 Socket 和網路命名空間檔案的,因此可能需要增加
open_files_limit
系統變數。如果您打算將伺服器繫結至特定位址,請確定
mysql.user
系統表格包含具有您可以用來連線至該位址的管理權限的帳戶。否則,您將無法關閉伺服器。例如,如果您將伺服器繫結至*
,您可以使用所有現有的帳戶連線至伺服器。但是,如果您將伺服器繫結至::1
,它只會接受該位址上的連線。在這種情況下,請先確保'root'@'::1'
帳戶存在於mysql.user
表格中,這樣您才能夠仍然連線至伺服器以將其關閉。 -
命令列格式 --block-encryption-mode=#
系統變數 block_encryption_mode
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 aes-128-ecb
此變數控制區塊式演算法(例如 AES)的區塊加密模式。它會影響
AES_ENCRYPT()
和AES_DECRYPT()
的加密。block_encryption_mode
採用aes-
格式的值,其中keylen
-mode
keylen
是以位元表示的金鑰長度,而mode
是加密模式。值不區分大小寫。允許的keylen
值為 128、192 和 256。允許的mode
值為ECB
、CBC
、CFB1
、CFB8
、CFB128
和OFB
。例如,此陳述式會導致 AES 加密函數使用 256 位元的金鑰長度和 CBC 模式
SET block_encryption_mode = 'aes-256-cbc';
嘗試將
block_encryption_mode
設定為包含 SSL 程式庫不支援的不支援金鑰長度或模式的值時,會發生錯誤。 -
這是 160 位元的
SHA1
簽章,會在 Linux 系統上使用-DWITH_BUILD_ID=ON
編譯伺服器時由連結器產生(預設為啟用),並轉換為十六進位字串。此唯讀值可作為唯一的組建 ID,並在啟動時寫入伺服器記錄中。除了 Linux 以外,其他平台不支援
build_id
。 -
命令列格式 --bulk-insert-buffer-size=#
系統變數 bulk_insert_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 8388608
最小值 0
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
單位 位元組/執行緒 當將資料新增至非空表格時,
MyISAM
會使用特殊的樹狀快取,以加快INSERT ... SELECT
、INSERT ... VALUES (...), (...), ...
和LOAD DATA
的大量插入速度。此變數會限制每個執行緒的快取樹狀結構大小(以位元組為單位)。將其設定為 0 會停用此最佳化。預設值為 8MB。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
caching_sha2_password_digest_rounds
命令列格式 --caching-sha2-password-digest-rounds=#
系統變數 caching_sha2_password_digest_rounds
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 5000
最小值 5000
最大值 4095000
caching_sha2_password
驗證外掛程式用於密碼儲存的雜湊回合數。將雜湊回合數增加到高於預設值會產生效能損失,該損失與增加量成正比
建立使用
caching_sha2_password
外掛程式的帳戶不會影響建立帳戶的用戶端會期,但伺服器必須執行雜湊回合才能完成作業。對於使用該帳戶的用戶端連線,伺服器必須執行雜湊回合,並將結果儲存在快取中。第一次用戶端連線的登入時間會較長,但後續連線則不會。此行為會在每次伺服器重新啟動後發生。
caching_sha2_password_auto_generate_rsa_keys
命令列格式 --caching-sha2-password-auto-generate-rsa-keys[={OFF|ON}]
系統變數 caching_sha2_password_auto_generate_rsa_keys
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果資料目錄中尚不存在 RSA 私密/公開金鑰配對檔案,伺服器會使用此變數來判斷是否要自動產生它們。
在啟動時,如果滿足以下所有條件,伺服器會在資料目錄中自動產生 RSA 私鑰/公鑰對檔案:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系統變數已啟用;未指定 RSA 選項;資料目錄中缺少 RSA 檔案。這些金鑰對檔案可讓使用sha256_password
或caching_sha2_password
外掛程式驗證的帳戶,透過未加密連線使用 RSA 安全地交換密碼;請參閱第 8.4.1.2 節「SHA-256 可插拔驗證」和 第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。有關 RSA 檔案自動產生(包括檔案名稱和特性)的詳細資訊,請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」。
auto_generate_certs
系統變數相關,但控制使用 SSL 安全連線所需的 SSL 憑證和金鑰檔案的自動產生。caching_sha2_password_private_key_path
命令列格式 --caching-sha2-password-private-key-path=檔案名稱
系統變數 caching_sha2_password_private_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 private_key.pem
此變數指定
caching_sha2_password
驗證外掛程式的 RSA 私鑰檔案的路徑名稱。如果該檔案被命名為相對路徑,則會相對於伺服器資料目錄進行解釋。該檔案必須為 PEM 格式。重要由於此檔案儲存私鑰,因此其存取模式應受到限制,以便只有 MySQL 伺服器可以讀取它。
有關
caching_sha2_password
的資訊,請參閱第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。caching_sha2_password_public_key_path
命令列格式 --caching-sha2-password-public-key-path=檔案名稱
系統變數 caching_sha2_password_public_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 public_key.pem
此變數指定
caching_sha2_password
驗證外掛程式的 RSA 公鑰檔案的路徑名稱。如果該檔案被命名為相對路徑,則會相對於伺服器資料目錄進行解釋。該檔案必須為 PEM 格式。有關
caching_sha2_password
的資訊(包括用戶端如何請求 RSA 公鑰的資訊),請參閱第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。-
系統變數 character_set_client
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
從用戶端傳入的語句的字元集。此變數的工作階段值是在用戶端連線至伺服器時,使用用戶端要求的字元集設定。(許多用戶端都支援
--default-character-set
選項,以明確指定此字元集。另請參閱第 12.4 節「連線字元集和校對」。)當用戶端請求的值未知或不可用,或伺服器設定為忽略用戶端請求時,會使用該變數的整體值設定工作階段值。當用戶端請求伺服器不認識的字元集時(例如,當啟用日語的用戶端在連線至未設定sjis
支援的伺服器時請求sjis
時),可能會發生這種情況。某些字元集不能用作用戶端字元集。嘗試將它們用作
character_set_client
值會產生錯誤。請參閱不允許的用戶端字元集。 -
系統變數 character_set_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
用於未指定字元集引導器的文字字串和數字到字串轉換的字元集。有關引導器的資訊,請參閱第 12.3.8 節「字元集引導器」。
-
系統變數 character_set_database
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。 預設資料庫使用的字元集。伺服器會在預設資料庫變更時設定此變數。如果沒有預設資料庫,則此變數的值與
character_set_server
相同。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
全域
character_set_database
和collation_database
系統變數已過時;預計在未來版本的 MySQL 中將移除它們。將值指派給工作階段
character_set_database
和collation_database
系統變數已過時,並且指派會產生警告。預計在未來版本的 MySQL 中,工作階段變數將變成唯讀(並且對它們的指派會產生錯誤),在未來版本的 MySQL 中,仍然可以存取工作階段變數以確定預設資料庫的資料庫字元集和校對。 -
命令列格式 --character-set-filesystem=名稱
系統變數 character_set_filesystem
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 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 節,「系統變數權限」。
-
系統變數 character_set_results
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
用於將查詢結果傳回給用戶端的字元集。這包括結果資料(例如欄位值)、結果中繼資料(例如欄位名稱)和錯誤訊息。
-
命令列格式 --character-set-server=名稱
系統變數 character_set_server
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4
伺服器的預設字元集。請參閱第 12.15 節「字元集組態」。如果您設定此變數,則還應設定
collation_server
以指定字元集的校對。 -
系統變數 character_set_system
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 utf8mb3
伺服器用於儲存識別碼的字元集。該值始終為
utf8mb3
。 -
命令列格式 --character-sets-dir=目錄名稱
系統變數 character_sets_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 安裝字元集的目錄。請參閱第 12.15 節「字元集組態」。
-
命令列格式 --check-proxy-users[={OFF|ON}]
系統變數 check_proxy_users
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
某些驗證外掛程式會為自己實作代理使用者對應(例如,PAM 和 Windows 驗證外掛程式)。其他驗證外掛程式預設不支援代理使用者。
sha256_password
可以請求 MySQL 伺服器本身根據授與的代理權限來對應代理使用者。如果啟用
check_proxy_users
系統變數,則伺服器會為任何提出此類請求的驗證外掛程式執行代理使用者對應。要利用伺服器對sha256_password
外掛程式的代理使用者對應支援,您必須啟用sha256_password_proxy_users
。有關使用者代理的資訊,請參閱第 8.2.19 節「代理使用者」。
-
系統變數 collation_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 連線字元集的校對。
collation_connection
對於文字字串的比較非常重要。對於字串與欄位值的比較,collation_connection
並不重要,因為欄位有自己的校對,其校對優先順序較高(請參閱第 12.8.4 節「運算式中的校對強制轉換」)。為此變數使用使用者定義的校對名稱會引發警告。
-
系統變數 collation_database
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4_0900_ai_ci
腳註 此選項是動態的,但應僅由伺服器設定。您不應手動設定此變數。 預設資料庫使用的校對。伺服器會在預設資料庫變更時設定此變數。如果沒有預設資料庫,則此變數的值與
collation_server
相同。全域
character_set_database
和collation_database
系統變數已過時;預計在未來版本的 MySQL 中將移除它們。將值指派給 session 的
character_set_database
和collation_database
系統變數已棄用,且指派會產生警告。預期在未來版本的 MySQL 中,session 變數會變成唯讀(且指派會產生錯誤),屆時仍然可以存取 session 變數,以判斷預設資料庫的資料庫字元集和排序規則。針對
collation_database
使用使用者定義的排序規則名稱會引發警告。 -
命令列格式 --collation-server=name
系統變數 collation_server
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 utf8mb4_0900_ai_ci
伺服器的預設排序規則。請參閱 第 12.15 節,〈字元集組態〉。
將此設定為使用者定義的排序規則名稱會引發警告。
-
命令列格式 --completion-type=#
系統變數 completion_type
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 NO_CHAIN
有效值 NO_CHAIN
CHAIN
RELEASE
0
1
2
交易完成類型。此變數可以採用下表所示的值。可以使用名稱值或對應的整數值指派變數。
值 描述 NO_CHAIN
(或 0)COMMIT
和ROLLBACK
不受影響。這是預設值。CHAIN
(或 1)COMMIT
和ROLLBACK
分別等同於COMMIT AND CHAIN
和ROLLBACK AND CHAIN
。(新的交易會立即開始,其隔離等級與剛終止的交易相同。)RELEASE
(或 2)COMMIT
和ROLLBACK
分別等同於COMMIT RELEASE
和ROLLBACK RELEASE
。(伺服器會在終止交易後斷線。)completion_type
會影響以START TRANSACTION
或BEGIN
開始,並以COMMIT
或ROLLBACK
結束的交易。它不適用於 第 15.3.3 節,〈會導致隱含 COMMIT 的陳述式〉中所列陳述式執行所造成的隱含提交。它也不適用於XA COMMIT
、XA ROLLBACK
,或當autocommit=1
時。 -
命令列格式 --component-scheduler.enabled[=value]
系統變數 component_scheduler.enabled
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
在啟動時設定為
OFF
時,背景執行緒不會啟動。仍然可以排程任務,但除非啟用component_scheduler
,否則它們不會執行。在啟動時設定為ON
時,元件會完全運作。也可以動態設定值以取得下列效果
ON
會啟動背景執行緒,並立即開始處理佇列。OFF
會發出背景執行緒終止的訊號,並等待其結束。背景執行緒會在存取佇列以檢查是否有任務要執行之前,檢查終止旗標。
-
命令列格式 --concurrent-insert[=value]
系統變數 concurrent_insert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 AUTO
有效值 NEVER
AUTO
ALWAYS
0
1
2
如果為
AUTO
(預設值),MySQL 允許針對資料檔案中間沒有可用區塊的MyISAM
資料表同時執行INSERT
和SELECT
陳述式。此變數可以採用下表所示的值。可以使用名稱值或對應的整數值指派變數。
值 描述 NEVER
(或 0)停用並行插入 AUTO
(或 1)(預設值) 針對沒有漏洞的 MyISAM
資料表啟用並行插入ALWAYS
(或 2)針對所有 MyISAM
資料表啟用並行插入,即使是具有漏洞的資料表。對於具有漏洞的資料表,如果另一個執行緒正在使用它,則會在資料表末尾插入新的列。否則,MySQL 會取得一般寫入鎖定,並將列插入漏洞中。如果您使用
--skip-new
啟動 mysqld,則concurrent_insert
會設定為NEVER
。另請參閱 第 10.11.3 節,〈並行插入〉。
-
命令列格式 --connect-timeout=#
系統變數 connect_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 2
最大值 31536000
單位 秒 mysqld 伺服器在回應
Bad handshake
之前,等待連線封包的秒數。預設值為 10 秒。如果用戶端經常遇到
Lost connection to MySQL server at '
形式的錯誤,增加XXX
', system error:errno
connect_timeout
值可能會有所幫助。 -
命令列格式 --connection-memory-chunk-size=#
系統變數 connection_memory_chunk_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 0
最大值 536870912
單位 位元組 設定全域記憶體使用計數器
Global_connection_memory
更新的區塊大小。只有在所有使用者連線的總記憶體消耗量變動超過此數量時,才會更新狀態變數。設定connection_memory_chunk_size = 0
即可停用更新。記憶體計算不包含系統使用者 (例如 MySQL root 使用者) 所使用的任何記憶體。
InnoDB
緩衝池所使用的記憶體也不包含在內。您必須具有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。 -
命令列格式 --connection-memory-limit=#
系統變數 connection_memory_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 18446744073709551615
最小值 2097152
最大值 18446744073709551615
單位 位元組 設定單一使用者連線可以使用的最大記憶體量。如果任何使用者連線使用的記憶體超過此數量,則會拒絕來自此連線的所有查詢,並顯示
ER_CONN_LIMIT
,包括目前正在執行的任何查詢。此變數設定的限制不適用於系統使用者或 MySQL root 帳戶。
InnoDB
緩衝池所使用的記憶體也不包含在內。您必須具有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。 -
伺服器意外結束時是否寫入核心檔案。此變數由
--core-file
選項設定。 -
命令列格式 --create-admin-listener-thread[={OFF|ON}]
系統變數 create_admin_listener_thread
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否針對管理網路介面上的用戶端連線使用專用接聽執行緒 (請參閱 第 7.1.12.1 節,〈連線介面〉)。預設值為
OFF
;也就是說,主要介面上一般連線的管理器執行緒也會處理管理介面的連線。根據平台類型和工作負載等因素,您可能會發現此變數的其中一個設定會產生比另一個設定更好的效能。
如果未指定
admin_address
,則設定create_admin_listener_thread
無效,因為在這種情況下,伺服器不會維護管理網路介面。 -
命令列格式 --cte-max-recursion-depth=#
系統變數 cte_max_recursion_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 0
最大值 4294967295
通用資料表運算式 (CTE) 的最大遞迴深度。伺服器會終止任何遞迴層級超過此變數值的 CTE 執行。如需詳細資訊,請參閱 限制通用資料表運算式遞迴。
-
MySQL 伺服器資料目錄的路徑。相對路徑會相對於目前目錄解析。如果您預期伺服器會自動啟動 (也就是在您無法事先知道目前目錄的內容中),最好將
datadir
值指定為絕對路徑。 -
命令列格式 --debug[=debug_options]
系統變數 debug
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 (Unix) d:t:i:o,/tmp/mysqld.trace
預設值 (Windows) d:t:i:O,\mysqld.trace
此變數會指出目前的偵錯設定。它僅適用於具有偵錯支援所建置的伺服器。初始值來自伺服器啟動時所提供的
--debug
選項執行個體值。全域和 session 值可以在執行階段設定。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 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 套件〉。
-
系統變數 debug_sync
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數是除錯同步功能的用戶介面。使用除錯同步需要使用
-DWITH_DEBUG=ON
CMake 選項配置 MySQL(請參閱第 2.8.7 節,「MySQL 原始碼配置選項」);否則,此系統變數將不可用。全域變數值為唯讀,並指示該功能是否啟用。預設情況下,除錯同步處於停用狀態,
debug_sync
的值為OFF
。如果伺服器使用--debug-sync-timeout=
啟動,其中N
N
是大於 0 的逾時值,則會啟用除錯同步,並且debug_sync
的值為ON - current signal
,後面接著訊號名稱。此外,N
會成為個別同步點的預設逾時值。任何使用者都可以讀取工作階段值,並且其值與全域變數相同。可以設定工作階段值來控制同步點。
設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
有關除錯同步功能以及如何使用同步點的說明,請參閱 MySQL 內部:測試同步。
-
系統變數 default_collation_for_utf8mb4
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 有效值 utf8mb4_0900_ai_ci
utf8mb4_general_ci
重要default_collation_for_utf8mb4
系統變數僅供 MySQL 複寫內部使用。此變數由伺服器設定為
utf8mb4
字元集的預設定序。變數的值會從來源複寫到複本,以便複本可以正確處理來自utf8mb4
預設定序不同的來源的資料。此變數的主要目的是支援從 MySQL 5.7 或更舊的複寫來源伺服器複寫到較新的 MySQL 複本伺服器,或使用 MySQL 5.7 主要節點和一個或多個 MySQL 8.0 或更新版本的次要節點進行群組複寫。MySQL 5.7 中utf8mb4
的預設定序為utf8mb4_general_ci
,但在較新的發行系列中為utf8mb4_0900_ai_ci
。此變數在 MySQL 8.0 之前的版本中不存在,因此如果複本未收到變數的值,則會假設來源來自較早的版本,並將值設定為先前的預設定序utf8mb4_general_ci
。下列陳述式使用預設的
utf8mb4
定序CREATE TABLE
和ALTER TABLE
,具有CHARACTER SET utf8mb4
子句,但沒有COLLATION
子句,無論是針對資料表字元集還是針對資料行字元集。CREATE DATABASE
和ALTER DATABASE
,具有CHARACTER SET utf8mb4
子句,但沒有COLLATION
子句。任何包含
_utf8mb4'
形式的字串常值的陳述式,但沒有some text
'COLLATE
子句。
另請參閱 第 12.9 節,「Unicode 支援」。
-
命令列格式 --default-password-lifetime=#
系統變數 default_password_lifetime
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 65535
單位 天 此變數定義全域自動密碼過期原則。預設的
default_password_lifetime
值為 0,表示停用自動密碼過期。如果default_password_lifetime
的值為正整數N
,則表示允許的密碼生命週期;密碼必須每N
天變更一次。可以使用
CREATE USER
和ALTER USER
陳述式的密碼過期選項,視需要為個別帳戶覆寫全域密碼過期原則。請參閱第 8.2.15 節,「密碼管理」。 -
命令列格式 --default-storage-engine=名稱
系統變數 default_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 InnoDB
資料表的預設儲存引擎。請參閱 第 18 章,《替代儲存引擎》。此變數僅設定永久資料表的儲存引擎。若要設定
TEMPORARY
資料表的儲存引擎,請設定default_tmp_storage_engine
系統變數。若要查看哪些儲存引擎可用且已啟用,請使用
SHOW ENGINES
陳述式或查詢INFORMATION_SCHEMA
ENGINES
資料表。如果您在伺服器啟動時停用預設儲存引擎,則必須將永久和
TEMPORARY
資料表的預設引擎設定為不同的引擎,否則伺服器將不會啟動。 -
命令列格式 --default-table-encryption[={OFF|ON}]
系統變數 default_table_encryption
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 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 節,「持續性系統變數」。如需更多資訊,請參閱定義結構描述和一般表格空間的預設加密。
-
命令列格式 --default-tmp-storage-engine=名稱
系統變數 default_tmp_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 InnoDB
TEMPORARY
資料表(使用CREATE TEMPORARY TABLE
建立)的預設儲存引擎。若要設定永久資料表的儲存引擎,請設定default_storage_engine
系統變數。另請參閱有關該變數的可能值討論。如果您在伺服器啟動時停用預設儲存引擎,則必須將永久和
TEMPORARY
資料表的預設引擎設定為不同的引擎,否則伺服器將不會啟動。 -
命令列格式 --default-week-format=#
系統變數 default_week_format
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 7
用於
WEEK()
函式的預設模式值。請參閱第 14.7 節,「日期和時間函式」。 -
命令列格式 --delay-key-write[={OFF|ON|ALL}]
系統變數 delay_key_write
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 ON
有效值 OFF
ON
ALL
此變數指定如何使用延遲索引鍵寫入。它僅適用於
MyISAM
資料表。延遲索引鍵寫入會導致索引鍵緩衝區不會在寫入之間清除。另請參閱第 18.2.1 節,「MyISAM 啟動選項」。此變數可以具有下列其中一個值,以影響
CREATE TABLE
陳述式中可以使用的DELAY_KEY_WRITE
資料表選項的處理方式。選項 描述 OFF
DELAY_KEY_WRITE
會被忽略。ON
MySQL 會遵守 CREATE TABLE
陳述式中指定的任何DELAY_KEY_WRITE
選項。這是預設值。ALL
所有新開啟的資料表都會被視為使用 DELAY_KEY_WRITE
選項啟用的情況下建立。注意如果您將此變數設定為
ALL
,則不應在資料表使用中時,從其他程式(例如其他 MySQL 伺服器或 myisamchk)中使用MyISAM
資料表。這樣做會導致索引損毀。如果為資料表啟用
DELAY_KEY_WRITE
,則不會在每次索引更新時清除該資料表的索引鍵緩衝區,而只會在資料表關閉時清除。這可以大幅加快索引鍵的寫入速度,但如果您使用此功能,則應新增對所有MyISAM
資料表的自動檢查,方法是使用設定的myisam_recover_options
系統變數啟動伺服器(例如,myisam_recover_options='BACKUP,FORCE'
)。請參閱第 7.1.8 節,「伺服器系統變數」和 第 18.2.1 節,「MyISAM 啟動選項」。如果您使用
--skip-new
啟動 mysqld,則delay_key_write
會設定為OFF
。警告如果您使用
--external-locking
啟用外部鎖定,則無法防止使用延遲索引鍵寫入的資料表發生索引損毀。 -
命令列格式 --delayed-insert-limit=#
已淘汰 是 系統變數 delayed_insert_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
此系統變數已淘汰(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中移除。 -
命令列格式 --delayed-insert-timeout=#
已淘汰 是 系統變數 delayed_insert_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 1
最大值 31536000
單位 秒 此系統變數已淘汰(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中移除。 -
命令列格式 --delayed-queue-size=#
已淘汰 是 系統變數 delayed_queue_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 1
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
此系統變數已淘汰(因為不支援
DELAYED
插入),您應該預期它會在未來的版本中移除。 -
命令列格式 --disabled-storage-engines=引擎[,引擎]...
系統變數 disabled_storage_engines
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 空字串
此變數指示哪些儲存引擎不能用於建立資料表或表格空間。例如,為了防止建立新的
MyISAM
或FEDERATED
資料表,請在伺服器選項檔案中使用以下幾行啟動伺服器[mysqld] disabled_storage_engines="MyISAM,FEDERATED"
預設情況下,
disabled_storage_engines
為空(未停用任何引擎),但可以設定為以逗號分隔的一個或多個引擎列表(不區分大小寫)。值中指定的任何引擎都不能用於使用CREATE TABLE
或CREATE TABLESPACE
來建立資料表或表格空間,也不能與ALTER TABLE ... ENGINE
或ALTER TABLESPACE ... ENGINE
一起使用來變更現有資料表或表格空間的儲存引擎。嘗試這樣做會導致ER_DISABLED_STORAGE_ENGINE
錯誤。disabled_storage_engines
不會限制現有資料表的其他 DDL 陳述式,例如CREATE INDEX
、TRUNCATE TABLE
、ANALYZE TABLE
、DROP TABLE
或DROP TABLESPACE
。這允許平滑轉換,以便可以使用禁用引擎的現有資料表或表格空間透過例如ALTER TABLE ... ENGINE
等方式遷移到允許的引擎。permitted_engine
允許將
default_storage_engine
或default_tmp_storage_engine
系統變數設定為已停用的儲存引擎。這可能會導致應用程式行為不穩定或失敗,儘管這可能是在開發環境中識別使用已停用引擎的應用程式的有用技術,以便可以修改它們。如果伺服器以以下任何選項啟動,則
disabled_storage_engines
會被停用且無效:--initialize
、--initialize-insecure
、--skip-grant-tables
。 disconnect_on_expired_password
命令列格式 --disconnect-on-expired-password[={OFF|ON}]
系統變數 disconnect_on_expired_password
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數控制伺服器如何處理密碼過期的用戶端
如果用戶端表示它可以處理過期的密碼,則
disconnect_on_expired_password
的值無關緊要。伺服器允許用戶端連線,但會將其置於沙箱模式。如果用戶端未表示它可以處理過期的密碼,則伺服器會根據
disconnect_on_expired_password
的值處理用戶端如果
disconnect_on_expired_password
:已啟用,伺服器會斷開用戶端的連線。如果
disconnect_on_expired_password
:已停用,伺服器允許用戶端連線,但會將其置於沙箱模式。
有關用戶端和伺服器關於過期密碼處理設定的互動的詳細資訊,請參閱 第 8.2.16 節「伺服器處理過期密碼」。
-
命令列格式 --div-precision-increment=#
系統變數 div_precision_increment
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4
最小值 0
最大值 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
命令列格式 --dragnet.log-error-filter-rules=value
系統變數 dragnet.log_error_filter_rules
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 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
命令列格式 --enterprise-encryption.maximum-rsa-key-size=#
系統變數 enterprise_encryption.maximum_rsa_key_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4096
最小值 2048
最大值 16384
此變數限制 MySQL Enterprise Encryption 產生的 RSA 金鑰最大大小。僅在安裝 MySQL Enterprise Encryption 元件
component_enterprise_encryption
時,此變數才可用。最低設定為 2048 位元,這是目前最佳實務可接受的最小 RSA 金鑰長度。預設設定為 4096 位元。最高設定為 16384 位元。產生較長的金鑰可能會消耗大量 CPU 資源,因此您可以使用此設定將金鑰限制為滿足您的需求並同時平衡資源使用情況的長度。有關更多資訊,請參閱 第 8.6.2 節「設定 MySQL Enterprise Encryption」。
enterprise_encryption.rsa_support_legacy_padding
命令列格式 --enterprise-encryption.rsa-support-legacy-padding[={OFF|ON}]
系統變數 enterprise_encryption.rsa_support_legacy_padding
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制 MySQL Enterprise Encryption 使用舊的
openssl_udf
共用程式庫函式產生的加密資料和簽章是否可以由 MySQL Enterprise Encryption 元件 (component_enterprise_encryption
) 解密或驗證。僅在安裝 MySQL Enterprise Encryption 元件時,此變數才可用。為了讓元件函式支援解密和驗證舊的
openssl_udf
共用程式庫函式產生的內容,您必須將系統變數填補設定為ON
。當設定為ON
時,如果元件函式在假設內容具有 RSAES-OAEP 或 RSASSA-PSS 方案(由元件使用)時無法解密或驗證,則它們會再次嘗試假設內容具有 RSAES-PKCS1-v1_5 或 RSASSA-PKCS1-v1_5 方案(由openssl_udf
共用程式庫函式使用)。當設定為OFF
時,如果元件函式無法使用其正常方案解密或驗證內容,則它們會傳回 null 輸出。有關更多資訊,請參閱 第 8.6.2 節「設定 MySQL Enterprise Encryption」。-
命令列格式 --end-markers-in-json[={OFF|ON}]
系統變數 end_markers_in_json
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
最佳化工具 JSON 輸出是否應新增結束標記。請參閱 MySQL 內部:end_markers_in_json 系統變數。
-
命令列格式 --eq-range-index-dive-limit=#
系統變數 eq_range_index_dive_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 200
最小值 0
最大值 4294967295
此變數表示當最佳化工具在估計符合條件的資料列數時,應該從使用索引深入查詢切換到使用索引統計資料時,等式比較條件中的等式範圍數量。它適用於評估具有以下任一等效形式的運算式,其中最佳化工具使用非唯一索引來查閱
col_name
值col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valN
在兩種情況下,運算式都包含
N
個等式範圍。最佳化工具可以使用索引深入查詢或索引統計資料來進行資料列估計。如果eq_range_index_dive_limit
大於 0,則如果存在eq_range_index_dive_limit
個或更多等式範圍,則最佳化工具會使用現有的索引統計資料,而不是索引深入查詢。因此,為了允許最多N
個等式範圍使用索引深入查詢,請將eq_range_index_dive_limit
設定為N
+ 1。為了停用索引統計資料的使用,並始終使用索引深入查詢,而不考慮N
,請將eq_range_index_dive_limit
設定為 0。有關更多資訊,請參閱 多值比較的等式範圍最佳化。
若要更新資料表索引統計資料以獲得最佳估計,請使用
ANALYZE TABLE
。 由上一個產生訊息的陳述式所導致的錯誤數量。此變數為唯讀。請參閱第 15.7.7.18 節,「SHOW ERRORS 陳述式」。
-
命令列格式 --event-scheduler[=value]
系統變數 event_scheduler
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 ON
有效值 ON
OFF
DISABLED
此變數啟用或停用,並啟動或停止事件排程器。可能的狀態值為
ON
、OFF
和DISABLED
。將事件排程器設定為OFF
與停用事件排程器不同,後者需要將狀態設定為DISABLED
。此變數及其對事件排程器操作的影響在第 27.5.2 節,「事件排程器組態」中有更詳細的討論。 -
命令列格式 --explain-format=format
系統變數 explain_format
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 TRADITIONAL
有效值 TRADITIONAL (預設值)
JSON
TREE
此變數決定在顯示查詢執行計畫時,若沒有
FORMAT
選項的情況下,EXPLAIN
所使用的預設輸出格式。此處列出可能的值及其影響:TRADITIONAL
:使用 MySQL 傳統的表格式輸出,如同在EXPLAIN
陳述式中指定了FORMAT=TRADITIONAL
一樣。這是變數的預設值。DEFAULT
也被支援作為TRADITIONAL
的同義詞,並具有完全相同的效果。注意DEFAULT
不能作為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
系統變數不會對EXPLAIN
輸出產生影響。設定
explain_format
的 Session 值不需要特殊權限;在全域層級設定它需要SYSTEM_VARIABLES_ADMIN
(或已棄用的SUPER
權限)。請參閱第 7.1.9.1 節,「系統變數權限」。如需更多資訊和範例,請參閱取得執行計畫資訊。
-
命令列格式 --explain-json-format-version=#
系統變數 explain_json_format_version
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 1
最大值 2
決定
EXPLAIN FORMAT=JSON
陳述式所使用的 JSON 輸出格式版本。將此變數設定為1
會使伺服器使用版本 1,這是較舊版本的 MySQL 中此類陳述式的線性輸出格式;這是 MySQL 9.0 中的預設值。將explain_json_format_version
設定為2
會使用版本 2 格式;此 JSON 輸出格式基於存取路徑,旨在提供與未來 MySQL Optimizer 版本的更好的相容性。如需使用範例,請參閱取得執行計畫資訊。
explicit_defaults_for_timestamp
命令列格式 --explicit-defaults-for-timestamp[={OFF|ON}]
已淘汰 是 系統變數 explicit_defaults_for_timestamp
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
此系統變數決定伺服器是否為
TIMESTAMP
欄位的預設值和NULL
值處理啟用某些非標準行為。預設情況下,explicit_defaults_for_timestamp
為啟用,這會停用非標準行為。停用explicit_defaults_for_timestamp
會產生警告。如果
explicit_defaults_for_timestamp
已停用,伺服器會啟用非標準行為,並以下列方式處理TIMESTAMP
欄位:沒有明確宣告
NULL
屬性的TIMESTAMP
欄位會自動宣告為具有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()
。沒有明確宣告
NOT NULL
屬性的TIMESTAMP
欄位會自動宣告為具有NULL
屬性並允許NULL
值。為此類欄位指派NULL
值會將其設定為NULL
,而不是目前時間戳記。宣告為具有
NOT NULL
屬性的TIMESTAMP
欄位不允許NULL
值。對於為此類欄位指定NULL
的插入操作,如果啟用嚴格 SQL 模式,則單列插入會產生錯誤,否則在停用嚴格 SQL 模式的情況下,多列插入會插入'0000-00-00 00:00:00'
。在任何情況下,為欄位指派NULL
值都不會將其設定為目前時間戳記。明確宣告為具有
NOT NULL
屬性且沒有明確DEFAULT
屬性的TIMESTAMP
欄位會被視為沒有預設值。對於未指定此類欄位明確值的插入列,結果取決於 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
系統變數。注意explicit_defaults_for_timestamp
本身已被棄用,因為其唯一目的是允許控制已棄用的TIMESTAMP
行為,這些行為將在未來的 MySQL 版本中移除。當這些行為被移除時,預期explicit_defaults_for_timestamp
也將被移除。如需其他資訊,請參閱章節 13.2.5,「TIMESTAMP 和 DATETIME 的自動初始化和更新」。
-
系統變數 external_user
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 字串 驗證過程中使用的外部使用者名稱,由用來驗證用戶端的插件設定。使用原生(內建)MySQL 驗證,或如果插件未設定值,則此變數為
NULL
。請參閱章節 8.2.19,「Proxy Users」。 -
如果為
ON
,伺服器會在每個 SQL 語句之後將所有變更刷新(同步)到磁碟。正常情況下,MySQL 只會在每個 SQL 語句之後將所有變更寫入磁碟,並讓作業系統處理與磁碟的同步。請參閱章節 B.3.3.3,「如果 MySQL 持續崩潰時該怎麼辦」。如果您使用--flush
選項啟動 mysqld,則此變數會設定為ON
。注意如果啟用了
flush
,則flush_time
的值無關緊要,且對flush_time
的變更不會影響刷新行為。 -
命令列格式 --flush-time=#
系統變數 flush_time
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 31536000
單位 秒 如果此值設定為非零值,則每隔
flush_time
秒會關閉所有資料表,以釋放資源並將未刷新的資料同步到磁碟。此選項最好僅在資源最少的系統上使用。注意如果啟用了
flush
,則flush_time
的值無關緊要,且對flush_time
的變更不會影響刷新行為。 -
系統變數 foreign_key_checks
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
如果設定為 1(預設值),則會檢查外鍵約束。如果設定為 0,則會忽略外鍵約束,但有幾個例外。重新建立已卸除的資料表時,如果資料表定義不符合參考該資料表的外鍵約束,則會傳回錯誤。同樣地,如果外鍵定義格式不正確,
ALTER TABLE
作業會傳回錯誤。如需更多資訊,請參閱章節 15.1.20.5,「外鍵約束」。設定此變數對
NDB
資料表的作用與對InnoDB
資料表的作用相同。通常,您會在正常操作期間啟用此設定,以強制執行參考完整性。停用外鍵檢查對於以與其父/子關係要求的順序不同的順序重新載入InnoDB
資料表很有用。請參閱章節 15.1.20.5,「外鍵約束」。將
foreign_key_checks
設定為 0 也會影響資料定義語句:DROP SCHEMA
會卸除綱要,即使它包含具有外部綱要資料表參考之外鍵的資料表,而且DROP TABLE
會卸除具有其他資料表參考之外鍵的資料表。注意將
foreign_key_checks
設定為 1 不會觸發現有資料表資料的掃描。因此,當foreign_key_checks = 0
時新增至資料表的資料列不會驗證一致性。即使使用
foreign_key_checks=0
,也不允許卸除外鍵約束所需的索引。必須先移除外鍵約束,才能卸除索引。 -
命令列格式 --ft-boolean-syntax=name
系統變數 ft_boolean_syntax
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 + -><()~*:""&|
使用
IN BOOLEAN MODE
執行的布林全文搜尋所支援的運算子清單。請參閱章節 14.9.2,「布林全文搜尋」。預設變數值為
'+ -><()~*:""&|'
。變更值的規則如下運算子功能由字串中的位置決定。
取代值必須是 14 個字元。
每個字元必須是 ASCII 非字母數字字元。
第一個或第二個字元必須是空格。
除位置 11 和 12 中的片語引號運算子外,不允許重複。這兩個字元不需要相同,但它們是唯一可以相同的兩個字元。
位置 10、13 和 14(預設設定為
:
、&
和|
)保留給未來的擴充功能。
-
命令列格式 --ft-max-word-len=#
系統變數 ft_max_word_len
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 84
最小值 10
最大值 84
要包含在
MyISAM
FULLTEXT
索引中的最大字詞長度。注意在變更此變數後,必須重建
MyISAM
資料表上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --ft-min-word-len=#
系統變數 ft_min_word_len
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 4
最小值 1
最大值 82
要包含在
MyISAM
FULLTEXT
索引中的最小字詞長度。注意在變更此變數後,必須重建
MyISAM
資料表上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --ft-query-expansion-limit=#
系統變數 ft_query_expansion_limit
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 0
最大值 1000
要用於使用
WITH QUERY EXPANSION
執行的全文搜尋的頂層相符項目數。 -
命令列格式 --ft-stopword-file=file_name
系統變數 ft_stopword_file
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 從其中讀取
MyISAM
資料表上全文搜尋的停用字清單的檔案。除非指定不同的目錄,否則伺服器會在資料目錄中尋找該檔案。會使用檔案中的所有字詞;註解不受支援。預設情況下,會使用內建的停用字清單(定義在storage/myisam/ft_static.c
檔案中)。將此變數設定為空字串 (''
) 會停用停用字篩選。另請參閱章節 14.9.4,「全文停用字」。注意在變更此變數或停用字檔案的內容後,必須重建
MyISAM
資料表上的FULLTEXT
索引。使用REPAIR TABLE
。tbl_name
QUICK -
命令列格式 --general-log[={OFF|ON}]
系統變數 general_log
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否啟用一般查詢記錄。值可以是 0(或
OFF
)以停用記錄,或是 1(或ON
)以啟用記錄。記錄輸出的目的地由log_output
系統變數控制;如果該值為NONE
,即使已啟用記錄,也不會寫入任何記錄項目。 -
命令列格式 --general-log-file=file_name
系統變數 general_log_file
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 host_name.log
一般查詢記錄檔的名稱。預設值為
,但可以使用host_name
.log--general_log_file
選項變更初始值。 generated_random_password_length
命令列格式 --generated-random-password-length=#
系統變數 generated_random_password_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 5
最大值 255
為
CREATE USER
、ALTER USER
和SET PASSWORD
語句產生的隨機密碼中允許的最大字元數。如需更多資訊,請參閱隨機密碼產生。global_connection_memory_limit
命令列格式 --global-connection-memory-limit=#
系統變數 global_connection_memory_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 18446744073709551615
最小值 16777216
最大值 18446744073709551615
單位 位元組 設定所有使用者連線可使用的記憶體總量;也就是說,
Global_connection_memory
不應超過此數量。任何時候超過此數量,來自一般使用者的所有查詢(包括任何目前正在執行的查詢)都會被拒絕,並顯示ER_GLOBAL_CONN_LIMIT
。系統使用者(例如 MySQL root 使用者)使用的記憶體會包含在此總計中,但不計入斷線限制;這些使用者永遠不會因為記憶體使用量而斷線。
InnoDB
緩衝池使用的記憶體會排除在總計之外。您必須具有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。global_connection_memory_tracking
命令列格式 --global-connection-memory-tracking={TRUE|FALSE}
系統變數 global_connection_memory_tracking
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 FALSE
決定伺服器是否計算
Global_connection_memory
。此變數必須明確啟用;否則,不會執行記憶體計算,且不會設定Global_connection_memory
。您必須具有
SYSTEM_VARIABLES_ADMIN
或SUPER
權限才能設定此變數。-
命令列格式 --group-concat-max-len=#
系統變數 group_concat_max_len
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 4
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
GROUP_CONCAT()
函數允許的最大結果長度(以位元組為單位)。預設值為 1024。 如果伺服器可以使用
zlib
壓縮庫,則為YES
;否則為NO
。如果沒有,則無法使用COMPRESS()
和UNCOMPRESS()
函數。如果 mysqld 支援外掛程式的動態載入,則為
YES
;否則為NO
。如果值為NO
,則您無法使用諸如--plugin-load
之類的選項在伺服器啟動時載入外掛程式,或使用INSTALL PLUGIN
陳述式在執行時載入外掛程式。如果伺服器支援空間資料類型,則為
YES
;否則為NO
。如果存在陳述式分析功能,則為
YES
;否則為NO
。如果存在,profiling
系統變數會控制此功能是否啟用或停用。請參閱 章節 15.7.7.32,「SHOW PROFILES 陳述式」。此變數已過時;您應該預期它會在未來的 MySQL 版本中被移除。
have_query_cache
已過時,值始終為NO
,您應該預期它會在未來的 MySQL 版本中被移除。如果可以使用
RTREE
索引,則為YES
;否則為NO
。(這些用於MyISAM
表格中的空間索引。)-
系統變數 have_statement_timeout
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 陳述式執行逾時功能是否可用 (請參閱 陳述式執行時間最佳化工具提示)。如果此功能使用的背景執行緒無法初始化,則該值可以為
NO
。 如果啟用符號連結支援,則為
YES
;否則為NO
。在 Unix 上,這對於支援DATA DIRECTORY
和INDEX DIRECTORY
表格選項是必需的。如果伺服器以--skip-symbolic-links
選項啟動,則該值為DISABLED
。此變數在 Windows 上沒有意義。
注意符號連結支援以及控制它的
--symbolic-links
選項已過時;預期這些會在未來版本的 MySQL 中被移除。此外,此選項預設為停用。相關的have_symlink
系統變數也已過時,您應該預期它會在未來版本的 MySQL 中被移除。histogram_generation_max_mem_size
命令列格式 --histogram-generation-max-mem-size=#
系統變數 histogram_generation_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20000000
最小值 1000000
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
單位 位元組 用於產生直方圖統計資訊的最大可用記憶體量。請參閱 章節 10.9.6,「最佳化工具統計資訊」和 章節 15.7.3.1,「ANALYZE TABLE 陳述式」。
設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --host-cache-size=#
系統變數 host_cache_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 0
最大值 65536
MySQL 伺服器會維護一個記憶體中的主機快取,其中包含用戶端主機名稱和 IP 位址資訊,並用於避免網域名稱系統 (DNS) 查閱;請參閱 章節 7.1.12.3,「DNS 查閱和主機快取」。
host_cache_size
變數控制主機快取的大小,以及公開快取內容的效能結構描述host_cache
表格的大小。設定host_cache_size
具有以下效果將大小設定為 0 會停用主機快取。停用快取後,伺服器每次用戶端連線時都會執行 DNS 查閱。
在執行時變更大小會導致隱式的主機快取清除作業,清除主機快取、截斷
host_cache
表格,並解除封鎖任何已封鎖的主機。
預設值會自動調整為 128,加上
max_connections
值達 500 的值為 1,加上max_connections
值中每 500 以上的 20 個增量為 1,上限為 2000。 -
伺服器會在啟動時將此變數設定為伺服器主機名稱。最大長度為 255 個字元。
此變數是
last_insert_id
變數的同義詞。它的存在是為了與其他資料庫系統相容。您可以使用SELECT @@identity
讀取其值,並使用SET identity
設定它。-
命令列格式 --init-connect=name
系統變數 init_connect
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 每個連線的用戶端將由伺服器執行的字串。該字串包含一或多個 SQL 陳述式,以分號字元分隔。
對於具有
CONNECTION_ADMIN
權限 (或已過時的SUPER
權限) 的使用者,不會執行init_connect
的內容。這樣做的目的是為了避免init_connect
的錯誤值阻止所有用戶端連線。例如,該值可能包含具有語法錯誤的陳述式,從而導致用戶端連線失敗。對於具有CONNECTION_ADMIN
或SUPER
權限的使用者,不執行init_connect
可讓他們開啟連線並修正init_connect
值。對於任何密碼過期的用戶端使用者,會略過
init_connect
的執行。這樣做的原因是此類使用者無法執行任意陳述式,因此init_connect
的執行會失敗,導致用戶端無法連線。略過init_connect
的執行,可讓使用者連線並變更密碼。伺服器會捨棄
init_connect
值中的陳述式所產生的任何結果集。 information_schema_stats_expiry
命令列格式 --information-schema-stats-expiry=#
系統變數 information_schema_stats_expiry
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 86400
最小值 0
最大值 31536000
單位 秒 某些
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
模式時。當查詢同時擷取 Performance Schema 資料時。
統計資訊快取可能會在多語句交易期間更新,而此時還不知道該交易是否會提交。因此,快取可能包含與已知已提交狀態不符的資訊。當
autocommit=0
或在START TRANSACTION
之後可能會發生這種情況。information_schema_stats_expiry
是一個會話變數,每個客戶端會話都可以定義自己的過期值。從儲存引擎擷取並由一個會話快取的統計資訊可供其他會話使用。如需相關資訊,請參閱第 10.2.3 節「最佳化 INFORMATION_SCHEMA 查詢」。
-
如果指定,此變數會命名一個包含 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
是預設的儲存引擎,因此尤其重要。在插入
AUTO_INCREMENT
值時,下列INSERT
或ALTER TABLE
語句要使用的值。這主要用於二進位日誌。-
命令列格式 --interactive-timeout=#
系統變數 interactive_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 28800
最小值 1
最大值 31536000
單位 秒 伺服器在關閉互動式連線之前,等待該連線上活動的秒數。互動式用戶端定義為使用
CLIENT_INTERACTIVE
選項來mysql_real_connect()
的用戶端。另請參閱wait_timeout
。 internal_tmp_mem_storage_engine
命令列格式 --internal-tmp-mem-storage-engine=#
系統變數 internal_tmp_mem_storage_engine
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 TempTable
有效值 MEMORY
TempTable
記憶體內部臨時表格的儲存引擎(請參閱第 10.4.4 節「MySQL 中內部臨時表格的使用」)。允許的值為
TempTable
(預設) 和MEMORY
。最佳化工具使用
internal_tmp_mem_storage_engine
定義的儲存引擎來用於記憶體內部的臨時表格。為
internal_tmp_mem_storage_engine
設定會話設定需要SESSION_VARIABLES_ADMIN
或SYSTEM_VARIABLES_ADMIN
權限。-
命令列格式 --join-buffer-size=#
系統變數 join_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 128
最大值 (Windows) 4294967168
最大值 (其他,64 位元平台) 18446744073709551488
最大值 (其他,32 位元平台) 4294967168
單位 位元組 區塊大小 128
用於純索引掃描、範圍索引掃描以及不使用索引而執行完整表格掃描的聯結的最小緩衝區大小。此變數也控制用於雜湊聯結的記憶體量。通常,獲得快速聯結的最佳方法是新增索引。在無法新增索引時,增加
join_buffer_size
的值可獲得更快的完整聯結。每個兩個表格之間的完整聯結都會配置一個聯結緩衝區。對於未使用索引的多個表格之間的複雜聯結,可能需要多個聯結緩衝區。預設值為 256KB。
join_buffer_size
的最大允許設定為 4GB-1。較大的值允許用於 64 位元平台(除了 64 位元 Windows,對於這些平台,大的值會被截斷為 4GB-1 並顯示警告)。區塊大小為 128,而 MySQL 伺服器會將不是區塊大小整數倍的值四捨五入為下一個較小的區塊大小倍數,然後再儲存系統變數的值。剖析器允許值高達平台的最大無符號整數值(32 位元系統為 4294967295 或 232-1,64 位元系統為 18446744073709551615 或 264-1),但實際最大值低於區塊大小。除非使用區塊巢狀迴圈或批次金鑰存取演算法,否則設定大於保存每個相符列所需的緩衝區大小並不會帶來任何好處,而且所有聯結至少會配置最小大小,因此請謹慎將此變數設定為全域性的較大值。最好將全域設定保持較小,並僅在執行大型聯結的會話中將會話設定變更為較大值,或使用
SET_VAR
最佳化工具提示,針對每個查詢變更設定 (請參閱第 10.9.3 節「最佳化工具提示」)。如果全域大小大於大多數使用它的查詢所需的大小,則記憶體配置時間可能會導致效能大幅下降。當使用區塊巢狀迴圈時,較大的聯結緩衝區可能會有好處,直到第一個表格中所有列的所有必要欄都儲存在聯結緩衝區中。這取決於查詢;最佳大小可能小於保存第一個表格中的所有列。
當使用批次金鑰存取時,
join_buffer_size
的值會定義每個要求給儲存引擎的金鑰批次的大小。緩衝區越大,聯結操作的右側表格進行的循序存取越多,這可以顯著提高效能。如需有關聯結緩衝的更多資訊,請參閱第 10.2.1.7 節「巢狀迴圈聯結演算法」。如需有關批次金鑰存取的資訊,請參閱第 10.2.1.12 節「區塊巢狀迴圈和批次金鑰存取聯結」。如需有關雜湊聯結的資訊,請參閱第 10.2.1.4 節「雜湊聯結最佳化」。
-
命令列格式 --keep-files-on-create[={OFF|ON}]
系統變數 keep_files_on_create
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果使用
MyISAM
資料表且未指定DATA DIRECTORY
選項,則.MYD
檔案會在資料庫目錄中建立。預設情況下,如果MyISAM
在此情況下找到現有的.MYD
檔案,它會覆寫該檔案。對於使用INDEX DIRECTORY
選項建立的資料表的.MYI
檔案也是如此。若要抑制此行為,請將keep_files_on_create
變數設定為ON
(1),在此情況下,MyISAM
不會覆寫現有檔案,而是會返回錯誤。預設值為OFF
(0)。如果使用
DATA DIRECTORY
或INDEX DIRECTORY
選項建立MyISAM
資料表,並且找到現有的.MYD
或.MYI
檔案,則 MyISAM 始終會返回錯誤。它不會覆寫指定目錄中的檔案。 -
命令列格式 --key-buffer-size=#
系統變數 key_buffer_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 0
最大值 (64 位元平台) OS_PER_PROCESS_LIMIT
最大值 (32 位元平台) 4294967295
單位 位元組 MyISAM
資料表的索引區塊會被緩衝並由所有執行緒共享。key_buffer_size
是用於索引區塊的緩衝區大小。索引緩衝區也稱為索引快取。最小允許設定為 0,但您不能動態地將
key_buffer_size
設定為 0。設定為 0 會刪除索引快取,這在執行時是不允許的。只有在啟動時才允許將key_buffer_size
設定為 0,在這種情況下,索引快取不會初始化。在執行時將key_buffer_size
設定從 0 變更為允許的非零值會初始化索引快取。key_buffer_size
只能以 4096 位元組的增量或倍數增加或減少。以不符合規範的值增加或減少設定會產生警告,並將設定截斷為符合規範的值。key_buffer_size
的最大允許設定在 32 位元平台上為 4GB-1。對於 64 位元平台,允許更大的值。有效最大大小可能會更小,具體取決於您可用的實體 RAM 和作業系統或硬體平台施加的每個處理序 RAM 限制。此變數的值表示請求的記憶體量。在內部,伺服器會盡可能多地分配記憶體,最多達到此數量,但實際分配量可能會更少。您可以增加此值,以獲得更好的索引處理,適用於所有讀取和多個寫入;在主要功能是使用
MyISAM
儲存引擎執行 MySQL 的系統上,機器總記憶體的 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 索引快取」。 -
命令列格式 --key-cache-age-threshold=#
系統變數 key_cache_age_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 100
最大值 (64 位元平台) 18446744073709551516
最大值 (32 位元平台) 4294967196
區塊大小 100
此值控制從索引快取的熱子列表到溫子列表的緩衝區降級。較低的值會導致降級發生得更快。最小值為 100。預設值為 300。請參閱 第 10.10.2 節「MyISAM 索引快取」。
-
命令列格式 --key-cache-block-size=#
系統變數 key_cache_block_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1024
最小值 512
最大值 16384
單位 位元組 區塊大小 512
索引快取中區塊的大小(以位元組為單位)。預設值為 1024。請參閱 第 10.10.2 節「MyISAM 索引快取」。
-
命令列格式 --key-cache-division-limit=#
系統變數 key_cache_division_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值 100
索引快取緩衝區列表的熱子列表和溫子列表之間的分隔點。該值是將緩衝區列表用於溫子列表的百分比。允許的值範圍為 1 到 100。預設值為 100。請參閱 第 10.10.2 節「MyISAM 索引快取」。
-
系統變數 large_files_support
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 mysqld 是否使用大型檔案支援的選項編譯。
-
命令列格式 --large-pages[={OFF|ON}]
系統變數 large_pages
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Linux 類型 布林值 預設值 OFF
是否已啟用大型頁面支援(透過
--large-pages
選項)。請參閱 第 10.12.3.3 節「啟用大型頁面支援」。 -
系統變數 large_page_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 65535
單位 位元組 如果已啟用大型頁面支援,則此顯示記憶體頁面的大小。僅 Linux 支援大型記憶體頁面;在其他平台上,此變數的值始終為 0。請參閱 第 10.12.3.3 節「啟用大型頁面支援」。
要從
LAST_INSERT_ID()
返回的值。當您在更新資料表的語句中使用LAST_INSERT_ID()
時,此值會儲存在二進位日誌中。設定此變數不會更新mysql_insert_id()
C API 函數返回的值。-
命令列格式 --lc-messages=name
系統變數 lc_messages
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 en_US
用於錯誤訊息的地區設定。預設值為
en_US
。伺服器會將引數轉換為語言名稱,並將其與lc_messages_dir
的值結合,以產生錯誤訊息檔案的位置。請參閱 第 12.12 節「設定錯誤訊息語言」。 -
命令列格式 --lc-messages-dir=dir_name
系統變數 lc_messages_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 錯誤訊息所在的目錄。伺服器會將該值與
lc_messages
的值一起使用,以產生錯誤訊息檔案的位置。請參閱 第 12.12 節「設定錯誤訊息語言」。 -
命令列格式 --lc-time-names=value
系統變數 lc_time_names
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數指定用於顯示日期和月份名稱及縮寫的語言的地區設定。此變數會影響
DATE_FORMAT()
、DAYNAME()
和MONTHNAME()
函數的輸出。地區設定名稱是 POSIX 樣式的值,例如'ja_JP'
或'pt_BR'
。無論系統的地區設定為何,預設值都是'en_US'
。如需更多資訊,請參閱 第 12.16 節「MySQL 伺服器地區設定支援」。 -
伺服器具有的授權類型。
-
命令列格式 --local-infile[={OFF|ON}]
系統變數 local_infile
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制
LOAD DATA
語句的伺服器端LOCAL
功能。根據local_infile
設定,伺服器會拒絕或允許在用戶端啟用LOCAL
的用戶端載入本機資料。為了明確地讓伺服器拒絕或允許
LOAD DATA LOCAL
語句(無論客戶端程式和函式庫在建置時或執行時如何配置),請分別使用停用或啟用的local_infile
啟動 mysqld。local_infile
也可以在執行時設定。如需更多資訊,請參閱第 8.1.6 節「LOAD DATA LOCAL 的安全性考量」。 -
命令列格式 --lock-wait-timeout=#
系統變數 lock_wait_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 31536000
最小值 1
最大值 31536000
單位 秒 此變數指定嘗試取得中繼資料鎖定的逾時時間(以秒為單位)。允許的值範圍為 1 到 31536000(1 年)。預設值為 31536000。
此逾時適用於所有使用中繼資料鎖定的語句。這些包括對資料表、檢視表、預存程序和預存函數的 DML 和 DDL 操作,以及
LOCK TABLES
、FLUSH TABLES WITH READ LOCK
和HANDLER
語句。此逾時不適用於對
mysql
資料庫中系統資料表的隱含存取,例如由GRANT
或REVOKE
語句或資料表記錄語句修改的授權資料表。逾時適用於直接存取的系統資料表,例如使用SELECT
或UPDATE
。逾時值會個別套用至每次中繼資料鎖定嘗試。給定的語句可能需要多個鎖定,因此在回報逾時錯誤之前,語句可能會被封鎖的時間超過
lock_wait_timeout
值。發生鎖定逾時時,會回報ER_LOCK_WAIT_TIMEOUT
。lock_wait_timeout
也定義了LOCK INSTANCE FOR BACKUP
語句放棄前等待鎖定的時間長度。 -
系統變數 locked_in_memory
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
-
預設的錯誤日誌目的地。如果目的地是主控台,則值為
stderr
。否則,目的地是檔案,而log_error
值為檔案名稱。請參閱第 7.4.2 節「錯誤日誌」。 -
命令列格式 --log-error-services=value
系統變數 log_error_services
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 log_filter_internal; log_sink_internal
要啟用以進行錯誤記錄的元件。變數可以包含一個包含 0、1 或多個元素的清單。在後一種情況下,元素可以使用分號或逗號分隔,並可選擇後接空格。給定的設定不能同時使用分號和逗號分隔符號。元件順序很重要,因為伺服器會按照列出的順序執行元件。
如果
log_error_services
中命名的任何可載入(非內建)元件尚未載入,則會隱式載入。如需更多資訊,請參閱第 7.4.2.1 節「錯誤日誌組態」。 -
命令列格式 --log-error-suppression-list=value
系統變數 log_error_suppression_list
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
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 9.0 錯誤訊息參考。
log_error_suppression_list
的效果會與log_error_verbosity
的效果結合。如需更多資訊,請參閱第 7.4.2.5 節「基於優先順序的錯誤日誌篩選 (log_filter_internal)」。 -
命令列格式 --log-error-verbosity=#
系統變數 log_error_verbosity
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 1
最大值 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 值 允許的訊息優先順序 1 錯誤
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)」。 -
命令列格式 --log-output=name
系統變數 log_output
範圍 全域 動態 是 SET_VAR
提示適用否 類型 設定 預設值 檔案
有效值 資料表
檔案
無
一般查詢日誌和慢速查詢日誌輸出的目的地。值是從
TABLE
、FILE
和NONE
中選擇的一個或多個以逗號分隔的單字清單。TABLE
選擇記錄到mysql
系統架構中的general_log
和slow_log
資料表。FILE
選擇記錄到日誌檔案。NONE
會停用記錄。如果值中存在NONE
,則它會優先於存在的任何其他單字。TABLE
和FILE
都可以給定,以選擇兩個日誌輸出目的地。此變數會選擇日誌輸出目的地,但不會啟用日誌輸出。若要執行此操作,請啟用
general_log
和slow_query_log
系統變數。對於FILE
記錄,general_log_file
和slow_query_log_file
系統變數會決定日誌檔案位置。如需更多資訊,請參閱第 7.4.1 節「選取一般查詢日誌和慢速查詢日誌輸出目的地」。 -
命令列格式 --log-queries-not-using-indexes[={OFF|ON}]
系統變數 log_queries_not_using_indexes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用此變數並同時啟用慢查詢日誌,則會記錄預期會擷取所有列的查詢。請參閱第 7.4.5 節「慢查詢日誌」。此選項不一定表示未使用索引。例如,使用完整索引掃描的查詢會使用索引,但會被記錄,因為索引不會限制列的數量。
-
log_raw
系統變數最初設定為--log-raw
選項的值。請參閱該選項的說明以取得更多資訊。系統變數也可以在執行時設定,以變更密碼遮罩行為。 -
命令列格式 --log-slow-admin-statements[={OFF|ON}]
系統變數 log_slow_admin_statements
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
將慢速管理陳述式包含在寫入慢查詢日誌的陳述式中。管理陳述式包括
ALTER TABLE
、ANALYZE TABLE
、CHECK TABLE
、CREATE INDEX
、DROP INDEX
、OPTIMIZE TABLE
和REPAIR TABLE
。 -
命令列格式 --log-slow-extra[={OFF|ON}]
系統變數 log_slow_extra
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
如果啟用了慢查詢日誌,且輸出目的地包含
FILE
,伺服器會將額外的欄位寫入日誌檔案行,以提供有關慢速陳述式的資訊。請參閱第 7.4.5 節「慢查詢日誌」。TABLE
輸出不受影響。 -
命令列格式 --log-timestamps=#
系統變數 log_timestamps
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 UTC
有效值 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 的偏移量)。 log_throttle_queries_not_using_indexes
命令列格式 --log-throttle-queries-not-using-indexes=#
系統變數 log_throttle_queries_not_using_indexes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
如果啟用
log_queries_not_using_indexes
,log_throttle_queries_not_using_indexes
變數會限制每分鐘可以寫入慢查詢日誌的此類查詢數量。值 0(預設值)表示「無限制」。如需更多資訊,請參閱第 7.4.5 節「慢查詢日誌」。-
命令列格式 --long-query-time=#
系統變數 long_query_time
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 數值 預設值 10
最小值 0
最大值 31536000
單位 秒 如果查詢所花時間超過這個秒數,伺服器會增加
Slow_queries
狀態變數。如果啟用了慢查詢日誌,則查詢會記錄到慢查詢日誌檔案。此值以實際時間(而非 CPU 時間)測量,因此在輕負載系統上低於閾值的查詢,在重負載系統上可能會高於閾值。long_query_time
的最小值和預設值分別為 0 和 10。最大值為 31536000,相當於 365 天(以秒為單位)。該值可以指定到微秒的解析度。請參閱第 7.4.5 節「慢查詢日誌」。此變數的值越小,表示有更多陳述式被視為長時間執行,結果是慢查詢日誌需要更多空間。對於非常小的值(小於 1 秒),日誌可能會在短時間內變得非常大。增加被視為長時間執行的陳述式數量也可能導致 MySQL Enterprise Monitor 中「長時間執行程序數量過多」警示出現誤報,尤其是在啟用群組複寫時。由於這些原因,非常小的值應僅在測試環境中使用,或在生產環境中僅短時間使用。
mysqldump 執行完整資料表掃描,這表示其查詢通常可能會超過對一般查詢有用的
long_query_time
設定。如果您想要從慢查詢日誌中排除大部分或所有 mysqldump 產生的查詢,您可以使用--mysqld-long-query-time
將系統變數的會話值變更為較高的值。 -
命令列格式 --low-priority-updates[={OFF|ON}]
系統變數 low_priority_updates
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 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 節,「系統變數權限」。
-
系統變數 lower_case_file_system
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 此變數描述資料目錄所在檔案系統上檔案名稱的大小寫敏感度。
OFF
表示檔案名稱區分大小寫,ON
表示不區分大小寫。此變數是唯讀的,因為它反映了檔案系統屬性,設定它不會對檔案系統產生影響。 -
命令列格式 --lower-case-table-names[=#]
系統變數 lower_case_table_names
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 (macOS) 2
預設值 (Unix) 0
預設值 (Windows) 1
最小值 0
最大值 2
如果設定為 0,則資料表名稱會依指定方式儲存,且比較會區分大小寫。如果設定為 1,則資料表名稱會以小寫形式儲存在磁碟上,且比較不區分大小寫。如果設定為 2,則資料表名稱會依給定方式儲存,但會以小寫形式比較。此選項也適用於資料庫名稱和資料表別名。如需其他詳細資料,請參閱第 11.2.3 節「識別碼大小寫敏感度」。
此變數的預設值取決於平台(請參閱
lower_case_file_system
)。在 Linux 和其他類 Unix 系統上,預設值為0
。在 Windows 上,預設值為1
。在 macOS 上,預設值為2
。在 Linux(和其他類 Unix 系統)上,不支援將值設定為2
;伺服器會強制將值設為0
。如果您的 MySQL 在資料目錄位於不區分大小寫的檔案系統(例如在 Windows 或 macOS 上)的系統上執行,您不應將
lower_case_table_names
設定為 0。這是不支援的組合,可能會導致在以錯誤的tbl_name
大小寫執行INSERT INTO ... SELECT ... FROM
操作時發生當機情況。使用tbl_name
MyISAM
時,使用不同大小寫存取資料表名稱可能會導致索引損毀。如果您嘗試在不區分大小寫的檔案系統上使用
--lower_case_table_names=0
啟動伺服器,則會列印錯誤訊息,且伺服器會結束。此變數的設定會影響複寫篩選選項在大小寫敏感度方面的行為。如需更多資訊,請參閱第 19.2.5 節「伺服器如何評估複寫篩選規則」。
禁止使用與伺服器初始化時使用的設定不同的
lower_case_table_names
設定啟動伺服器。此限制是必要的,因為各種資料字典資料表欄位使用的定序是由初始化伺服器時定義的設定所決定,並且使用不同的設定重新啟動伺服器會導致在識別碼的排序和比較方面產生不一致。因此,必須在初始化伺服器之前,將
lower_case_table_names
設定為所需的設定。在大多數情況下,這需要第一次啟動 MySQL 伺服器之前,在 MySQL 選項檔案中設定lower_case_table_names
。然而,對於 Debian 和 Ubuntu 上的 APT 安裝,伺服器會為您初始化,並且沒有機會事先在選項檔案中設定該設定。因此,您必須在使用 APT 安裝 MySQL 之前使用debconf-set-selection
公用程式來啟用lower_case_table_names
。若要執行此操作,請在使用 APT 安裝 MySQL 之前執行此命令$> sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled"
-
命令列格式 --mandatory-roles=value
系統變數 mandatory_roles
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
伺服器應視為強制性的角色。實際上,這些角色會自動授予每個使用者,儘管設定
mandatory_roles
並不會實際變更任何使用者帳戶,且授予的角色在mysql.role_edges
系統表格中不可見。變數值是以逗號分隔的角色名稱清單。範例
SET PERSIST mandatory_roles = '`role1`@`%`,`role2`,role3,role4@localhost';
設定
mandatory_roles
的執行階段值,除了需要設定全域系統變數執行階段值通常需要的SYSTEM_VARIABLES_ADMIN
權限(或已棄用的SUPER
權限)之外,還需要ROLE_ADMIN
權限。角色名稱的格式為
,其中包含使用者部分和主機部分。如果省略主機部分,則預設為主機user_name
@host_name
%
。如需更多資訊,請參閱第 8.2.5 節「指定角色名稱」。mandatory_roles
的值是一個字串,因此如果使用者名稱和主機名稱加上引號,則必須以允許在引號字串內加上引號的方式來撰寫。在
mandatory_roles
值中命名的角色,無法使用REVOKE
撤銷,也無法使用DROP ROLE
或DROP USER
刪除。為了防止工作階段預設成為系統工作階段,具有
SYSTEM_USER
權限的角色不能列在mandatory_roles
系統變數的值中。如果
mandatory_roles
在啟動時被指派一個具有SYSTEM_USER
權限的角色,伺服器會將訊息寫入錯誤日誌並退出。如果
mandatory_roles
在執行階段被指派一個具有SYSTEM_USER
權限的角色,則會發生錯誤,且mandatory_roles
的值保持不變。
強制角色(如明確授予的角色)在啟用之前不會生效(請參閱啟用角色)。在登入時,如果啟用
activate_all_roles_on_login
系統變數,則會啟用所有授予的角色;否則,對於設為預設角色的角色則會啟用。在執行階段,SET ROLE
會啟用角色。在指派給
mandatory_roles
時不存在,但稍後建立的角色,可能需要特殊處理才能被視為強制角色。如需詳細資訊,請參閱定義強制角色。SHOW GRANTS
會根據第 15.7.7.22 節「SHOW GRANTS 陳述式」中所述的規則顯示強制角色。 -
命令列格式 --max-allowed-packet=#
系統變數 max_allowed_packet
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 67108864
最小值 1024
最大值 1073741824
單位 位元組 區塊大小 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
值更多的位元組數。(如果全域值在用戶端連線後變更,則全域值可能小於工作階段值。) -
命令列格式 --max-connect-errors=#
系統變數 max_connect_errors
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100
最小值 1
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
在來自主機的
max_connect_errors
個連續連線請求中斷而沒有成功連線後,伺服器會阻止該主機進行進一步連線。如果在先前的連線中斷後,來自主機的連線在少於max_connect_errors
次嘗試內成功建立,則主機的錯誤計數會清除為零。若要解除封鎖的 host,請清除 host 快取;請參閱清除 Host 快取。 -
命令列格式 --max-connections=#
系統變數 max_connections
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 151
最小值 1
最大值 100000
允許的最大同時用戶端連線數。最大有效值是
open_files_limit
- 810
的有效值,與實際設定的max_connections
值之間的較小值。如需更多資訊,請參閱第 7.1.12.1 節「連線介面」。
-
命令列格式 --max-delayed-threads=#
已淘汰 是 系統變數 max_delayed_threads
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 20
最小值 0
最大值 16384
此系統變數已棄用(因為不支援
DELAYED
插入),並會在未來的 MySQL 版本中移除。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --max-digest-length=#
系統變數 max_digest_length
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 1024
最小值 0
最大值 1048576
單位 位元組 每個工作階段保留用於計算正規化陳述式摘要的記憶體最大位元組數。一旦在摘要計算期間使用了該空間量,就會發生截斷:不會從剖析的陳述式中收集更多符記,也不會將其計入摘要值。如果剖析的符記在許多位元組之後才有所不同,則僅差異於此位元組數之後的陳述式會產生相同的正規化陳述式摘要,並且如果比較或為了摘要統計而彙總,則會被視為相同。
警告將
max_digest_length
設定為零會停用摘要產生,這也會停用需要摘要的伺服器功能,例如 MySQL Enterprise Firewall。減少
max_digest_length
值會減少記憶體使用量,但會導致更多陳述式的摘要值變得無法區分,如果它們僅在結尾處有所不同。增加該值允許區分較長的陳述式,但會增加記憶體使用量,尤其是在涉及大量同時工作階段的工作負載中(伺服器會為每個工作階段配置max_digest_length
個位元組)。剖析器使用此系統變數作為其計算的正規化陳述式摘要的最大長度限制。效能結構描述(如果追蹤陳述式摘要)會複製摘要值,並使用
performance_schema_max_digest_length
系統變數作為其儲存的摘要最大長度限制。因此,如果performance_schema_max_digest_length
小於max_digest_length
,則儲存在效能結構描述中的摘要值會相對於原始摘要值被截斷。如需有關陳述式摘要的更多資訊,請參閱第 29.10 節「效能結構描述陳述式摘要和取樣」。
-
命令列格式 --max-error-count=#
系統變數 max_error_count
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 0
最大值 65535
要儲存以供
SHOW ERRORS
和SHOW WARNINGS
陳述式顯示的錯誤、警告和資訊訊息的最大數量。這與診斷區域中的條件區域數相同,因此也與可以使用GET DIAGNOSTICS
檢查的條件數相同。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --max-execution-time=#
系統變數 max_execution_time
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 0
最小值 0
最大值 4294967295
單位 毫秒 SELECT
陳述式的執行逾時(以毫秒為單位)。如果值為 0,則不啟用逾時。max_execution_time
的適用方式如下全域
max_execution_time
值為新連線的工作階段值提供預設值。工作階段值適用於在工作階段內執行的SELECT
執行,這些執行不包含MAX_EXECUTION_TIME(
最佳化工具提示,或N
)N
為 0 的執行。max_execution_time
適用於唯讀SELECT
陳述式。非唯讀的陳述式是那些會叫用會修改資料的預存函數作為副作用的陳述式。對於預存程式中的
SELECT
陳述式,會忽略max_execution_time
。
-
命令列格式 --max-heap-table-size=#
系統變數 max_heap_table_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 16777216
最小值 16384
最大值 (64 位元平台) 18446744073709550592
最大值 (32 位元平台) 4294966272
單位 位元組 區塊大小 1024
這個變數設定使用者建立的
MEMORY
表格允許增長的最大大小。此變數的值用於計算MEMORY
表格的MAX_ROWS
值。除非使用諸如
CREATE TABLE
的語句重新建立表格,或使用ALTER TABLE
或TRUNCATE TABLE
更改表格,否則設定此變數對任何現有的MEMORY
表格沒有影響。重新啟動伺服器也會將現有MEMORY
表格的最大大小設定為全域的max_heap_table_size
值。此變數也與
tmp_table_size
結合使用,以限制內部記憶體表格的大小。請參閱第 10.4.4 節,"MySQL 中內部暫存表格的使用"。max_heap_table_size
不會被複製。有關詳細資訊,請參閱第 19.5.1.22 節,「複製和 MEMORY 表格」,以及第 19.5.1.40 節,「複製和變數」。 -
已淘汰 是 系統變數 max_insert_delayed_threads
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 20
最大值 16384
此變數是
max_delayed_threads
的同義詞。與max_delayed_threads
類似,它已被棄用(因為不支援DELAYED
插入),並將在未來的 MySQL 版本中移除。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --max-join-size=#
系統變數 max_join_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 18446744073709551615
最小值 1
最大值 18446744073709551615
這表示在聯結中,從基本表格進行的最大行存取次數限制。如果伺服器的估計指出必須從基本表格讀取超過
max_join_size
的行數,則該語句將被拒絕並產生錯誤。將此變數設定為
DEFAULT
以外的值會將sql_big_selects
的值重設為0
。如果再次設定sql_big_selects
值,則max_join_size
變數將被忽略。 -
命令列格式 --max-length-for-sort-data=#
已淘汰 是 系統變數 max_length_for_sort_data
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4096
最小值 4
最大值 8388608
單位 位元組 此變數已棄用,在 MySQL 9.0 中沒有任何作用。
-
命令列格式 --max-points-in-geometry=#
系統變數 max_points_in_geometry
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 65536
最小值 3
最大值 1048576
ST_Buffer_Strategy()
函數的points_per_circle
引數的最大值。 -
命令列格式 --max-prepared-stmt-count=#
系統變數 max_prepared_stmt_count
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 16382
最小值 0
最大值 4194304
此變數限制伺服器中準備好的語句總數。它可以用於基於準備大量語句而導致伺服器記憶體耗盡的阻斷服務攻擊的環境中。如果該值設定為低於目前準備好的語句數,則現有的語句不受影響,仍然可以使用,但在目前的數量降至限制以下之前,不能準備任何新的語句。將該值設定為 0 會停用準備好的語句。
-
命令列格式 --max-seeks-for-key=#
系統變數 max_seeks_for_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 (Windows) 4294967295
預設值(其他,64 位元平台) 18446744073709551615
預設值(其他,32 位元平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
限制根據索引查找行的假設最大搜尋次數。無論索引的實際基數如何(請參閱第 15.7.7.23 節,「SHOW INDEX 語句」),MySQL 優化器假設在掃描索引時,最多只需要此數量的索引搜尋次數來搜尋表格中符合的行。通過將此值設定為較低的值(例如,100),您可以強制 MySQL 優先使用索引而不是表格掃描。
-
命令列格式 --max-sort-length=#
系統變數 max_sort_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1024
最小值 4
最大值 8388608
單位 位元組 對使用
PAD SPACE
校對的字串值進行排序時,要使用的位元組數。伺服器僅使用任何此類值的前max_sort_length
個位元組,並忽略其餘位元組。因此,僅在前max_sort_length
個位元組之後不同的值,在GROUP BY
、ORDER BY
和DISTINCT
操作中會比較為相等。(此行為與先前版本的 MySQL 不同,在先前版本中,此設定應用於比較中使用的所有值。)增加
max_sort_length
的值可能還需要增加sort_buffer_size
的值。有關詳細資訊,請參閱第 10.2.1.16 節,「ORDER BY 優化」。 -
命令列格式 --max-sp-recursion-depth[=#]
系統變數 max_sp_recursion_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 255
任何給定的預存程序可以遞迴呼叫的次數。此選項的預設值為 0,這會完全停用預存程序中的遞迴。最大值為 255。
預存程序遞迴會增加對執行緒堆疊空間的需求。如果增加
max_sp_recursion_depth
的值,則可能需要透過在伺服器啟動時增加thread_stack
的值來增加執行緒堆疊大小。 -
命令列格式 --max-user-connections=#
系統變數 max_user_connections
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
允許任何給定 MySQL 使用者帳戶同時連線的最大數量。值為 0(預設值)表示「沒有限制。」
此變數具有可在伺服器啟動或執行時設定的全域值。它還具有唯讀的會話值,該值指示套用於與目前會話相關聯的帳戶的有效同時連線限制。會話值初始化如下
如果使用者帳戶具有非零的
MAX_USER_CONNECTIONS
資源限制,則會話max_user_connections
值會設定為該限制。否則,會話
max_user_connections
值會設定為全域值。
帳戶資源限制使用
CREATE USER
或ALTER USER
語句指定。請參閱第 8.2.21 節,「設定帳戶資源限制」。 -
命令列格式 --max-write-lock-count=#
系統變數 max_write_lock_count
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 (Windows) 4294967295
預設值(其他,64 位元平台) 18446744073709551615
預設值(其他,32 位元平台) 4294967295
最小值 1
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
在這麼多次寫入鎖定之後,允許在中間處理一些擱置的讀取鎖定請求。寫入鎖定請求的優先順序高於讀取鎖定請求。但是,如果
max_write_lock_count
設定為較低的值(例如,10),如果讀取鎖定請求已經被略過而優先處理了 10 個寫入鎖定請求,則讀取鎖定請求可能會優先於擱置的寫入鎖定請求。通常不會發生這種情況,因為max_write_lock_count
預設具有非常大的值。 -
命令列格式 --mecab-rc-file=file_name
系統變數 mecab_rc_file
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 設定 MeCab 全文剖析器時會使用
mecab_rc_file
選項。mecab_rc_file
選項定義了mecabrc
組態檔案的路徑,該檔案是 MeCab 的組態檔案。此選項是唯讀的,只能在啟動時設定。mecabrc
組態檔案是初始化 MeCab 所必需的。有關 MeCab 全文剖析器的資訊,請參閱第 14.9.9 節,「MeCab 全文剖析器外掛程式」。
有關可以在 MeCab
mecabrc
組態檔案中指定的選項的資訊,請參閱MeCab 文件,位於 Google 開發人員網站上。 -
命令列格式 --min-examined-row-limit=#
系統變數 min_examined_row_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
檢查的列數少於此數量的查詢不會記錄到慢速查詢記錄中。
設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --mle.memory-max=value
系統變數 mle.memory_max
範圍 全域 動態 是 SET_VAR
提示適用否 平台特定 Linux 類型 整數 預設值 1300M
最小值 320M
最大值 64G
單位 位元組 決定要配置給 MLE 元件的最大記憶體量。此變數是動態的,但只能在元件處於非活動狀態時設定;您可以透過檢查
Mle_status
系統狀態變數的值來判斷是否處於這種情況。當增加此變數的值時,您應該謹記,您必須為 MySQL 伺服器的其他用途(例如緩衝池、連線記憶體、連接緩衝區等等)保留足夠的記憶體。此外,還必須有足夠的記憶體讓系統程序正常運作。
重要將此值設定為大於系統可用記憶體量的值會導致未定義的行為。
有關 MLE 元件記憶體使用情況的更多資訊,請參閱 章節 7.5.6.3, “MLE 元件記憶體與執行緒使用”。
-
命令列格式 --myisam-data-pointer-size=#
系統變數 myisam_data_pointer_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 6
最小值 2
最大值 7
單位 位元組 當沒有指定
MAX_ROWS
選項時,CREATE TABLE
用於MyISAM
表格的預設指標大小(以位元組為單位)。此變數的值不能小於 2 或大於 7。預設值為 6。請參閱 章節 B.3.2.10, “表格已滿”。 -
命令列格式 --myisam-max-sort-file-size=#
系統變數 myisam_max_sort_file_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 (Windows) 2146435072
預設值(其他,64 位元平台) 9223372036853727232
預設值(其他,32 位元平台) 2147483648
最小值 0
最大值 (Windows) 2146435072
最大值 (其他,64 位元平台) 9223372036853727232
最大值 (其他,32 位元平台) 2147483648
單位 位元組 當重新建立
MyISAM
索引時(在REPAIR TABLE
、ALTER TABLE
或LOAD DATA
期間),MySQL 允許使用的暫存檔最大大小。如果檔案大小會大於此值,則會改用索引快取建立索引,這會比較慢。該值以位元組為單位。如果
MyISAM
索引檔超過此大小,並且磁碟空間足夠,增加此值可能有助於效能。空間必須在包含原始索引檔案的目錄的檔案系統中可用。 -
命令列格式 --myisam-mmap-size=#
系統變數 myisam_mmap_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值(64 位元平台) 18446744073709551615
預設值(32 位元平台) 4294967295
最小值 7
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
單位 位元組 用於記憶體對應壓縮
MyISAM
檔案的最大記憶體量。如果使用許多壓縮的MyISAM
表格,則可以減少該值以降低記憶體交換問題的可能性。 -
命令列格式 --myisam-recover-options[=list]
系統變數 myisam_recover_options
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
DEFAULT
BACKUP
FORCE
QUICK
設定
MyISAM
儲存引擎復原模式。變數值可以是OFF
、DEFAULT
、BACKUP
、FORCE
或QUICK
值的任意組合。如果您指定多個值,請用逗號分隔它們。在伺服器啟動時指定沒有值的變數,與指定DEFAULT
相同,而指定明確值""
則會停用復原(與OFF
值相同)。如果啟用復原,則每次 mysqld 開啟MyISAM
表格時,它會檢查表格是否標記為損毀或未正確關閉。(只有在您執行時停用外部鎖定,最後一個選項才有效。)如果是這種情況,mysqld 會對表格執行檢查。如果表格已損壞,mysqld 會嘗試修復它。以下選項會影響修復的方式。
選項 描述 OFF
不復原。 DEFAULT
不進行備份、強制或快速檢查的復原。 BACKUP
如果在復原期間變更了資料檔,請將
檔案的備份儲存為tbl_name
.MYD
。tbl_name-datetime
.BAKFORCE
即使我們可能會從 .MYD
檔案中遺失多於一行,仍執行復原。QUICK
如果沒有任何刪除區塊,則不檢查表格中的列。 在伺服器自動修復表格之前,它會在錯誤記錄中寫入有關修復的註解。如果您希望能夠在沒有使用者介入的情況下從大多數問題中復原,您應該使用
BACKUP,FORCE
選項。即使會刪除某些列,這也會強制修復表格,但它會將舊的資料檔保留為備份,以便您稍後可以檢查發生了什麼事。 -
命令列格式 --myisam-sort-buffer-size=#
系統變數 myisam_sort_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 4096
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
單位 位元組 在
REPAIR TABLE
期間或使用CREATE INDEX
或ALTER TABLE
建立索引時,配置來排序MyISAM
索引的緩衝區大小。 -
命令列格式 --myisam-stats-method=name
系統變數 myisam_stats_method
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 nulls_unequal
有效值 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 索引統計資料收集” 中所述。
-
命令列格式 --myisam-use-mmap[={OFF|ON}]
系統變數 myisam_use_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
使用記憶體對應來讀取和寫入
MyISAM
表格。 -
命令列格式 --named-pipe[={OFF|ON}]
系統變數 named_pipe
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 布林值 預設值 OFF
(僅限 Windows。)指出伺服器是否支援透過具名管道的連線。
-
命令列格式 --named-pipe-full-access-group=value
系統變數 named_pipe_full_access_group
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 字串 預設值 空字串
有效值 空字串
有效的 Windows 本機群組名稱
*everyone*
(僅限 Windows。)當啟用
named_pipe
系統變數以支援具名管道連線時,授與具名管道上用戶端的存取控制權限,設定為成功通訊所需的最低權限。某些 MySQL 用戶端軟體可以開啟具名管道連線而無需任何其他組態;但是,其他用戶端軟體可能仍需要完整存取權限才能開啟具名管道連線。此變數設定 Windows 本機群組的名稱,該群組的成員會由 MySQL 伺服器授與足夠的權限來使用具名管道用戶端。預設值為空字串,這表示沒有 Windows 使用者被授予具名管道的完整存取權限。
可以在 Windows 中建立新的 Windows 本機群組名稱(例如,
mysql_access_client_users
),然後在絕對必要時用來取代預設值。在這種情況下,請將群組的成員資格限制為盡可能少的使用者,並在升級用戶端軟體時從群組中移除使用者。嘗試使用受影響的具名管道用戶端開啟與 MySQL 連線的非成員會被拒絕存取,直到 Windows 管理員將使用者新增至群組為止。新加入的使用者必須登出並重新登入才能加入群組(Windows 要求)。將值設定為
'*everyone*'
會提供一種與語言無關的方式來參照 Windows 上的 Everyone 群組。Everyone 群組預設不安全。 -
命令列格式 --net-buffer-length=#
系統變數 net_buffer_length
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 16384
最小值 1024
最大值 1048576
單位 位元組 區塊大小 1024
每個用戶端執行緒都與一個連線緩衝區和結果緩衝區相關聯。兩者都從
net_buffer_length
給定的大小開始,但會根據需要動態擴大到最多max_allowed_packet
位元組。結果緩衝區在每個 SQL 陳述式後縮小到net_buffer_length
。通常不應變更此變數,但如果您記憶體非常少,則可以將其設定為用戶端傳送的陳述式預期長度。如果陳述式超過此長度,則會自動擴大連線緩衝區。
net_buffer_length
可以設定的最大值為 1MB。此變數的工作階段值是唯讀的。
-
命令列格式 --net-read-timeout=#
系統變數 net_read_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 30
最小值 1
最大值 31536000
單位 秒 在中止讀取之前,等待從連線取得更多資料的秒數。當伺服器從用戶端讀取資料時,
net_read_timeout
是控制何時中止的逾時值。當伺服器正在寫入用戶端時,net_write_timeout
是控制何時中止的逾時值。另請參閱replica_net_timeout
。 -
命令列格式 --net-retry-count=#
系統變數 net_retry_count
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 1
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
若通訊埠上的讀取或寫入被中斷,在放棄之前重試的次數。在 FreeBSD 上,這個值應該設定得相當高,因為內部中斷會被發送到所有執行緒。
-
命令列格式 --net-write-timeout=#
系統變數 net_write_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 60
最小值 1
最大值 31536000
單位 秒 在中止寫入之前,等待將區塊寫入連線的秒數。另請參閱
net_read_timeout
。 -
命令列格式 --ngram-token-size=#
系統變數 ngram_token_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 1
最大值 10
定義 n-gram 全文解析器的 n-gram 符記大小。
ngram_token_size
選項是唯讀的,只能在啟動時修改。預設值為 2(二元語法)。最大值為 10。有關如何設定此變數的更多資訊,請參閱 第 14.9.8 節「ngram 全文解析器」。
-
命令列格式 --offline-mode[={OFF|ON}]
系統變數 offline_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在離線模式下,MySQL 實例會斷開用戶端使用者的連線,除非他們具有相關的權限,並且不允許他們啟動新的連線。被拒絕存取的用戶端會收到錯誤。確切的錯誤和錯誤訊息會以下列方式決定:
伺服器嘗試取得附加到
offline_mode
的名為reason
的屬性值;這等同於類似以下查詢的結果:SELECT ATTR_VALUE INTO @sreason FROM performance_schema.global_variable_attributes WHERE VARIABLE_NAME='offline_mode' AND ATTR_NAME='reason';
如果
@sreason
不是NULL
,則伺服器會嘗試取得上次設定offline_mode
系統變數的時間;這等同於以下查詢:SELECT SET_TIME INTO @stime FROM performance.schema_variables_info WHERE VARIABLE_NAME='offline_mode';
如果
@stime
不是NULL
,則伺服器會引發ER_SERVER_OFFLINE_MODE_REASON
,並列印以下錯誤訊息:The server is currently in offline mode since @stime, reason: @sreason
如果
@stime
是NULL
,則伺服器會引發ER_SERVER_OFFLINE_MODE
並列印訊息 伺服器目前處於離線模式。
如果
@sreason
為空,則伺服器會取得上次設定offline_mode
的時間以及設定它的使用者名稱;這等同於此處顯示的查詢:SELECT SET_TIME, SET_USER INTO @stime, @suser FROM performance.schema_variables_info WHERE VARIABLE_NAME='offline_mode';
如果
@stime
和@suser
都不是NULL
,則伺服器會引發ER_SERVER_OFFLINE_MODE_USER
並列印此處顯示的錯誤訊息:The server is currently in offline mode since @stime, set by user @suser
如果
@suser
或@stime
其中之一或兩者皆為NULL
,則伺服器會引發ER_SERVER_OFFLINE_MODE
並列印先前針對此錯誤顯示的文字。
有關此處使用的 Performance Schema 資料表的更多資訊,請參閱 第 29.12.14.1 節「Performance Schema global_variable_attributes 資料表」,以及 第 29.12.14.3 節「Performance Schema variables_info 資料表」。
要將伺服器置於離線模式,請將
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
權限才能終止使用SYSTEM_USER
權限執行的工作階段或陳述式。允許複寫執行緒繼續將資料應用於伺服器。
-
命令列格式 --old-alter-table[={OFF|ON}]
系統變數 old_alter_table
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
當啟用此變數時,伺服器不會使用最佳化的方法來處理
ALTER TABLE
操作。它會回復為使用臨時資料表、複製資料,然後將臨時資料表重新命名為原始資料表,如同 MySQL 5.0 及更早版本所使用的那樣。有關ALTER TABLE
操作的更多資訊,請參閱 第 15.1.9 節「ALTER TABLE 陳述式」。使用
old_alter_table=ON
的ALTER TABLE ... DROP PARTITION
會重建已分割的資料表,並嘗試將已卸除分割區中的資料移動到具有相容PARTITION ... VALUES
定義的另一個分割區。無法移動到另一個分割區的資料會被刪除。在較早的版本中,使用old_alter_table=ON
的ALTER TABLE ... DROP PARTITION
會刪除儲存在分割區中的資料並卸除分割區。 -
命令列格式 --open-files-limit=#
系統變數 open_files_limit
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 5000,可能需要調整
最小值 0
最大值 與平台相關
可供 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
作業系統限制。
伺服器會嘗試使用這些值的最大值來取得檔案描述符的數量,上限為最大的不帶正負號的整數值。如果無法取得那麼多的描述符,則伺服器會嘗試取得系統允許的數量。
在 MySQL 無法變更開啟檔案數量的系統上,有效值為 0。
在 Unix 上,該值不能設定為大於 ulimit -n 命令顯示的值。在使用
systemd
的 Linux 系統上,該值不能設定為大於LimitNOFILE
(如果未設定LimitNOFILE
,則為DefaultLimitNOFILE
);否則,在 Linux 上,open_files_limit
的值不能超過 ulimit -n。 -
命令列格式 --optimizer-prune-level=#
系統變數 optimizer_prune_level
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1
最小值 0
最大值 1
控制查詢最佳化期間所套用的啟發式方法,以從最佳化器搜尋空間中修剪較不具前景的部分計畫。值為 0 會停用啟發式方法,以便最佳化器執行詳盡的搜尋。值為 1 會使最佳化器根據中繼計畫所擷取的資料列數來修剪計畫。
-
命令列格式 --optimizer-search-depth=#
系統變數 optimizer_search_depth
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 62
最小值 0
最大值 62
查詢最佳化器執行的最大搜尋深度。大於查詢中關聯數的值會產生更好的查詢計畫,但為查詢產生執行計畫所需的時間會更長。小於查詢中關聯數的值會更快傳回執行計畫,但產生的計畫可能遠非最佳。如果設定為 0,系統會自動選擇一個合理的值。
-
命令列格式 --optimizer-switch=值
系統變數 optimizer_switch
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 設定 有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_condition_pushdown={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
prefer_ordering_index={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
subquery_to_derived={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
prefer_ordering_index={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
subquery_to_derived={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
hash_join={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
use_invisible_indexes={on|off}
有效值 batched_key_access={on|off}
block_nested_loop={on|off}
condition_fanout_filter={on|off}
derived_merge={on|off}
duplicateweedout={on|off}
engine_condition_pushdown={on|off}
firstmatch={on|off}
index_condition_pushdown={on|off}
index_merge={on|off}
index_merge_intersection={on|off}
index_merge_sort_union={on|off}
index_merge_union={on|off}
loosescan={on|off}
materialization={on|off}
mrr={on|off}
mrr_cost_based={on|off}
semijoin={on|off}
skip_scan={on|off}
subquery_materialization_cost_based={on|off}
use_index_extensions={on|off}
use_invisible_indexes={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,hash_set_operations=on 1 row in set (0.00 sec)
如需有關此變數的語法及其控制的最佳化器行為的詳細資訊,請參閱第 10.9.2 節「可切換的最佳化」。
-
命令列格式 --optimizer-trace=值
系統變數 optimizer_trace
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數控制最佳化器追蹤。如需詳細資訊,請參閱MySQL 內部:追蹤最佳化器。
-
命令列格式 --optimizer-trace-features=值
系統變數 optimizer_trace_features
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 此變數可啟用或停用選定的最佳化器追蹤功能。如需詳細資訊,請參閱MySQL 內部:追蹤最佳化器。
-
命令列格式 --optimizer-trace-limit=#
系統變數 optimizer_trace_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 0
最大值 2147483647
要顯示的最大最佳化器追蹤數。如需詳細資訊,請參閱MySQL 內部:追蹤最佳化器。
-
命令列格式 --optimizer-trace-max-mem-size=#
系統變數 optimizer_trace_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 1048576
最小值 0
最大值 4294967295
單位 位元組 儲存的最佳化器追蹤的最大累計大小。如需詳細資訊,請參閱MySQL 內部:追蹤最佳化器。
-
命令列格式 --optimizer-trace-offset=#
系統變數 optimizer_trace_offset
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
最小值 -2147483647
最大值 2147483647
要顯示的最佳化器追蹤的偏移量。如需詳細資訊,請參閱MySQL 內部:追蹤最佳化器。
performance_schema_
xxx
效能架構系統變數列於第 29.15 節「效能架構系統變數」中。這些變數可用於設定效能架構的運作。
-
命令列格式 --parser-max-mem-size=#
系統變數 parser_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值(64 位元平台) 18446744073709551615
預設值(32 位元平台) 4294967295
最小值 10000000
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
單位 位元組 剖析器可用的最大記憶體量。預設值不會限制可用的記憶體。可以減少此值,以防止因剖析過長或複雜的 SQL 陳述式而導致記憶體不足的情況。
-
命令列格式 --partial-revokes[={OFF|ON}]
系統變數 partial_revokes
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
(如果不存在部分撤銷)ON
(如果存在部分撤銷)啟用此變數可讓部分撤銷權限。具體而言,對於在全域層級擁有權限的使用者,
partial_revokes
可讓您撤銷特定結構描述的權限,同時保留其他結構描述的權限。例如,擁有全域UPDATE
權限的使用者可能會被限制在mysql
系統結構描述上行使此權限。(或者,換句話說,該使用者可以在除了mysql
結構描述以外的所有結構描述上行使UPDATE
權限。)就此而言,使用者的全域UPDATE
權限會被部分撤銷。一旦啟用,如果任何帳戶具有權限限制,則無法停用
partial_revokes
。如果存在任何此類帳戶,則停用partial_revokes
會失敗對於在啟動時嘗試停用
partial_revokes
的情況,伺服器會記錄錯誤訊息並啟用partial_revokes
。對於在執行階段嘗試停用
partial_revokes
的情況,會發生錯誤,並且partial_revokes
值保持不變。
若要在這種情況下停用
partial_revokes
,請先修改每個具有部分撤銷權限的帳戶,方法是重新授與權限或移除帳戶。注意在權限指派中,啟用
partial_revokes
會導致 MySQL 將結構描述名稱中未逸出的_
和%
SQL 通配符解譯為文字字元,就好像它們已逸出為\_
和\%
一樣。由於這會變更 MySQL 解譯權限的方式,因此建議在可能啟用partial_revokes
的安裝中,避免在權限指派中使用未逸出的通配符。此外,不建議在授與中使用
_
和%
作為通配符,而且您應該預期在未來版本的 MySQL 中會移除對其的支援。如需詳細資訊,包括移除部分撤銷的說明,請參閱第 8.2.12 節「使用部分撤銷的權限限制」。
-
命令列格式 --password-history=#
系統變數 password_history
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
此變數根據所需的最小密碼變更次數,定義控制重複使用先前密碼的全域原則。對於先前使用的帳戶密碼,此變數表示在可以重複使用該密碼之前必須發生的後續帳戶密碼變更次數。如果值為 0(預設值),則沒有基於密碼變更次數的重複使用限制。
對此變數的變更會立即套用至所有使用
PASSWORD HISTORY DEFAULT
選項定義的帳戶。可以使用
CREATE USER
和ALTER USER
陳述式的PASSWORD HISTORY
選項,根據需要針對個別帳戶覆寫全域變更次數密碼重複使用原則。請參閱第 8.2.15 節「密碼管理」。 -
命令列格式 --password-require-current[={OFF|ON}]
系統變數 password_require_current
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數定義全域原則,以控制嘗試變更帳戶密碼是否必須指定要取代的目前密碼。
對此變數的變更會立即套用至所有使用
PASSWORD REQUIRE CURRENT DEFAULT
選項定義的帳戶。可以使用
CREATE USER
和ALTER USER
陳述式的PASSWORD REQUIRE
選項,根據需要針對個別帳戶覆寫全域要求的驗證原則。請參閱第 8.2.15 節「密碼管理」。 -
命令列格式 --password-reuse-interval=#
系統變數 password_reuse_interval
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
單位 天 此變數定義了基於經過時間來控制先前密碼重複使用的全域原則。對於先前使用過的帳戶密碼,此變數表示必須經過的天數,之後才能重複使用該密碼。如果值為 0(預設值),則不根據經過時間限制重複使用。
對此變數的變更會立即套用至所有使用
PASSWORD REUSE INTERVAL DEFAULT
選項定義的帳戶。可以使用
CREATE USER
和ALTER USER
陳述式的PASSWORD REUSE INTERVAL
選項,根據需要覆寫個別帳戶的全域經過時間密碼重複使用原則。請參閱 第 8.2.15 節「密碼管理」。 -
命令列格式 --persisted-globals-load[={OFF|ON}]
系統變數 persisted_globals_load
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
是否從資料目錄中的
mysqld-auto.cnf
檔案載入持續性組態設定。伺服器通常會在啟動時處理此檔案,在所有其他選項檔案之後(請參閱 第 6.2.2.2 節「使用選項檔案」)。停用persisted_globals_load
會導致伺服器啟動順序跳過mysqld-auto.cnf
。若要修改
mysqld-auto.cnf
的內容,請使用SET PERSIST
、SET PERSIST_ONLY
和RESET PERSIST
陳述式。請參閱 第 7.1.9.3 節「持續性系統變數」。 persist_only_admin_x509_subject
命令列格式 --persist-only-admin-x509-subject=string
系統變數 persist_only_admin_x509_subject
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 空字串
SET PERSIST
和SET PERSIST_ONLY
可讓系統變數持續儲存至資料目錄中的mysqld-auto.cnf
選項檔案(請參閱 第 15.7.6.1 節「設定變數的語法」)。持續儲存系統變數可以啟用影響後續伺服器重新啟動的執行階段組態變更,這對於不需要直接存取 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
命令列格式 --persist_sensitive_variables_in_plaintext[={OFF|ON}]
系統變數 persist_sensitive_variables_in_plaintext
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果在使用
SET PERSIST
來設定系統變數的值時,金鑰環元件支援不可用,則persist_sensitive_variables_in_plaintext
會控制是否允許伺服器以未加密的格式儲存敏感系統變數的值。它還會控制如果無法解密加密值,伺服器是否可以啟動。請注意,金鑰環外掛程式不支援安全儲存敏感系統變數;必須在 MySQL 伺服器執行個體上啟用金鑰環元件(請參閱 第 8.4.4 節「MySQL 金鑰環」)才能支援安全儲存。預設設定
ON
會在金鑰環元件支援可用時加密這些值,如果不可用,則會以未加密的方式持續儲存這些值(並發出警告)。下次設定任何持續性系統變數時,如果當時金鑰環支援可用,伺服器會加密任何未加密的敏感系統變數的值。如果無法解密加密的系統變數值,ON
設定也允許伺服器啟動,在這種情況下會發出警告並使用系統變數的預設值。在這種情況下,它們的值在可以解密之前無法變更。最安全的設定
OFF
表示如果金鑰環元件支援不可用,則無法持續儲存敏感系統變數值。OFF
設定也表示如果無法解密加密的系統變數值,伺服器不會啟動。如需更多資訊,請參閱持續儲存敏感系統變數。
-
伺服器寫入其處理程序 ID 的檔案路徑名稱。伺服器會在資料目錄中建立檔案,除非給定絕對路徑名稱以指定不同的目錄。如果您指定此變數,則必須指定值。如果您未指定此變數,則 MySQL 會使用
的預設值,其中host_name
.pidhost_name
是主機的名稱。處理程序 ID 檔案由其他程式(例如 mysqld_safe)用來判斷伺服器的處理程序 ID。在 Windows 上,此變數也會影響預設的錯誤日誌檔名。請參閱 第 7.4.2 節「錯誤日誌」。
-
命令列格式 --plugin-dir=dir_name
系統變數 plugin_dir
範圍 全域 動態 否 SET_VAR
提示適用否 類型 目錄名稱 預設值 BASEDIR/lib/plugin
外掛程式目錄的路徑名稱。
如果外掛程式目錄可由伺服器寫入,則使用者可能會使用
SELECT ... INTO DUMPFILE
將可執行程式碼寫入目錄中的檔案。可以透過將plugin_dir
設定為對伺服器唯讀,或者將secure_file_priv
設定為可以安全進行SELECT
寫入的目錄來避免這種情況。 -
伺服器偵聽 TCP/IP 連線的連接埠號碼。可以使用
--port
選項來設定此變數。 -
命令列格式 --preload-buffer-size=#
系統變數 preload_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 32768
最小值 1024
最大值 1073741824
單位 位元組 預先載入索引時所配置的緩衝區大小。
設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --print-identified-with-as-hex[={OFF|ON}]
系統變數 print_identified_with_as_hex
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 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.32 節「SHOW PROFILES 陳述式」。此變數已過時;預期會在未來的 MySQL 版本中移除。
若啟用
profiling
,此變數指定要保留效能分析資訊的陳述式數量。預設值為 15。最大值為 100。將此值設為 0 會有效地停用效能分析。請參閱章節 15.7.7.32,「SHOW PROFILES 陳述式」。此變數已過時;預期會在未來的 MySQL 版本中移除。
protocol_compression_algorithms
命令列格式 --protocol-compression-algorithms=值
系統變數 protocol_compression_algorithms
範圍 全域 動態 是 SET_VAR
提示適用否 類型 設定 預設值 zlib,zstd,uncompressed
有效值 zlib
zstd
uncompressed
伺服器允許用於連入連線的壓縮演算法。這些連線包括用戶端程式的連線,以及參與來源/複本複寫或群組複寫的伺服器的連線。壓縮不適用於
FEDERATED
資料表的連線。protocol_compression_algorithms
不控制 X Protocol 的連線壓縮。有關其運作方式的資訊,請參閱章節 22.5.5,「使用 X 外掛程式的連線壓縮」。變數值是以逗號分隔的一個或多個壓縮演算法名稱的清單,順序不拘,可從以下項目中選擇 (不區分大小寫):
zlib
:允許使用zlib
壓縮演算法的連線。zstd
:允許使用zstd
壓縮演算法的連線。uncompressed
:允許未壓縮的連線。如果此演算法名稱未包含在protocol_compression_algorithms
值中,則伺服器不允許未壓縮的連線。它僅允許使用該值中指定的其他演算法的壓縮連線,且不會回退到未壓縮的連線。
zlib,zstd,uncompressed
的預設值表示伺服器允許所有壓縮演算法。如需更多資訊,請參閱章節 6.2.8,「連線壓縮控制」。
-
系統變數 protocol_version
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 0
最大值 4294967295
MySQL 伺服器使用的用戶端/伺服器協定版本。
-
系統變數 proxy_user
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 字串 如果目前的用戶端是另一個使用者的代理,則此變數是代理使用者帳戶名稱。否則,此變數為
NULL
。請參閱章節 8.2.19,「代理使用者」。 -
系統變數 pseudo_replica_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 pseudo_replica_mode
供伺服器內部使用。它可以協助正確處理源自比目前處理它們的伺服器更舊或更新的伺服器的事務。mysqlbinlog 會在執行任何 SQL 陳述式之前,將pseudo_replica_mode
的值設定為 true。設定
pseudo_replica_mode
的工作階段值是受限的操作。工作階段使用者必須具有REPLICATION_APPLIER
權限 (請參閱章節 19.3.3,「複寫權限檢查」),或具有足夠的權限來設定受限的工作階段變數 (請參閱章節 7.1.9.1,「系統變數權限」)。但是,請注意,此變數並非供使用者設定;它是由複寫基礎結構自動設定的。pseudo_replica_mode
對於處理已準備的 XA 交易有以下影響,這些交易可以附加到或與處理工作階段分離 (預設情況下,發出XA START
的工作階段):如果為 true,且處理工作階段已執行內部使用的
BINLOG
陳述式,則 XA 交易會在交易的第一部分 (直到XA PREPARE
完成) 完成後,自動與工作階段分離,因此任何具有XA_RECOVER_ADMIN
權限的工作階段都可以認可或回滾這些交易。如果為 false,則只要工作階段仍在作用中,XA 交易就會保持附加到處理工作階段,在此期間,沒有其他工作階段可以認可該交易。只有在工作階段中斷連線或伺服器重新啟動時,準備好的交易才會分離。
pseudo_replica_mode
對於original_commit_timestamp
複寫延遲時間戳記和original_server_version
系統變數有以下影響:如果為 true,則不會明確設定
original_commit_timestamp
或original_server_version
的交易會假設源自另一個未知的伺服器,因此會將值 0 (表示未知) 指派給時間戳記和系統變數。如果為 false,則不會明確設定
original_commit_timestamp
或original_server_version
的交易會假設源自目前的伺服器,因此會將目前的時間戳記和目前伺服器的版本指派給時間戳記和系統變數。
pseudo_replica_mode
對於處理設定一個或多個不支援 (已移除或未知) SQL 模式的陳述式有以下影響:如果為 true,伺服器會忽略不支援的模式並發出警告。
如果為 false,伺服器會拒絕具有
ER_UNSUPPORTED_SQL_MODE
的陳述式。
-
已淘汰 是 系統變數 pseudo_slave_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 已淘汰的
pseudo_replica_mode
別名。 -
系統變數 pseudo_thread_id
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2147483647
最小值 0
最大值 2147483647
此變數供伺服器內部使用。
警告變更
pseudo_thread_id
系統變數的工作階段值會變更CONNECTION_ID()
函數傳回的值。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --query-alloc-block-size=#
系統變數 query_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 1024
最大值 4294966272
單位 位元組 區塊大小 1024
在陳述式剖析和執行期間建立的物件所配置的記憶體區塊的配置大小 (以位元組為單位)。如果您在記憶體片段化方面遇到問題,增加此參數可能會有所幫助。
位元組數的區塊大小為 1024。如果值不是區塊大小的確切倍數,則 MySQL 伺服器會將其向下捨入為區塊大小的下一個較小倍數,然後再儲存系統變數的值。剖析器允許的值上限為平台的最大無號整數值 (針對 32 位元系統為 4294967295 或 232−1,針對 64 位元系統為 18446744073709551615 或 264−1),但實際最大值是較小的區塊大小。
-
命令列格式 --query-prealloc-size=#
已淘汰 是 系統變數 query_prealloc_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 8192
最大值 (64 位元平台) 18446744073709550592
最大值 (32 位元平台) 4294966272
單位 位元組 區塊大小 1024
query_prealloc_size
已被淘汰,設定它無效;您應該預期它會在 MySQL 的未來版本中移除。 -
系統變數 rand_seed1
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 不適用
最小值 0
最大值 4294967295
rand_seed1
和rand_seed2
變數僅以工作階段變數的形式存在,可以設定但無法讀取。這些變數 (而非其值) 會顯示在SHOW VARIABLES
的輸出中。這些變數的目的是支援
RAND()
函數的複寫。對於呼叫RAND()
的陳述式,來源會將兩個值傳遞給複本,複本會使用這些值來設定亂數產生器的種子。複本會使用這些值來設定工作階段變數rand_seed1
和rand_seed2
,以便複本上的RAND()
產生與來源相同的值。 請參閱
rand_seed1
的說明。-
命令列格式 --range-alloc-block-size=#
系統變數 range_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 4096
最小值 4096
最大值 (64 位元平台) 18446744073709550592
最大值 4294966272
單位 位元組 區塊大小 1024
執行範圍最佳化時配置的區塊大小 (以位元組為單位)。
位元組數的區塊大小為 1024。如果值不是區塊大小的確切倍數,則 MySQL 伺服器會將其向下捨入為區塊大小的下一個較小倍數,然後再儲存系統變數的值。剖析器允許的值上限為平台的最大無號整數值 (針對 32 位元系統為 4294967295 或 232−1,針對 64 位元系統為 18446744073709551615 或 264−1),但實際最大值是較小的區塊大小。
-
命令列格式 --range-optimizer-max-mem-size=#
系統變數 range_optimizer_max_mem_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8388608
最小值 0
最大值 18446744073709551615
單位 位元組 範圍最佳化工具的記憶體消耗限制。值為 0 表示 「無限制」。 如果最佳化工具考慮的執行計畫使用範圍存取方法,但最佳化工具估計此方法所需的記憶體量會超過限制,則會放棄該計畫並考慮其他計畫。如需更多資訊,請參閱限制範圍最佳化的記憶體使用。
-
系統變數 rbr_exec_mode
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 STRICT
有效值 STRICT
IDEMPOTENT
供 mysqlbinlog 內部使用。此變數會在
IDEMPOTENT
模式和STRICT
模式之間切換伺服器。IDEMPOTENT
模式會抑制 mysqlbinlog 產生的BINLOG
陳述式中的重複鍵和找不到鍵的錯誤。當在導致與現有資料衝突的伺服器上重新執行基於列的二進位日誌時,此模式很有用。mysqlbinlog 在您透過在輸出中寫入以下內容來指定--idempotent
選項時,會設定此模式SET SESSION RBR_EXEC_MODE=IDEMPOTENT;
-
命令列格式 --read-buffer-size=#
系統變數 read_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 131072
最小值 8192
最大值 2147479552
單位 位元組 區塊大小 4096
執行
MyISAM
資料表循序掃描的每個執行緒都會為其掃描的每個資料表配置此大小(以位元組為單位)的緩衝區。如果您執行許多循序掃描,您可能會想要增加此值,其預設值為 131072。此變數的值應為 4KB 的倍數。如果將其設定為非 4KB 倍數的值,則其值會向下捨入為最接近的 4KB 倍數。此選項也用於以下情況,適用於所有其他儲存引擎,但
InnoDB
除外用於在排序
ORDER BY
的列時,快取暫存檔(不是暫存表)中的索引。用於大量插入到分割區中。
用於快取巢狀查詢的結果。
read_buffer_size
也用於另一種特定於儲存引擎的方式:用於決定MEMORY
資料表的記憶體區塊大小。select_into_buffer_size
用於SELECT INTO DUMPFILE
和SELECT INTO OUTFILE
陳述式的 I/O 快取緩衝區。(read_buffer_size
用於所有其他情況下的 I/O 快取緩衝區大小。)有關不同操作期間記憶體使用的更多資訊,請參閱第 10.12.3.1 節「MySQL 如何使用記憶體」。
-
如果啟用
read_only
系統變數,伺服器將不允許任何用戶端更新,但具有CONNECTION_ADMIN
權限(或已棄用的SUPER
權限)的使用者除外。預設情況下,此變數已停用。伺服器也支援
super_read_only
系統變數(預設停用),其具有以下效果如果啟用
super_read_only
,伺服器將禁止用戶端更新,即使是具有CONNECTION_ADMIN
或SUPER
權限的使用者也不例外。將
super_read_only
設定為ON
會隱式強制read_only
為ON
。將
read_only
設定為OFF
會隱式強制super_read_only
為OFF
。
當啟用
read_only
且啟用super_read_only
時,伺服器仍然允許以下操作如果伺服器是複本,則由複寫執行緒執行的更新。在複寫設定中,在複本伺服器上啟用
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
取得)或有擱置的交易,則嘗試會失敗並發生錯誤。當其他用戶端有任何進行中的陳述式、作用中的
LOCK TABLES WRITE
或進行中的提交時,嘗試會封鎖,直到鎖定釋放且陳述式和交易結束。當嘗試啟用read_only
擱置時,其他用戶端要求資料表鎖定或開始交易的請求也會封鎖,直到設定read_only
。如果存在持有中繼資料鎖定的作用中交易,則嘗試會封鎖,直到這些交易結束。
您可以在持有全域讀取鎖定(使用
FLUSH TABLES WITH READ LOCK
取得)時啟用read_only
,因為這不涉及資料表鎖定。
-
命令列格式 --read-rnd-buffer-size=#
系統變數 read_rnd_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 1
最大值 2147483647
單位 位元組 此變數用於從
MyISAM
資料表讀取,以及用於任何儲存引擎的多範圍讀取最佳化。當在金鑰排序操作之後,以排序順序從
MyISAM
資料表讀取列時,會透過此緩衝區讀取列,以避免磁碟搜尋。請參閱第 10.2.1.16 節「ORDER BY 最佳化」。將變數設定為較大的值可以大幅改善ORDER BY
效能。然而,這是為每個用戶端配置的緩衝區,因此您不應將全域變數設定為較大的值。相反地,請僅從需要執行大型查詢的用戶端中變更工作階段變數。有關不同操作期間記憶體使用的更多資訊,請參閱第 10.12.3.1 節「MySQL 如何使用記憶體」。有關多範圍讀取最佳化的資訊,請參閱第 10.2.1.11 節「多範圍讀取最佳化」。
-
命令列格式 --regexp-stack-limit=#
系統變數 regexp_stack_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8000000
最小值 0
最大值 2147483647
單位 位元組 用於
REGEXP_LIKE()
和類似函式執行的正規表示式比對操作的內部堆疊可用的最大記憶體量(以位元組為單位)(請參閱第 14.8.2 節「正規表示式」)。 -
命令列格式 --regexp-time-limit=#
系統變數 regexp_time_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 32
最小值 0
最大值 2147483647
由
REGEXP_LIKE()
和類似函式執行的正規表示式比對操作的時間限制(請參閱第 14.8.2 節「正規表示式」)。此限制表示為比對引擎執行的最大允許步驟數,因此僅間接影響執行時間。通常,它的數量級為毫秒。 -
系統變數 require_row_format
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數供複製功能和 mysqlbinlog 內部伺服器使用。它將在會話中執行的 DML 事件限制為僅以基於列的二進制日誌格式編碼的事件,並且無法建立暫存表。不遵守限制的查詢將會失敗。
將此系統變數的會話值設定為
ON
不需要任何權限。將此系統變數的會話值設定為OFF
是一個受限的操作,並且會話使用者必須具有足夠的權限來設定受限的會話變數。請參閱第 7.1.9.1 節,「系統變數權限」。 -
命令列格式 --require-secure-transport[={OFF|ON}]
系統變數 require_secure_transport
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否要求客戶端連線到伺服器時必須使用某種形式的安全傳輸。啟用此變數後,伺服器僅允許使用 TLS/SSL 加密的 TCP/IP 連線,或使用套接字檔案 (在 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
錯誤。另請參閱將加密連線設定為強制。
restrict_fk_on_non_standard_key
命令列格式 --restrict-fk-on-non-standard-key
已淘汰 是 系統變數 restrict_fk_on_non_standard_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
此變數在
ON
時 (預設值),會防止使用非唯一鍵或部分鍵作為外來鍵。若要在目前的會話中允許將此類鍵用作外來鍵,請使用SET @@session.restrict_fk_on_non_standard_key=OFF
;若要在全域允許使用此類鍵,請設定全域變數或啟動伺服器時使用--skip-restrict-fk-on-non-standard-key
。在
CREATE TABLE
或ALTER TABLE
陳述式中使用非唯一鍵或部分鍵作為外來鍵已被棄用,您應該預期在未來版本的 MySQL 中會移除對其的支援。當restrict_fk_on_non_standard_key
為ON
時,嘗試這樣做會被拒絕並顯示ER_FK_NO_INDEX_PARENT
;當其為OFF
時,允許這種使用方式,但仍會發出ER_WARN_DEPRECATED_NON_STANDARD_KEY
作為警告。restrict_fk_on_non_standard_key
已被棄用,並且會在未來版本的 MySQL 中移除。設定它會發出棄用警告。對 MySQL 複製的影響。當外來鍵在主伺服器上以非標準鍵建立時,因為
restrict_fk_on_non_standard_key
為OFF
,無論複本上此變數的任何設定為何,該陳述式都會在複本上成功。-
系統變數 resultset_metadata
範圍 工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 FULL
有效值 FULL
無
對於元資料傳輸是可選的連線,客戶端設定
resultset_metadata
系統變數來控制伺服器是否傳回結果集元資料。允許的值為FULL
(傳回所有元資料;這是預設值) 和NONE
(不傳回元資料)。對於非元資料可選的連線,將
resultset_metadata
設定為NONE
會產生錯誤。如需有關管理結果集元資料傳輸的詳細資訊,請參閱選用結果集元資料。
secondary_engine_cost_threshold
系統變數 secondary_engine_cost_threshold
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 數值 預設值 100000.000000
最小值 0
最大值 DBL_MAX (最大雙精度值)
查詢卸載至次要引擎的優化器成本閾值。
適用於 HeatWave。請參閱HeatWave 使用者指南。
-
命令列格式 --schema-definition-cache=#
系統變數 schema_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
定義可保留在字典物件快取中的架構定義物件 (無論使用中或未使用) 的數量限制。
只有在使用中的架構定義物件數量少於
schema_definition_cache
定義的容量時,才會將未使用的架構定義物件保留在字典物件快取中。設定為
0
表示架構定義物件只有在使用時才會保留在字典物件快取中。如需更多資訊,請參閱第 16.4 節,「字典物件快取」。
-
命令列格式 --secure-file-priv=dir_name
系統變數 secure_file_priv
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 平台特定
有效值 空字串
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
值預設 secure_file_priv
值STANDALONE
空 DEB
、RPM
、SVR4
/var/lib/mysql-files
其他 mysql-files 在 CMAKE_INSTALL_PREFIX
值下伺服器會在啟動時檢查
secure_file_priv
的值,如果該值不安全,則會將警告寫入錯誤日誌。如果值為空,或者值是資料目錄或其子目錄,或者所有使用者都可以存取的目錄,則非NULL
值會被視為不安全。如果secure_file_priv
設定為不存在的路徑,則伺服器會將錯誤訊息寫入錯誤日誌並退出。 -
命令列格式 --select-into-buffer-size=#
系統變數 select_into_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 131072
最小值 8192
最大值 2147479552
單位 位元組 區塊大小 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 節,「系統變數權限」。
-
命令列格式 --select-into-disk-sync={ON|OFF}
系統變數 select_into_disk_sync
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
有效值 OFF
ON
設定為
ON
時,使用select_into_buffer_size
為長時間執行的SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
陳述式寫入輸出檔案啟用緩衝區同步。 -
命令列格式 --select-into-disk-sync-delay=#
系統變數 select_into_disk_sync_delay
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 0
最小值 0
最大值 31536000
單位 毫秒 當長時間執行的
SELECT INTO OUTFILE
或SELECT INTO DUMPFILE
陳述式,透過select_into_disk_sync
啟用寫入輸出檔案的緩衝區同步時,此變數會設定同步後的選擇性延遲時間(以毫秒為單位)。0
(預設值)表示沒有延遲。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --session-track-gtids=value
系統變數 session_track_gtids
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 OFF
OWN_GTID
ALL_GTIDS
控制伺服器是否將 GTID 返回給客戶端,使客戶端能夠使用它們來追蹤伺服器狀態。根據變數值,在執行完每個交易後,伺服器的 GTID 會被擷取並作為確認的一部分返回給客戶端。
session_track_gtids
的可能值如下OFF
:伺服器不會將 GTID 返回給客戶端。這是預設值。OWN_GTID
:伺服器會返回自上次確認以來,此客戶端在其目前連線階段中成功提交的所有交易的 GTID。通常,這是最後一次提交的單一交易的 GTID,但如果單一客戶端請求導致多個交易,伺服器會返回一個包含所有相關 GTID 的 GTID 集合。ALL_GTIDS
:伺服器會返回其gtid_executed
系統變數的全域值,它會在交易成功提交後讀取。除了剛提交的交易的 GTID 外,此 GTID 集合還包含任何客戶端在伺服器上提交的所有交易,並且可以包含在目前正在確認的交易提交之後提交的交易。
session_track_gtids
不能在交易上下文中設定。有關連線階段狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端連線階段狀態」。
-
命令列格式 --session-track-schema[={OFF|ON}]
系統變數 session_track_schema
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
控制伺服器是否追蹤在目前連線階段中設定預設結構描述(資料庫)的時間,並通知客戶端使其可使用結構描述名稱。
如果啟用結構描述名稱追蹤器,則每次設定預設結構描述時都會發生名稱通知,即使新的結構描述名稱與舊的相同。
有關連線階段狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端連線階段狀態」。
-
命令列格式 --session-track-state-change[={OFF|ON}]
系統變數 session_track_state_change
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
控制伺服器是否追蹤目前連線階段狀態的變更,並在狀態發生變更時通知客戶端。可以針對客戶端連線階段狀態的以下屬性報告變更
預設結構描述(資料庫)。
系統變數的連線階段特定值。
使用者定義的變數。
暫存表格。
預處理陳述式。
如果啟用連線階段狀態追蹤器,則每次變更涉及到追蹤的連線階段屬性時都會發生通知,即使新的屬性值與舊的相同。例如,將使用者定義的變數設定為目前值會導致通知。
session_track_state_change
變數僅控制變更發生時的通知,而不控制變更的內容。例如,當設定預設結構描述或指派追蹤的連線階段系統變數時,會發生狀態變更通知,但通知不包含結構描述名稱或變數值。若要接收結構描述名稱或連線階段系統變數值的通知,請分別使用session_track_schema
或session_track_system_variables
系統變數。注意指派值給
session_track_state_change
本身不被視為狀態變更,因此不會回報。但是,如果它的名稱列在session_track_system_variables
的值中,則對其的任何指派都會導致新值的通知。有關連線階段狀態追蹤的更多資訊,請參閱第 7.1.18 節「伺服器追蹤客戶端連線階段狀態」。
session_track_system_variables
命令列格式 --session-track-system-variables=#
系統變數 session_track_system_variables
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 字串 預設值 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
命令列格式 --session-track-transaction-info=value
系統變數 session_track_transaction_info
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 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 節「伺服器追蹤客戶端連線階段狀態」。
-
命令列格式 --set-operations-buffer-size=#
系統變數 set_operations_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256K
最小值 16K
最大值 1 GB
設定當
hash_set_operations
最佳化器開關為ON
時,使用雜湊表的INTERSECT
和EXCEPT
作業的緩衝區大小。一般來說,當啟用雜湊最佳化時,增加此緩衝區的大小可以改善這些作業的效能。 sha256_password_auto_generate_rsa_keys
命令列格式 --sha256-password-auto-generate-rsa-keys[={OFF|ON}]
已淘汰 是 系統變數 sha256_password_auto_generate_rsa_keys
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果資料目錄中尚不存在 RSA 私密/公開金鑰配對檔案,伺服器會使用此變數來判斷是否要自動產生它們。
在啟動時,如果滿足以下所有條件,伺服器會在資料目錄中自動產生 RSA 私鑰/公鑰對檔案:
sha256_password_auto_generate_rsa_keys
或caching_sha2_password_auto_generate_rsa_keys
系統變數已啟用;未指定 RSA 選項;資料目錄中缺少 RSA 檔案。這些金鑰對檔案可讓使用sha256_password
或caching_sha2_password
外掛程式驗證的帳戶,透過未加密連線使用 RSA 安全地交換密碼;請參閱第 8.4.1.2 節「SHA-256 可插拔驗證」和 第 8.4.1.1 節「快取 SHA-2 可插拔驗證」。有關 RSA 檔案自動產生(包括檔案名稱和特性)的詳細資訊,請參閱第 8.3.3.1 節「使用 MySQL 建立 SSL 和 RSA 憑證和金鑰」。
auto_generate_certs
系統變數相關,但控制使用 SSL 安全連線所需的 SSL 憑證和金鑰檔案的自動產生。sha256_password_private_key_path
命令列格式 --sha256-password-private-key-path=file_name
已淘汰 是 系統變數 sha256_password_private_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 private_key.pem
此變數的值是
sha256_password
驗證外掛程式的 RSA 私密金鑰檔案的路徑名稱。如果該檔案命名為相對路徑,則會相對於伺服器資料目錄進行解譯。該檔案必須為 PEM 格式。重要由於此檔案儲存私鑰,因此其存取模式應受到限制,以便只有 MySQL 伺服器可以讀取它。
有關
sha256_password
的資訊,請參閱第 8.4.1.2 節「SHA-256 可插入驗證」。-
命令列格式 --sha256-password-proxy-users[={OFF|ON}]
已淘汰 是 系統變數 sha256_password_proxy_users
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制
sha256_password
內建驗證外掛程式是否支援 Proxy 使用者。除非啟用check_proxy_users
系統變數,否則此變數無效。有關使用者 Proxy 的資訊,請參閱第 8.2.19 節「Proxy 使用者」。 sha256_password_public_key_path
命令列格式 --sha256-password-public-key-path=file_name
已淘汰 是 系統變數 sha256_password_public_key_path
範圍 全域 動態 否 SET_VAR
提示適用否 類型 檔案名稱 預設值 public_key.pem
此變數的值是
sha256_password
驗證外掛程式的 RSA 公開金鑰檔案的路徑名稱。如果該檔案是使用相對路徑命名的,則會相對於伺服器資料目錄進行解譯。該檔案必須為 PEM 格式。由於此檔案儲存公開金鑰,因此可以自由地分發給客戶端使用者。(當使用 RSA 密碼加密連線到伺服器時,明確指定公開金鑰的客戶端必須使用與伺服器使用的相同公開金鑰。)有關
sha256_password
的資訊,包括客戶端如何指定 RSA 公開金鑰的資訊,請參閱第 8.4.1.2 節「SHA-256 可插入驗證」。-
命令列格式 --shared-memory[={OFF|ON}]
系統變數 shared_memory
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 布林值 預設值 OFF
(僅限 Windows。)伺服器是否允許共用記憶體連線。
-
命令列格式 --shared-memory-base-name=name
系統變數 shared_memory_base_name
範圍 全域 動態 否 SET_VAR
提示適用否 平台特定 Windows 類型 字串 預設值 MYSQL
(僅限 Windows。)用於共用記憶體連線的共用記憶體名稱。當在單一實體機器上執行多個 MySQL 實例時,此名稱很有用。預設名稱為
MYSQL
。名稱區分大小寫。僅當伺服器啟動時啟用
shared_memory
系統變數以支援共用記憶體連線時,此變數才適用。 show_create_table_skip_secondary_engine
命令列格式 --show-create-table-skip-secondary-engine[={OFF|ON}]
系統變數 show_create_table_skip_secondary_engine
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
啟用
show_create_table_skip_secondary_engine
會導致SECONDARY ENGINE
子句從SHOW CREATE TABLE
的輸出中排除,並從CREATE TABLE
陳述式中排除,這些陳述式是由 mysqldump 工具所傾印。mysqldump 提供了
--show-create-skip-secondary-engine
選項。當指定此選項時,它會在傾印操作期間啟用show_create_table_skip_secondary_engine
系統變數。適用於 HeatWave。請參閱HeatWave 使用者指南。
-
命令列格式 --show-create-table-verbosity[={OFF|ON}]
系統變數 show_create_table_verbosity
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
SHOW CREATE TABLE
通常不會顯示ROW_FORMAT
表格選項,如果列格式是預設格式。啟用此變數會導致SHOW CREATE TABLE
顯示ROW_FORMAT
,無論它是否為預設格式。 show_gipk_in_create_table_and_information_schema
命令列格式 --show-gipk-in-create-table-and-information-schema[={OFF|ON}]
系統變數 show_gipk_in_create_table_and_information_schema
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
是否在
SHOW
陳述式的輸出以及 Information Schema 表格中顯示產生的隱形主鍵。當此變數設定為OFF
時,將不會顯示此類鍵。此變數不會被複製。
有關更多資訊,請參閱 第 15.1.20.11 節,「產生的隱形主鍵」。
-
命令列格式 --skip-external-locking[={OFF|ON}]
系統變數 skip_external_locking
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果 mysqld 使用外部鎖定(系統鎖定),則此值為
OFF
;如果外部鎖定被禁用,則為ON
。這僅影響MyISAM
表格的存取。此變數由
--external-locking
或--skip-external-locking
選項設定。外部鎖定預設為禁用。外部鎖定僅影響
MyISAM
表格的存取。有關更多資訊,包括可以使用和不能使用的條件,請參閱 第 10.11.5 節,「外部鎖定」。 -
命令列格式 --skip-name-resolve[={OFF|ON}]
系統變數 skip_name_resolve
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 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
的情況下執行,則會失敗。如果您計劃這樣做,請確保存在可以接受連線的帳戶。例如,為了能夠使用--host=127.0.0.1
或--host=::1
以root
身分連線,請建立這些帳戶CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root-password'; CREATE USER 'root'@'::1' IDENTIFIED BY 'root-password';
-
命令列格式 --skip-networking[={OFF|ON}]
系統變數 skip_networking
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制伺服器是否允許 TCP/IP 連線。預設情況下,它是禁用的(允許 TCP 連線)。如果啟用,伺服器僅允許本機(非 TCP/IP)連線,並且所有與 mysqld 的互動都必須使用具名管道或共享記憶體(在 Windows 上)或 Unix socket 檔案(在 Unix 上)進行。強烈建議僅允許本機客戶端的系統使用此選項。請參閱 第 7.1.12.3 節,「DNS 查詢與主機快取」。
由於使用
--skip-grant-tables
啟動伺服器會停用身份驗證檢查,因此伺服器也會透過啟用skip_networking
來停用遠端連線。 -
命令列格式 --skip-show-database
系統變數 skip_show_database
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
這會阻止沒有
SHOW DATABASES
權限的人使用SHOW DATABASES
陳述式。如果您擔心使用者能夠看到屬於其他使用者的資料庫,這可以提高安全性。其效果取決於SHOW DATABASES
權限:如果變數值為ON
,則僅允許具有SHOW DATABASES
權限的使用者使用SHOW DATABASES
陳述式,並且該陳述式會顯示所有資料庫名稱。如果該值為OFF
,則允許所有使用者使用SHOW DATABASES
,但僅顯示使用者具有SHOW DATABASES
或其他權限的資料庫名稱。注意由於任何靜態全域權限都被視為所有資料庫的權限,因此任何靜態全域權限都會允許使用者透過
SHOW DATABASES
或檢查INFORMATION_SCHEMA
的SCHEMATA
表格來查看所有資料庫名稱,但已由部分撤銷在資料庫層級限制的資料庫除外。 -
命令列格式 --slow-launch-time=#
系統變數 slow_launch_time
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2
最小值 0
最大值 31536000
單位 秒 如果建立執行緒所花費的時間超過此秒數,伺服器會遞增
Slow_launch_threads
狀態變數。 -
命令列格式 --slow-query-log[={OFF|ON}]
系統變數 slow_query_log
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
是否啟用慢速查詢日誌。該值可以是 0(或
OFF
)以禁用日誌,或 1(或ON
)以啟用日誌。日誌輸出的目的地由log_output
系統變數控制;如果該值為NONE
,即使啟用日誌,也不會寫入任何日誌條目。「慢速」由
long_query_time
變數的值決定。請參閱 第 7.4.5 節,「慢速查詢日誌」。 -
命令列格式 --slow-query-log-file=file_name
系統變數 slow_query_log_file
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 host_name-slow.log
慢速查詢日誌檔案的名稱。預設值為
,但可以使用host_name
-slow.log--slow_query_log_file
選項更改初始值。 -
命令列格式 --socket={file_name|pipe_name}
系統變數 socket
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 預設值 (Windows) MySQL
預設值 (其他) /tmp/mysql.sock
在 Unix 平台上,此變數是用於本機客戶端連線的 socket 檔案名稱。預設值為
/tmp/mysql.sock
。(對於某些發行格式,目錄可能會有所不同,例如 RPM 的/var/lib/mysql
。)在 Windows 上,此變數是用於本機客戶端連線的具名管道名稱。預設值為
MySQL
(不區分大小寫)。 -
命令列格式 --sort-buffer-size=#
系統變數 sort_buffer_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 262144
最小值 32768
最大值 (Windows) 4294967295
最大值 (其他,64 位元平台) 18446744073709551615
最大值 (其他,32 位元平台) 4294967295
單位 位元組 每個必須執行排序的會話都會配置此大小的緩衝區。
sort_buffer_size
並非特定於任何儲存引擎,而是以一般方式應用於最佳化。至少,sort_buffer_size
的值必須足夠大,以容納排序緩衝區中的 15 個元組。此外,增加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 並發出警告)。 -
系統變數 sql_auto_is_null
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果啟用此變數,則在成功插入自動產生的
AUTO_INCREMENT
值之後,您可以透過發出以下形式的陳述式來找到該值SELECT * FROM tbl_name WHERE auto_col IS NULL
如果陳述式傳回一列,則傳回的值與您呼叫
LAST_INSERT_ID()
函數時的值相同。有關詳細資訊,包括多列插入後的回傳值,請參閱第 14.15 節,「資訊函數」。如果沒有成功插入AUTO_INCREMENT
值,則SELECT
陳述式不會傳回任何列。一些 ODBC 程式(例如 Access)使用透過
IS NULL
比較來擷取AUTO_INCREMENT
值的行為。請參閱取得自動遞增值。此行為可以透過將sql_auto_is_null
設定為OFF
來停用。sql_auto_is_null
的預設值為OFF
。 -
系統變數 sql_big_selects
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
如果設定為
OFF
,MySQL 會中止可能需要很長時間才能執行的SELECT
陳述式(也就是說,最佳化工具估計檢查的列數超過max_join_size
值的陳述式)。當發出不明智的WHERE
陳述式時,這很有用。新連線的預設值為ON
,允許所有SELECT
陳述式。如果您將
max_join_size
系統變數設定為DEFAULT
以外的值,則sql_big_selects
會設定為OFF
。 -
系統變數 sql_buffer_result
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果啟用,
sql_buffer_result
會強制將SELECT
陳述式的結果放入暫存表格中。這有助於 MySQL 提早釋放表格鎖定,並且在將結果傳送至用戶端需要很長時間的情況下,可能會有所幫助。預設值為OFF
。 sql_generate_invisible_primary_key
命令列格式 --sql-generate-invisible-primary-key[={OFF|ON}]
系統變數 sql_generate_invisible_primary_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此伺服器是否會為任何在建立時沒有主鍵的
InnoDB
表格新增產生的隱形主鍵。此變數不會複寫。此外,即使在複本上設定,也會被複寫套用執行緒忽略;這表示預設情況下,複本不會為來源上建立時沒有主鍵的任何複寫表格產生主鍵。您可以透過在
CHANGE REPLICATION SOURCE TO
陳述式中,將REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE
作為一部分進行設定,並選擇性地指定複寫通道,來讓複本為此類表格產生隱形主鍵。如需更多資訊和範例,請參閱第 15.1.20.11 節,「產生的隱形主鍵」。
-
系統變數 sql_log_off
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
有效值 OFF
(啟用記錄)ON
(停用記錄)此變數控制是否為目前工作階段停用一般查詢日誌的記錄(假設一般查詢日誌本身已啟用)。預設值為
OFF
(也就是說,啟用記錄)。若要為目前工作階段停用或啟用一般查詢記錄,請將工作階段sql_log_off
變數設定為ON
或OFF
。設定此系統變數的會期值是受限的操作。會期使用者必須具有足夠的權限才能設定受限的會期變數。請參閱第 7.1.9.1 節,「系統變數權限」。
-
命令列格式 --sql-mode=name
系統變數 sql_mode
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 設定 預設值 ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
有效值 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 模式」。
注意MySQL 安裝程式可能會在安裝過程中設定 SQL 模式。
如果 SQL 模式與預設值或您預期的值不同,請檢查伺服器在啟動時讀取的選項檔案中的設定。
-
如果啟用(預設值),則
Note
等級的診斷會遞增warning_count
,且伺服器會記錄它們。如果停用,Note
診斷不會遞增warning_count
,且伺服器不會記錄它們。mysqldump 包含停用此變數的輸出,以便重新載入轉儲檔案不會產生不會影響重新載入作業完整性的事件警告。 -
系統變數 sql_quote_show_create
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
如果啟用(預設值),伺服器會引用
SHOW CREATE TABLE
和SHOW CREATE DATABASE
陳述式的識別碼。如果停用,則停用引用。預設會啟用此選項,以便複寫適用於需要引用的識別碼。請參閱第 15.7.7.11 節,「SHOW CREATE TABLE 陳述式」和第 15.7.7.7 節,「SHOW CREATE DATABASE 陳述式」。 -
命令列格式 --sql-require-primary-key[={OFF|ON}]
系統變數 sql_require_primary_key
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 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
索引,刪除主鍵也會失敗。嘗試匯入沒有主鍵的表格會失敗並出現錯誤。
-
系統變數 sql_safe_updates
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 OFF
如果啟用此變數,則在
WHERE
子句或LIMIT
子句中未使用索引鍵的UPDATE
和DELETE
陳述式會產生錯誤。這樣可以捕捉到未正確使用索引鍵的UPDATE
和DELETE
陳述式,這些陳述式可能會變更或刪除大量的資料列。預設值為OFF
。對於 mysql 用戶端,可以使用
--safe-updates
選項啟用sql_safe_updates
。如需更多資訊,請參閱 使用安全更新模式(--safe-updates)。 -
系統變數 sql_select_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 18446744073709551615
最小值 0
最大值 18446744073709551615
從
SELECT
陳述式傳回的最大資料列數。如需更多資訊,請參閱 使用安全更新模式(--safe-updates)。新連線的預設值是伺服器允許每個資料表的最大資料列數。典型的預設值為 (232)−1 或 (264)−1。如果您已變更限制,則可以透過指派值
DEFAULT
來還原預設值。如果
SELECT
具有LIMIT
子句,則LIMIT
的優先順序高於sql_select_limit
的值。 -
系統變數 sql_warnings
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此變數控制在發生警告時,單列
INSERT
陳述式是否產生資訊字串。預設值為OFF
。將值設定為ON
以產生資訊字串。 -
PEM 格式的憑證授權單位 (CA) 憑證檔案的路徑名稱。此檔案包含信任的 SSL 憑證授權單位清單。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
命令列格式 --ssl-capath=dir_name
系統變數 ssl_capath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
包含 PEM 格式的信任的 SSL 憑證授權單位 (CA) 憑證檔案的目錄路徑名稱。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
PEM 格式的伺服器 SSL 公開金鑰憑證檔案的路徑名稱。
如果伺服器啟動時,
ssl_cert
設定為使用任何受限制的加密或加密類別的憑證,則伺服器會以停用加密連線支援的方式啟動。如需加密限制的相關資訊,請參閱 連線加密組態。可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
命令列格式 --ssl-cipher=name
系統變數 ssl_cipher
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
使用 TLSv1.2 的連線允許的加密密碼清單。如果清單中沒有支援任何密碼,則使用此 TLS 通訊協定的加密連線將無法運作。
此清單可以包含以下任何值
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES256-CCM
ECDHE-ECDSA-AES128-CCM
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-CCM
DHE-RSA-AES128-CCM
DHE-RSA-CHACHA20-POLY1305
當設定此變數時,嘗試在密碼列表中包含此處未顯示的任何值會引發錯誤(
ER_BLOCKED_CIPHER
)。為了獲得最佳可攜性,密碼清單應該是一個或多個密碼名稱的清單,並以冒號分隔。以下範例顯示兩個以冒號分隔的密碼名稱
[mysqld] ssl_cipher="DHE-RSA-AES128-GCM-SHA256:AES128-SHA"
OpenSSL 支援在 OpenSSL 文件中描述的指定密碼的語法,網址為 https://www.openssl.org/docs/manmaster/man1/ciphers.html。
如需 MySQL 支援哪些加密密碼的相關資訊,請參閱 第 8.3.2 節「加密連線 TLS 通訊協定和密碼」。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
包含 PEM 格式的憑證撤銷清單的檔案路徑名稱。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
命令列格式 --ssl-crlpath=dir_name
系統變數 ssl_crlpath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 預設值 NULL
包含 PEM 格式的憑證撤銷清單檔案的目錄路徑。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
命令列格式 --ssl-fips-mode={OFF|ON|STRICT}
已淘汰 是 系統變數 ssl_fips_mode
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 OFF
有效值 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 模式。
注意如果 OpenSSL FIPS 物件模組不可用,則
ssl_fips_mode
唯一允許的值是OFF
。在這種情況下,在啟動時將ssl_fips_mode
設定為ON
或STRICT
會導致伺服器產生錯誤訊息並結束。此選項已被取代並設為唯讀。預計在未來版本的 MySQL 中將會移除此選項。
-
PEM 格式的伺服器 SSL 私密金鑰檔案的路徑名稱。為了獲得更好的安全性,請使用 RSA 金鑰大小至少為 2048 位元的憑證。
如果金鑰檔案受密碼保護,伺服器會提示使用者輸入密碼。密碼必須以互動方式提供,無法儲存在檔案中。如果密碼不正確,程式會像無法讀取金鑰一樣繼續執行。
可以在執行
ALTER INSTANCE RELOAD TLS
之後,或在重新啟動時(如果變數值已持續存在),在執行階段修改此變數,以影響伺服器用於新連線的 TLS 環境定義。請參閱 加密連線的伺服器端執行階段組態和監控。 -
命令列格式 --ssl_session_cache_mode={ON|OFF}
系統變數 ssl_session_cache_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
有效值 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
的生效值可以使用Ssl_session_cache_mode
狀態變數觀察。 -
命令列格式 --ssl_session_cache_timeout
系統變數 ssl_session_cache_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 0
最大值 84600
單位 秒 設定一段時間,在此期間,當與伺服器建立新的加密連線時,如果
ssl_session_cache_mode
系統變數啟用且先前的連線資料可用時,允許重複使用先前的連線。如果連線逾時到期,連線將無法再被重複使用。預設值為 300 秒,最大值為 84600 (或一天秒數)。變更
ssl_session_cache_timeout
系統變數只有在執行ALTER INSTANCE RELOAD TLS
陳述式後,或是在變數值被保存後重新啟動才會生效。目前ssl_session_cache_timeout
的生效值可以使用Ssl_session_cache_timeout
狀態變數觀察。 -
系統變數 statement_id
範圍 工作階段 動態 否 SET_VAR
提示適用否 類型 整數 目前連線中執行的每個陳述式都會被分配一個序號。這可以與
session_track_system_variables
系統變數一起使用,以在效能綱要表格(例如events_statements_history
表格)中識別此陳述式。 -
命令列格式 --stored-program-cache=#
系統變數 stored_program_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 16
最大值 524288
為每個連線設定快取儲存例程數量的軟性上限。此變數的值是以 MySQL 伺服器為儲存程序和儲存函數維護的兩個快取中,每個快取持有的儲存例程數量來指定。
每當執行儲存例程時,會在剖析例程中的第一個或最上層陳述式之前檢查此快取大小;如果相同類型的例程數量(根據執行的是儲存程序或儲存函數)超過此變數指定的限制,則會清除相應的快取,並釋放先前為快取物件配置的記憶體。這允許安全地清除快取,即使儲存例程之間存在依賴關係。
儲存程序和儲存函數快取與 字典物件快取的儲存程式定義快取分割區並行存在。儲存程序和儲存函數快取是每個連線的,而儲存程式定義快取是共享的。儲存程序和儲存函數快取中物件的存在與儲存程式定義快取中物件的存在無關,反之亦然。如需更多資訊,請參閱 第 16.4 節「字典物件快取」。
stored_program_definition_cache
命令列格式 --stored-program-definition-cache=#
系統變數 stored_program_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
定義可以保留在字典物件快取中的已使用和未使用儲存程式定義物件的數量限制。
只有當使用中的儲存程式定義物件數量小於
stored_program_definition_cache
定義的容量時,才會將未使用的儲存程式定義物件保留在字典物件快取中。設定為 0 表示只有在使用中的儲存程式定義物件才會保留在字典物件快取中。
儲存程式定義快取分割區與使用
stored_program_cache
選項設定的儲存程序和儲存函數快取並行存在。stored_program_cache
選項為每個連線設定快取儲存程序或函數數量的軟性上限,並且每次連線執行儲存程序或函數時都會檢查該限制。另一方面,儲存程式定義快取分割區是一個共享快取,用於儲存其他用途的儲存程式定義物件。儲存程式定義快取分割區中物件的存在與儲存程序快取或儲存函數快取中物件的存在無關,反之亦然。如需相關資訊,請參閱 第 16.4 節「字典物件快取」。
-
命令列格式 --super-read-only[={OFF|ON}]
系統變數 super_read_only
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 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
的變更不會複寫到複本伺服器。可以在複本上設定該值,而與來源上的設定無關。 -
命令列格式 --syseventlog.facility=value
系統變數 syseventlog.facility
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 daemon
寫入
syslog
的錯誤日誌輸出的工具(哪種程式正在傳送訊息)。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱 第 7.4.2.8 節「記錄錯誤到系統日誌」。允許的值可能因作業系統而異;請參閱您的系統
syslog
文件。此變數在 Windows 上不存在。
-
命令列格式 --syseventlog.include-pid[={OFF|ON}]
系統變數 syseventlog.include_pid
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
是否在寫入
syslog
的錯誤日誌輸出的每一行中包含伺服器程序 ID。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱 第 7.4.2.8 節「記錄錯誤到系統日誌」。此變數在 Windows 上不存在。
-
命令列格式 --syseventlog.tag=tag
系統變數 syseventlog.tag
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 空字串
要新增至寫入
syslog
或 Windows 事件日誌的錯誤日誌輸出中伺服器識別碼的標籤。除非安裝了log_sink_syseventlog
錯誤日誌元件,否則此變數不可用。請參閱 第 7.4.2.8 節「記錄錯誤到系統日誌」。預設情況下,未設定任何標籤,因此伺服器識別碼在 Windows 上僅為
MySQL
,在其他平台上為mysqld
。如果指定了tag
的標籤值,則會將其附加到伺服器識別碼,並帶有前導連字號,從而在syslog
中產生mysqld-
的識別碼(或在 Windows 上產生tag
MySQL-
)。tag
在 Windows 上,若要使用不存在的標籤,伺服器必須從具有管理員權限的帳戶執行,以允許建立該標籤的登錄項目。如果標籤已存在,則不需要提升的權限。
-
系統變數 system_time_zone
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 伺服器系統時區。當伺服器開始執行時,它會從機器預設值繼承時區設定,可能會被用於執行伺服器或啟動腳本的帳戶環境修改。該值用於設定
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 Server 時區支援」。 -
命令列格式 --table-definition-cache=#
系統變數 table_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 400
最大值 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
命令列格式 --table-encryption-privilege-check[={OFF|ON}]
系統變數 table_encryption_privilege_check
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
控制在建立或變更具有與
default_table_encryption
設定不同的加密的綱要或一般表空間,或者建立或變更具有與預設綱要加密不同的加密設定的表格時發生的TABLE_ENCRYPTION_ADMIN
權限檢查。預設情況下,檢查處於停用狀態。在執行階段設定
table_encryption_privilege_check
需要SUPER
權限。table_encryption_privilege_check
支援SET PERSIST
和SET PERSIST_ONLY
語法。請參閱第 7.1.9.3 節,「持續性系統變數」。如需更多資訊,請參閱定義結構描述和一般表格空間的預設加密。
-
命令列格式 --table-open-cache=#
系統變數 table_open_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4000
最小值 1
最大值 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 如何開啟和關閉表格」。 -
命令列格式 --table-open-cache-instances=#
系統變數 table_open_cache_instances
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 16
最小值 1
最大值 64
開啟表格快取實例的數量。為了透過減少會話之間的爭用來提高可擴展性,開啟表格快取可以分割成幾個較小的快取實例,大小為
table_open_cache
/table_open_cache_instances
。會話只需要鎖定一個實例,就可以存取該實例來執行 DML 陳述式。這會在實例之間區隔快取存取,允許在許多會話存取表格時提高使用快取的操作效能。(DDL 陳述式仍然需要鎖定整個快取,但此類陳述式比 DML 陳述式少得多。)在經常使用 16 個或更多核心的系統上,建議使用 8 或 16 的值。但是,如果您的表格上有許多大型觸發器導致高記憶體負載,則
table_open_cache_instances
的預設設定可能會導致過多的記憶體使用。在這種情況下,將table_open_cache_instances
設定為 1 以限制記憶體使用可能會有所幫助。 -
命令列格式 --tablespace-definition-cache=#
系統變數 tablespace_definition_cache
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 256
最小值 256
最大值 524288
定義可以保留在字典物件快取中的已使用和未使用表空間定義物件的數量限制。
只有在使用的數量少於
tablespace_definition_cache
定義的容量時,才會將未使用的表空間定義物件保留在字典物件快取中。設定為
0
表示表空間定義物件僅在其使用時才保留在字典物件快取中。如需更多資訊,請參閱第 16.4 節,「字典物件快取」。
-
命令列格式 --temptable-max-mmap=#
系統變數 temptable_max_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 2^64-1
單位 位元組 定義 TempTable 儲存引擎在開始將資料儲存到磁碟上的
InnoDB
內部暫存表格之前,允許從記憶體對應的暫存檔案配置的最大記憶體量(以位元組為單位)。設定為 0(預設值)會停用從記憶體對應的暫存檔案配置記憶體。如需更多資訊,請參閱第 10.4.4 節,「MySQL 中的內部暫存表格使用」。在 MySQL 8.4 之前,此選項設定為 1 GiB 而不是 0。
-
命令列格式 --temptable-max-ram=#
系統變數 temptable_max_ram
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 總記憶體的 3%:最小值 1 GB,最大值 4 GB
最小值 2097152
最大值 2^64-1
單位 位元組 定義
TempTable
儲存引擎在開始將資料儲存在磁碟上之前可以佔用的最大記憶體量。預設值為伺服器上可用總記憶體的 3%,最小和最大預設範圍為 1-4 GiB。如需更多資訊,請參閱第 10.4.4 節,「MySQL 中的內部暫存表格使用」。在 MySQL 8.4 之前,預設值始終為 1 GiB。
-
命令列格式 --temptable-use-mmap[={OFF|ON}]
已淘汰 是 系統變數 temptable_use_mmap
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
定義當 TempTable 儲存引擎佔用的記憶體量超過
temptable_max_ram
變數所定義的限制時,是否將內部記憶體臨時表空間分配為記憶體對應的臨時檔案。當temptable_use_mmap
停用(預設)時,TempTable 儲存引擎會改為使用InnoDB
磁碟上的內部臨時表。如需更多資訊,請參閱第 10.4.4 節「MySQL 中的內部臨時表使用」。 -
命令列格式 --thread-cache-size=#
系統變數 thread_cache_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 -1
(表示自動調整大小;請勿指派此常值)最小值 0
最大值 16384
伺服器應快取多少個執行緒以供重複使用。當客戶端斷線時,如果快取中的執行緒少於
thread_cache_size
個,則會將該客戶端的執行緒放入快取中。若可能,會藉由重複使用快取中的執行緒來滿足執行緒請求,只有當快取為空時才會建立新的執行緒。如果有很多新的連線,可以增加此變數以提高效能。通常,如果您有良好的執行緒實作,這不會帶來顯著的效能提升。但是,如果您的伺服器每秒看到數百個連線,您通常應將thread_cache_size
設定得足夠高,以便大多數新連線使用快取的執行緒。透過檢查Connections
和Threads_created
狀態變數之間的差異,您可以看到執行緒快取的效率如何。有關詳細資訊,請參閱第 7.1.10 節「伺服器狀態變數」。預設值基於以下公式,上限為 100
8 + (max_connections / 100)
-
命令列格式 --thread-handling=name
系統變數 thread_handling
範圍 全域 動態 否 SET_VAR
提示適用否 類型 列舉 預設值 one-thread-per-connection
有效值 no-threads
one-thread-per-connection
loaded-dynamically
伺服器用於連線執行緒的執行緒處理模型。允許的值為
no-threads
(伺服器使用單一執行緒來處理一個連線)、one-thread-per-connection
(伺服器使用一個執行緒來處理每個客戶端連線)和loaded-dynamically
(由執行緒池外掛程式在初始化時設定)。no-threads
對於在 Linux 下偵錯很有用;請參閱第 7.9 節「偵錯 MySQL」。 -
命令列格式 --thread-pool-algorithm=#
系統變數 thread_pool_algorithm
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1
此變數控制執行緒池外掛程式使用的演算法
0
:使用保守的低並發演算法。1
:使用積極的高並發演算法,在最佳執行緒計數下效能較佳,但如果連線數達到極高值,效能可能會降低。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
thread_pool_dedicated_listeners
命令列格式 --thread-pool-dedicated-listeners
系統變數 thread_pool_dedicated_listeners
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在每個執行緒群組中專門使用一個監聽器執行緒,來監聽指派給該群組之連線的傳入語句。
OFF
:(預設) 停用專用監聽器執行緒。ON
:在每個執行緒群組中專門使用一個監聽器執行緒,來監聽指派給該群組之連線的傳入語句。專用監聽器執行緒不會執行查詢。
僅當
thread_pool_max_transactions_limit
定義了交易限制時,啟用thread_pool_dedicated_listeners
才有用。否則,不應啟用thread_pool_dedicated_listeners
。HeatWave 服務使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 9.0 中不支援。
thread_pool_high_priority_connection
命令列格式 --thread-pool-high-priority-connection=#
系統變數 thread_pool_high_priority_connection
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1
此變數會影響執行前的新語句排隊。如果值為 0(false,預設),語句排隊會使用低優先權和高優先權佇列。如果值為 1(true),則排隊的語句始終會進入高優先權佇列。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
-
命令列格式 --thread-pool-longrun-trx-limit=#
系統變數 thread_pool_longrun_trx_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 2000
最小值 10
最大值 60*60*24
單位 毫秒 當
thread_pool_max_transactions_limit
使用中時,每個執行緒群組中最多可以有一定數量的活動交易。如果整個可用數量都已被長時間執行的交易使用,則指派給群組的任何其他交易都會遭到封鎖,直到其中一個長時間執行的交易完成,使用者可能會認為這是無法解釋的當機。為了緩解此問題,如果所有使用交易上限的執行緒的執行時間都超過
thread_pool_longrun_trx_limit
指定的時間間隔(以毫秒為單位),則會暫停給定執行緒群組的限制。當長時間執行交易的數量減少時,可以(並且會)再次啟用thread_pool_max_transactions_limit
。為了使此情況發生,進行中的交易數量必須小於thread_pool_max_transactions_limit / 2
,時間間隔定義如下MIN( MAX(thread_pool_longrun_trx_limit * 15, 5000), 30000)
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
thread_pool_max_active_query_threads
命令列格式 --thread-pool-max-active-query-threads
系統變數 thread_pool_max_active_query_threads
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 512
每個群組允許的最大活動(執行中)查詢執行緒數。如果值為 0,則執行緒池外掛程式最多會使用可用的執行緒數。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
thread_pool_max_transactions_limit
命令列格式 --thread-pool-max-transactions-limit
系統變數 thread_pool_max_transactions_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 1000000
執行緒池外掛程式允許的最大交易數。定義交易限制會將執行緒綁定到交易,直到該交易提交為止,這有助於在高並發期間穩定輸送量。
預設值 0 表示沒有交易限制。該變數是動態的,但無法在執行階段從 0 變更為更高的值,反之亦然。啟動時的非零值允許在執行階段進行動態配置。需要
CONNECTION_ADMIN
權限才能在執行階段配置thread_pool_max_transactions_limit
。當您定義交易限制時,啟用
thread_pool_dedicated_listeners
會在每個執行緒群組中建立一個專用監聽器執行緒。額外的專用監聽器執行緒會消耗更多資源並影響執行緒池效能。因此,應謹慎使用thread_pool_dedicated_listeners
。當達到
thread_pool_max_transactions_limit
定義的限制時,新連線或現有連線上的交易可能會出現停滯,直到完成一或多個現有交易為止。在許多情況下,應該可以透過設定thread_pool_longrun_trx_limit
來緩解此問題,以便當進行中的交易數量在給定時間長度內符合時,可以放寬交易上限。如果現有連線在嘗試此操作後仍然被封鎖或長時間執行,則可能需要具有權限的連線才能存取伺服器以增加限制、移除限制或終止執行中的交易。請參閱權限連線。HeatWave 服務使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 9.0 中不支援。
thread_pool_max_unused_threads
命令列格式 --thread-pool-max-unused-threads=#
系統變數 thread_pool_max_unused_threads
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 4096
執行緒池中允許的最大未使用執行緒數。此變數可以限制睡眠執行緒使用的記憶體量。
值 0(預設值)表示對睡眠執行緒的數量沒有限制。值
N
,其中N
大於 0,表示 1 個消費者執行緒和N
-1 個保留執行緒。在這種情況下,如果執行緒已準備好進入睡眠狀態,但睡眠執行緒的數量已達到上限,則該執行緒會退出,而不是進入睡眠狀態。睡眠執行緒要么作為消費者執行緒睡眠,要么作為保留執行緒睡眠。執行緒池允許在睡眠時有一個執行緒作為消費者執行緒。如果執行緒進入睡眠狀態且沒有現有的消費者執行緒,則會作為消費者執行緒睡眠。當必須喚醒執行緒時,如果存在,則會選取消費者執行緒。只有在沒有消費者執行緒可喚醒時,才會選取保留執行緒。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
-
命令列格式 --thread-pool-prio-kickup-timer=#
系統變數 thread_pool_prio_kickup_timer
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000
最小值 0
最大值 4294967294
單位 毫秒 此變數會影響在低優先權佇列中等待執行的語句。該值是在等待語句移至高優先權佇列之前的毫秒數。預設值為 1000(1 秒)。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
thread_pool_query_threads_per_group
命令列格式 --thread-pool-query-threads-per-group
系統變數 thread_pool_query_threads_per_group
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 1
最大值 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
的值,則目前正在執行使用者查詢的執行緒會被允許完成,然後移至保留池或終止。如果您在執行階段增加該值,且執行緒群組需要更多執行緒,則會盡可能從保留池中取得這些執行緒,否則會建立這些執行緒。HeatWave 服務使用此變數,此變數僅適用於 MySQL Enterprise Edition,且 MySQL 9.0 中不支援。
-
命令列格式 --thread-pool-size=#
系統變數 thread_pool_size
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 16
最小值 1
最大值 512
執行緒池中的執行緒群組數。這是控制執行緒池效能的最重要參數。它會影響可以同時執行多少個語句。如果指定的值超出允許值的範圍,則執行緒池外掛程式不會載入,且伺服器會將訊息寫入錯誤記錄檔。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
-
命令列格式 --thread-pool-stall-limit=#
系統變數 thread_pool_stall_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 6
最小值 4
最大值 600
單位 毫秒 * 10 此變數會影響陳述式的執行。此值代表一個陳述式在開始執行後,被定義為停滯前必須完成的時間長度。當陳述式被定義為停滯時,執行緒池會允許該執行緒群組開始執行另一個陳述式。此值的單位為 10 毫秒,因此預設值 6 表示 60 毫秒。較短的等待值允許執行緒更快地啟動。較短的值也更適合避免死鎖情況。較長的等待值對於包含長時間執行陳述式的工作負載很有用,以避免在目前陳述式執行時啟動太多新的陳述式。
僅當啟用執行緒池外掛程式時,此變數才可用。請參閱第 7.6.3 節「MySQL Enterprise 執行緒池」。
-
命令列格式 --thread-pool-transaction-delay
系統變數 thread_pool_transaction_delay
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 300000
執行新交易前的延遲時間,單位為毫秒。最大值為 300000 (5 分鐘)。
在並行交易因資源爭用而影響其他操作效能的情況下,可以使用交易延遲。例如,如果並行交易影響索引建立或線上緩衝池調整大小的操作,您可以設定交易延遲,以減少這些操作執行時的資源爭用。
工作執行緒在執行新交易之前會休眠
thread_pool_transaction_delay
指定的毫秒數。thread_pool_transaction_delay
設定不會影響從具備權限的連線 (分配給Admin
執行緒群組的連線) 發出的查詢。這些查詢不受設定的交易延遲影響。 -
命令列格式 --thread-stack=#
系統變數 thread_stack
範圍 全域 動態 否 SET_VAR
提示適用否 類型 整數 預設值 1048576
最小值 131072
最大值 (64 位元平台) 18446744073709550592
最大值 (32 位元平台) 4294966272
單位 位元組 區塊大小 1024
每個執行緒的堆疊大小。預設值對於正常操作已足夠大。如果執行緒堆疊大小太小,會限制伺服器可以處理的 SQL 陳述式的複雜度、預存程序的遞迴深度和其他耗用記憶體的動作。
-
目前時區。此變數用於初始化每個連線用戶端的時區。預設情況下,此變數的初始值為
'SYSTEM'
(表示「使用system_time_zone
的值」)。可以使用--default-time-zone
選項在伺服器啟動時明確指定此值。請參閱 第 7.1.15 節,「MySQL 伺服器時區支援」。注意如果設定為
SYSTEM
,則每個需要進行時區計算的 MySQL 函式呼叫都會呼叫系統函式庫以判斷目前的系統時區。此呼叫可能會受到全域互斥鎖保護,導致爭用。 -
設定此用戶端的時間。如果您使用二進位記錄檔來還原資料列,這會用於取得原始時間戳記。
timestamp_value
應該是 Unix epoch 時間戳記 (類似於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
命令列格式 --tls-certificates-enforced-validation[={OFF|ON}]
系統變數 tls_certificates_enforced_validation
範圍 全域 動態 否 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在啟動期間,如果命令列上未提供每個必要的 SSL 憑證檔案的位置,伺服器會確保每個 SSL 憑證檔案的位置都存在於預設資料目錄中。但是,伺服器不會驗證憑證檔案,因此能夠使用無效的憑證啟動。
tls_certificates_enforced_validation
系統變數控制是否在啟動時強制執行憑證驗證。當啟用驗證強制執行時,發現無效的憑證會中止啟動執行。預設情況下,憑證驗證強制執行會停用 (OFF
)。可以透過在命令列上指定
--tls-certificates-enforced-validation
選項並搭配或不搭配ON
值來啟用驗證強制執行。啟用驗證強制執行後,也會在透過ALTER INSTANCE RELOAD TLS
陳述式重新載入憑證時驗證憑證。此系統變數無法跨重新啟動持續存在。如需更多資訊,請參閱 設定憑證驗證強制執行。-
命令列格式 --tls-ciphersuites=ciphersuite_list
系統變數 tls_ciphersuites
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
伺服器允許用於使用 TLSv1.3 加密連線的密碼套件。此值是零個或多個以冒號分隔的密碼套件名稱列表,這些名稱來自此處列出的名稱
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
當設定此變數時,嘗試在密碼列表中包含此處未顯示的任何值會引發錯誤(
ER_BLOCKED_CIPHER
)。可以為此變數命名的密碼套件取決於用於編譯 MySQL 的 SSL 程式庫。如果未設定此變數,則其預設值為
NULL
,表示伺服器允許預設的密碼套件集。如果將變數設定為空字串,則不會啟用任何密碼套件,且無法建立加密連線。如需更多資訊,請參閱 第 8.3.2 節,「加密連線 TLS 通訊協定和密碼」。 -
命令列格式 --tls-version=protocol_list
系統變數 tls_version
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 TLSv1.2,TLSv1.3
伺服器允許用於加密連線的通訊協定。此值是一個或多個以逗號分隔的通訊協定名稱列表,這些名稱不區分大小寫。可以為此變數命名的通訊協定取決於用於編譯 MySQL 的 SSL 程式庫。應選擇允許的通訊協定,以避免在列表中留下「漏洞」。如需詳細資訊,請參閱 第 8.3.2 節,「加密連線 TLS 通訊協定和密碼」。
此變數可以在執行時修改,以影響伺服器用於新連線的 TLS 環境。請參閱 加密連線的伺服器端執行階段組態和監控。
重要MySQL 9.0 不支援 TLSv1 和 TLSv1.1 連線通訊協定。如需更多資訊,請參閱 移除對 TLSv1 和 TLSv1.1 通訊協定的支援。
如果 MySQL 伺服器是使用 OpenSSL 1.1.1 或更高版本編譯的,則 MySQL 9.0 中支援 TLSv1.3 通訊協定。伺服器會在啟動時檢查 OpenSSL 的版本,如果低於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為
TLSv1.2
。
將此變數設定為空字串會停用加密連線。
-
命令列格式 --tmp-table-size=#
系統變數 tmp_table_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 整數 預設值 16777216
最小值 1024
最大值 18446744073709551615
單位 位元組 定義由
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
(以及在使用MEMORY
儲存引擎來建立內部記憶體暫時表格時,如有必要,請增加max_heap_table_size
) 的值。您可以比較建立的內部磁碟暫時表格數量與建立的內部暫時表格總數,方法是比較
Created_tmp_disk_tables
和Created_tmp_tables
的值。 -
用於建立暫存檔案的目錄路徑。如果您的預設
/tmp
目錄位於一個太小而無法容納暫時表格的分割區上,這可能會很有用。此變數可以設定為以循環方式使用的多個路徑列表。在 Unix 上,路徑應以冒號字元 (:
) 分隔,在 Windows 上則以分號字元 (;
) 分隔。tmpdir
可以是一個非永久性的位置,例如基於記憶體的檔案系統上的目錄,或是伺服器主機重新啟動時會被清除的目錄。如果 MySQL 伺服器作為副本 (replica) 運行,且您為tmpdir
使用非永久性位置,請考慮使用replica_load_tmpdir
變數為副本設定不同的暫存目錄。對於副本來說,用於複製LOAD DATA
陳述式的暫存檔會儲存在此目錄中,因此若使用永久性位置,這些檔案可以在機器重新啟動後繼續存在,雖然即使暫存檔被移除,複製作業現在也能在重新啟動後繼續進行。有關暫存檔儲存位置的更多資訊,請參閱 第 B.3.3.5 節,「MySQL 儲存暫存檔的位置」。
-
命令列格式 --transaction-alloc-block-size=#
系統變數 transaction_alloc_block_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 8192
最小值 1024
最大值 131072
單位 位元組 區塊大小 1024
當每個交易記憶體池需要更多記憶體時,要增加的位元組數量。請參閱
transaction_prealloc_size
的說明。 -
命令列格式 --transaction-isolation=name
系統變數 transaction_isolation
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 REPEATABLE-READ
有效值 READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
交易隔離等級。預設值為
REPEATABLE-READ
。交易隔離等級有三個範圍:全域、會期和下一個交易。這種三個範圍的實作方式導致了一些非標準的隔離等級指派語意,將在稍後說明。
若要在啟動時設定全域交易隔離等級,請使用
--transaction-isolation
伺服器選項。在執行時,可以使用
SET
陳述式直接設定隔離等級,將值指派給transaction_isolation
系統變數,或使用SET TRANSACTION
陳述式間接設定。如果您將transaction_isolation
直接設定為包含空格的隔離等級名稱,則該名稱應以引號括起來,並以破折號取代空格。例如,使用此SET
陳述式來設定全域值SET GLOBAL transaction_isolation = 'READ-COMMITTED';
設定全域
transaction_isolation
值會為所有後續會期設定隔離等級。現有會期不受影響。若要設定會期或下一個等級的
transaction_isolation
值,請使用SET
陳述式。對於大多數會期系統變數,這些陳述式是設定值的等效方法SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如先前所述,交易隔離等級除了全域和會期範圍外,還有下一個交易的範圍。為了能設定下一個交易的範圍,用於指派會期系統變數值的
SET
語法對於transaction_isolation
有非標準的語意若要設定會期隔離等級,請使用以下任何一種語法
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
及其與transaction_isolation
系統變數之間關係的更多資訊,請參閱 第 15.3.7 節,「SET TRANSACTION 陳述式」。 -
命令列格式 --transaction-prealloc-size=#
已淘汰 是 系統變數 transaction_prealloc_size
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 4096
最小值 1024
最大值 131072
單位 位元組 區塊大小 1024
有一個每個交易的記憶體池,各種交易相關的分配會從中取得記憶體。池的初始大小(以位元組為單位)是
transaction_prealloc_size
。對於每一個由於可用記憶體不足而無法從池中滿足的分配,池會增加transaction_alloc_block_size
個位元組。當交易結束時,池會被截斷為transaction_prealloc_size
個位元組。透過使transaction_prealloc_size
足夠大,足以容納單一交易中的所有陳述式,您可以避免許多malloc()
呼叫。transaction_prealloc_size
已被棄用,且設定此變數不再有任何效果。預期transaction_prealloc_size
將在 MySQL 的未來版本中移除。 -
命令列格式 --transaction-read-only[={OFF|ON}]
系統變數 transaction_read_only
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
交易存取模式。值可以是
OFF
(讀取/寫入;預設值)或ON
(唯讀)。交易存取模式有三個範圍:全域、會期和下一個交易。這種三個範圍的實作方式導致了一些非標準的存取模式指派語意,將在稍後說明。
若要在啟動時設定全域交易存取模式,請使用
--transaction-read-only
伺服器選項。在執行時,可以使用
SET
陳述式直接設定存取模式,將值指派給transaction_read_only
系統變數,或使用SET TRANSACTION
陳述式間接設定。例如,使用此SET
陳述式來設定全域值SET GLOBAL transaction_read_only = ON;
設定全域
transaction_read_only
值會為所有後續會期設定存取模式。現有會期不受影響。若要設定會期或下一個等級的
transaction_read_only
值,請使用SET
陳述式。對於大多數會期系統變數,這些陳述式是設定值的等效方法SET @@SESSION.var_name = value; SET SESSION var_name = value; SET var_name = value; SET @@var_name = value;
如先前所述,交易存取模式除了全域和會期範圍外,還有下一個交易的範圍。為了能設定下一個交易的範圍,用於指派會期系統變數值的
SET
語法對於transaction_read_only
有非標準的語意若要設定會期存取模式,請使用以下任何一種語法
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 陳述式」。 -
系統變數 unique_checks
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
如果設定為 1(預設值),則會對
InnoDB
資料表中的次要索引執行唯一性檢查。如果設定為 0,則允許儲存引擎假設輸入資料中不存在重複的索引鍵。如果您確定您的資料不包含唯一性違規,您可以將此設定為 0,以加快將大型資料表匯入InnoDB
的速度。將此變數設定為 0 並不 要求 儲存引擎忽略重複的索引鍵。引擎仍然可以檢查它們,並在偵測到它們時發出重複索引鍵錯誤。
-
命令列格式 --updatable-views-with-limit[={OFF|ON}]
系統變數 updatable_views_with_limit
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 1
此變數控制當視圖未包含基礎資料表中定義的所有主鍵欄位時,如果更新語句包含
LIMIT
子句,是否允許對視圖進行更新。(此類更新通常由 GUI 工具產生。) 更新指的是UPDATE
或DELETE
語句。此處的主鍵指的是PRIMARY KEY
,或是不允許任何欄位包含NULL
的UNIQUE
索引。此變數可以有兩個值
1
或YES
:僅發出警告(而非錯誤訊息)。這是預設值。0
或NO
:禁止更新。
-
系統變數 use_secondary_engine
範圍 工作階段 動態 是 SET_VAR
提示適用是 類型 列舉 預設值 ON
有效值 OFF
ON
強制
供未來使用。
是否使用輔助引擎執行查詢。
適用於 HeatWave。請參閱HeatWave 使用者指南。
validate_password.
xxx
validate_password
元件實作了一組系統變數,其名稱格式為validate_password.
。這些變數會影響該元件的密碼測試;請參閱 第 8.4.3.2 節,「密碼驗證選項和變數」。xxx
伺服器的版本號碼。此值也可能包含一個後綴,表示伺服器的建置或組態資訊。
-debug
表示伺服器是在啟用除錯支援的情況下建置的。-
系統變數 version_comment
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 CMake 組態程式有一個
COMPILATION_COMMENT_SERVER
選項,允許在建置 MySQL 時指定註解。此變數包含該註解的值。 -
系統變數 version_compile_machine
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 伺服器二進位檔的類型。
-
系統變數 version_compile_os
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 建置 MySQL 的作業系統類型。
-
系統變數 version_compile_zlib
範圍 全域 動態 否 SET_VAR
提示適用否 類型 字串 編譯到程式中的
zlib
函式庫版本。 -
命令列格式 --wait-timeout=#
系統變數 wait_timeout
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 整數 預設值 28800
最小值 1
最大值 (Windows) 2147483
最大值 (其他) 31536000
單位 秒 伺服器在關閉非互動式連線前,等待活動的最大秒數。
在執行緒啟動時,會根據用戶端類型(由
mysql_real_connect()
的CLIENT_INTERACTIVE
連線選項定義),從全域wait_timeout
值或全域interactive_timeout
值初始化工作階段wait_timeout
值。另請參閱interactive_timeout
。 上次產生訊息的陳述式所導致的錯誤、警告和注意事項的數量。此變數為唯讀。請參閱 第 15.7.7.41 節,「SHOW WARNINGS 陳述式」。
-
命令列格式 --windowing-use-high-precision[={OFF|ON}]
系統變數 windowing_use_high_precision
範圍 全域、工作階段 動態 是 SET_VAR
提示適用是 類型 布林值 預設值 ON
是否在不損失精確度的情況下計算視窗操作。請參閱 第 10.2.1.21 節,「視窗函式最佳化」。
-
命令列格式 --xa-detach-on-prepare[={OFF|ON}]
系統變數 xa_detach_on_prepare
範圍 全域、工作階段 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
當設定為
ON
(啟用) 時,所有 XA 交易都會在XA PREPARE
的一部分中從連線(工作階段)分離(斷開連線)。這表示 XA 交易可以由另一個連線提交或回滾,即使原始連線尚未終止,且此連線可以啟動新的交易。臨時表格無法在分離的 XA 交易中使用。
當此值為
OFF
(停用) 時,XA 交易會嚴格地與相同的連線相關聯,直到工作階段斷開連線為止。建議您允許啟用它(預設行為)以進行複寫。如需更多資訊,請參閱 第 15.3.8.2 節,「XA 交易狀態」。