MySQL?系統(tǒng)變量(查看,修改)
MySQL的系統(tǒng)變量是由MySQL服務(wù)器管理的,用于控制服務(wù)器的各種行為和特性。這些變量由系統(tǒng)提供,不是用戶定義的,并且屬于服務(wù)器層面的語法。它們包括全局變量和會話變量。
全局變量:這些變量影響整個(gè)MySQL服務(wù)器,它們的更改需要具有相應(yīng)的權(quán)限,并且通常需要重啟服務(wù)器才能生效。
會話變量:這些變量僅對當(dāng)前連接到服務(wù)器的客戶端有效,每個(gè)連接都有自己的會話變量設(shè)置。
示例:
# 查看所有系統(tǒng)變量 SHOW GLOBAL | SESSION VARIABLES; # 查看滿足條件的部分系統(tǒng)變量 SHOW GLOBAL | SESSION VARIABLES LIKE '%char%'; # 查看指定的某個(gè)系統(tǒng)變量的值 SELECT @@global | session.系統(tǒng)變量名; # 為某個(gè)系統(tǒng)變量賦值 SET GLOBAL | 【SESSION】系統(tǒng)變量名 = 值; # 使用用戶變量 SET @myvar = 1; SELECT @myvar;
這里, @@global 或 @@session 是訪問系統(tǒng)變量的特殊形式,用于區(qū)分全局變量和會話變量。
MySQL中的系統(tǒng)變量權(quán)限
MySQL的系統(tǒng)變量用于控制服務(wù)器的操作。它們可以是全局的(影響整個(gè)MySQL服務(wù)器實(shí)例),也可以是會話的(僅影響當(dāng)前客戶端會話),或者兩者兼有。
你可以使用SET
語句來動態(tài)地改變這些變量的值。例如:
- 設(shè)置全局系統(tǒng)變量的運(yùn)行時(shí)值:
使用set global語句,該語句需要system_VARIABLES_ADMIN權(quán)限(或不推薦使用的SUPER權(quán)限)。例如:
SET GLOBAL max_connections = 1000;
- 設(shè)置會話變量(僅影響當(dāng)前會話):
SET SESSION sort_buffer_size = 256K;
- 將全局系統(tǒng)變量的值持久化到
mysqld-auto.cnf
文件(并設(shè)置運(yùn)行時(shí)值):
使用set persist語句,該語句需要system_VARIABLES_ADMIN或SUPER權(quán)限。
- 僅將全局系統(tǒng)變量的值持久化到
mysqld-auto.cnf
文件(不設(shè)置運(yùn)行時(shí)值):
使用SET persist_ONLY語句,該語句需要system_VARIABLES_ADMIN和persist_RO_VARIABLES_ADMIN權(quán)限。SET PERSIST_ONLY既可用于動態(tài)系統(tǒng)變量,也可用于只讀系統(tǒng)變量,但對于不能使用SET PERSIST的持久只讀變量特別有用。
- 持久化限制的系統(tǒng)變量
一些全局系統(tǒng)變量是持久受限的。要持久化這些變量,請使用SET persist_ONLY語句,該語句需要前面描述的權(quán)限。此外,必須使用加密連接連接到服務(wù)器,并提供具有由persist_only_admin_x509_Subject系統(tǒng)變量指定的Subject值的SSL證書。
例如:
SET PERSIST max_connections = 1000;
或者:
SET GLOBAL PERSIST max_connections = 1000;
要從mysqld-auto.cnf文件中刪除持久化的全局系統(tǒng)變量,請使用RESET PERSIST語句。這些特權(quán)適用于:
- 對于動態(tài)系統(tǒng)變量,RESET PERSIST需要system_variables_ADMIN或SUPER權(quán)限。
- 對于只讀系統(tǒng)變量,RESET PERSIST需要system_variables_ADMIN和PERSIST_RO_variables_ADMIN權(quán)限。
- 對于持久受限變量,RESET persist不需要使用特定SSL證書加密連接到服務(wù)器。
例如:
RESET PERSIST max_connections;
如果全局系統(tǒng)變量對前面的特權(quán)要求有任何異常,則變量描述會指示這些異常。示例包括default_table_encryption和commandory_roles,它們需要額外的權(quán)限。這些附加權(quán)限適用于設(shè)置全局運(yùn)行時(shí)值的操作,但不適用于保留該值的操作。
要設(shè)置會話系統(tǒng)變量運(yùn)行時(shí)值,請使用set session語句。與設(shè)置全局運(yùn)行時(shí)值相比,設(shè)置會話運(yùn)行時(shí)值通常不需要特殊權(quán)限,任何用戶都可以進(jìn)行設(shè)置以影響當(dāng)前會話。對于某些系統(tǒng)變量,設(shè)置會話值可能會在當(dāng)前會話之外產(chǎn)生影響,因此這是一項(xiàng)受限制的操作,只能由具有特殊權(quán)限的用戶執(zhí)行:
- 從MySQL 8.0.14開始,所需的權(quán)限為SESSION_VARIABLES_ADMIN。
任何具有SYSTEM_VARIABLES_ADMIN或SUPER的用戶實(shí)際上隱含地具有SESSION_VARIABLES _ADMIN,并且無需明確授予SESSION_VARIABLES_AADMIN。
- 在MySQL 8.0.14之前,所需的權(quán)限是SYSTEM_VARIABLES_ADMIN或SUPER。
如果會話系統(tǒng)變量受到限制,則變量描述會指示該限制。示例包括binlog_format和sql_log_bin。設(shè)置這些變量的會話值會影響當(dāng)前會話的二進(jìn)制日志記錄,但也可能對服務(wù)器復(fù)制和備份的完整性產(chǎn)生更廣泛的影響。
SESSION_VARIABLES_ADMIN使管理員能夠最大限度地減少先前可能已被授予SYSTEM_VARIABLES _ADMIN或SUPER的用戶的權(quán)限占用,以使他們能夠修改受限制的會話系統(tǒng)變量。假設(shè)管理員創(chuàng)建了以下角色以授予設(shè)置受限會話系統(tǒng)變量的能力:
CREATE ROLE set_session_sysvars; GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO set_session_sysvars;
任何被授予set_session_sysvars角色的用戶(以及該角色處于活動狀態(tài)的用戶)都可以設(shè)置受限制的會話系統(tǒng)變量。然而,該用戶也能夠設(shè)置全局系統(tǒng)變量,這可能是不希望的。
通過將角色修改為具有SESSION_VARIABLES_ADMIN而不是SYSTEM_VARIABLES _ADMIN,可以將角色權(quán)限減少為設(shè)置受限會話系統(tǒng)變量的能力,而不設(shè)置其他內(nèi)容。要修改角色,請使用以下語句:
GRANT SESSION_VARIABLES_ADMIN ON *.* TO set_session_sysvars; REVOKE SYSTEM_VARIABLES_ADMIN ON *.* FROM set_session_sysvars;
修改角色會立即生效:任何被授予set_session_sysvars角色的帳戶都不再具有SYSTEM_VARIABLES_ADMIN,并且在沒有明確授予該功能的情況下無法設(shè)置全局系統(tǒng)變量。類似的GRANT/REVOKE序列可以應(yīng)用于直接授予SYSTEM_VARIABLES_ADMIN而不是通過角色授予的任何帳戶。
到此這篇關(guān)于MySQL 系統(tǒng)變量(查看,修改)的文章就介紹到這了,更多相關(guān)MySQL 系統(tǒng)變量 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何查詢數(shù)據(jù)庫中所有表名及注釋等信息
這篇文章主要介紹了MySQL如何查詢數(shù)據(jù)庫中所有表名及注釋等信息問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10MySQL用戶授權(quán)管理及白名單的實(shí)現(xiàn)
MySQL作為一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在權(quán)限管理和用戶認(rèn)證方面提供了豐富的功能和方案,本文主要介紹了MySQL用戶授權(quán)管理及白名單的實(shí)現(xiàn),感興趣的可以了解一下2023-09-09mysql如何將表結(jié)構(gòu)導(dǎo)出到excel
這篇文章主要介紹了mysql如何將表結(jié)構(gòu)導(dǎo)出到excel,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-09-09MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細(xì)介紹
本文主要介紹了MySQL的索引類型,根據(jù)索引的存儲方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點(diǎn)是葉子節(jié)點(diǎn)包含了完整的記錄行,而非聚簇索引的葉子節(jié)點(diǎn)只有所以字段和主鍵ID,感興趣的同學(xué)可以閱讀本文2023-04-04