MySQL?系統(tǒng)變量(查看,修改)
MySQL的系統(tǒng)變量是由MySQL服務(wù)器管理的,用于控制服務(wù)器的各種行為和特性。這些變量由系統(tǒng)提供,不是用戶定義的,并且屬于服務(wù)器層面的語法。它們包括全局變量和會(huì)話變量。
全局變量:這些變量影響整個(gè)MySQL服務(wù)器,它們的更改需要具有相應(yīng)的權(quán)限,并且通常需要重啟服務(wù)器才能生效。
會(huì)話變量:這些變量?jī)H對(duì)當(dāng)前連接到服務(wù)器的客戶端有效,每個(gè)連接都有自己的會(huì)話變量設(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ū)分全局變量和會(huì)話變量。
MySQL中的系統(tǒng)變量權(quán)限
MySQL的系統(tǒng)變量用于控制服務(wù)器的操作。它們可以是全局的(影響整個(gè)MySQL服務(wù)器實(shí)例),也可以是會(huì)話的(僅影響當(dāng)前客戶端會(huì)話),或者兩者兼有。
你可以使用SET語句來動(dòng)態(tài)地改變這些變量的值。例如:
- 設(shè)置全局系統(tǒng)變量的運(yùn)行時(shí)值:
使用set global語句,該語句需要system_VARIABLES_ADMIN權(quán)限(或不推薦使用的SUPER權(quán)限)。例如:
SET GLOBAL max_connections = 1000;
- 設(shè)置會(huì)話變量(僅影響當(dāng)前會(huì)話):
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既可用于動(dòng)態(tài)系統(tǒng)變量,也可用于只讀系統(tǒng)變量,但對(duì)于不能使用SET PERSIST的持久只讀變量特別有用。
- 持久化限制的系統(tǒng)變量
一些全局系統(tǒng)變量是持久受限的。要持久化這些變量,請(qǐ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)變量,請(qǐng)使用RESET PERSIST語句。這些特權(quán)適用于:
- 對(duì)于動(dòng)態(tài)系統(tǒng)變量,RESET PERSIST需要system_variables_ADMIN或SUPER權(quán)限。
- 對(duì)于只讀系統(tǒng)變量,RESET PERSIST需要system_variables_ADMIN和PERSIST_RO_variables_ADMIN權(quán)限。
- 對(duì)于持久受限變量,RESET persist不需要使用特定SSL證書加密連接到服務(wù)器。
例如:
RESET PERSIST max_connections;
如果全局系統(tǒng)變量對(duì)前面的特權(quán)要求有任何異常,則變量描述會(huì)指示這些異常。示例包括default_table_encryption和commandory_roles,它們需要額外的權(quán)限。這些附加權(quán)限適用于設(shè)置全局運(yùn)行時(shí)值的操作,但不適用于保留該值的操作。
要設(shè)置會(huì)話系統(tǒng)變量運(yùn)行時(shí)值,請(qǐng)使用set session語句。與設(shè)置全局運(yùn)行時(shí)值相比,設(shè)置會(huì)話運(yùn)行時(shí)值通常不需要特殊權(quán)限,任何用戶都可以進(jìn)行設(shè)置以影響當(dāng)前會(huì)話。對(duì)于某些系統(tǒng)變量,設(shè)置會(huì)話值可能會(huì)在當(dāng)前會(huì)話之外產(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。
如果會(huì)話系統(tǒng)變量受到限制,則變量描述會(huì)指示該限制。示例包括binlog_format和sql_log_bin。設(shè)置這些變量的會(huì)話值會(huì)影響當(dāng)前會(huì)話的二進(jìn)制日志記錄,但也可能對(duì)服務(wù)器復(fù)制和備份的完整性產(chǎn)生更廣泛的影響。
SESSION_VARIABLES_ADMIN使管理員能夠最大限度地減少先前可能已被授予SYSTEM_VARIABLES _ADMIN或SUPER的用戶的權(quán)限占用,以使他們能夠修改受限制的會(huì)話系統(tǒng)變量。假設(shè)管理員創(chuàng)建了以下角色以授予設(shè)置受限會(huì)話系統(tǒng)變量的能力:
CREATE ROLE set_session_sysvars; GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO set_session_sysvars;
任何被授予set_session_sysvars角色的用戶(以及該角色處于活動(dòng)狀態(tài)的用戶)都可以設(shè)置受限制的會(huì)話系統(tǒng)變量。然而,該用戶也能夠設(shè)置全局系統(tǒng)變量,這可能是不希望的。
通過將角色修改為具有SESSION_VARIABLES_ADMIN而不是SYSTEM_VARIABLES _ADMIN,可以將角色權(quán)限減少為設(shè)置受限會(huì)話系統(tǒng)變量的能力,而不設(shè)置其他內(nèi)容。要修改角色,請(qǐng)使用以下語句:
GRANT SESSION_VARIABLES_ADMIN ON *.* TO set_session_sysvars; REVOKE SYSTEM_VARIABLES_ADMIN ON *.* FROM set_session_sysvars;
修改角色會(huì)立即生效:任何被授予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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql load data infile 的用法(40w數(shù)據(jù) 用了
測(cè)試數(shù)據(jù)的時(shí)候,生成txt文件應(yīng)該快點(diǎn),再用這種方式導(dǎo)入到mysql 速度上快點(diǎn),40w數(shù)據(jù) 用了3-5秒導(dǎo)進(jìn)mysql2013-01-01
MySQL全文索引在數(shù)據(jù)庫中的應(yīng)用和優(yōu)勢(shì)(模糊查詢不用like+%)
全文索引技術(shù)可以有效地從大量文本中檢索信息,適用于搜索引擎和電商平臺(tái)等場(chǎng)景,InnoDB從MySQL5.6開始支持全文索引,使用倒排索引實(shí)現(xiàn),全文檢索分為自然語言搜索、布爾搜索和查詢擴(kuò)展搜索三種模式,全文索引提高了模糊查詢的效率,優(yōu)化了基于文本的搜索查詢2024-09-09
如何解決mysql執(zhí)行導(dǎo)入sql文件速度太慢的問題
文章介紹了一種通過修改MySQL導(dǎo)出命令參數(shù)來優(yōu)化大SQL文件導(dǎo)入速度的方法,通過對(duì)比目標(biāo)庫和導(dǎo)出庫的參數(shù)值,并使用優(yōu)化后的參數(shù)進(jìn)行導(dǎo)出,再在目標(biāo)庫導(dǎo)入,顯著提高了導(dǎo)入速度2024-11-11
MySQL學(xué)習(xí)第一天 第一次接觸MySQL
這篇文章是學(xué)習(xí)MySQL的第一篇文章,開啟了探究MySQL的奇妙旅程,內(nèi)容主要是對(duì)MySQL的基礎(chǔ)知識(shí)進(jìn)行學(xué)習(xí),了解,感興趣的小伙伴們可以參考一下2016-05-05
Mysql中如何批量替換某個(gè)字段的值:replace
這篇文章主要介紹了Mysql中如何批量替換某個(gè)字段的值:replace,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

