文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  系統變數權限

7.1.9.1 系統變數權限

系統變數可以有影響整個伺服器操作的全域值、僅影響目前工作階段的工作階段值,或兩者都有。

  • 對於動態系統變數,可以使用 SET 陳述式來變更其全域或工作階段執行階段值(或兩者),以影響目前伺服器執行個體的運作。(有關動態變數的資訊,請參閱 第 7.1.9.2 節「動態系統變數」。)

  • 對於某些全域系統變數,可以使用 SET 將其值持久儲存到資料目錄中的 mysqld-auto.cnf 檔案中,以影響後續啟動的伺服器運作。(有關持久儲存系統變數和 mysqld-auto.cnf 檔案的資訊,請參閱 第 7.1.9.3 節「持久性系統變數」。)

  • 對於持久儲存的全域系統變數,可以使用 RESET PERSISTmysqld-auto.cnf 中移除其值,以影響後續啟動的伺服器運作。

本節說明在執行階段指派值給系統變數的操作所需的權限。這包括影響執行階段值的操作,以及持久儲存值的操作。

若要設定全域系統變數,請使用帶有適當關鍵字的 SET 陳述式。這些權限適用

若要從 mysqld-auto.cnf 檔案中移除已持久化的全域系統變數,請使用 RESET PERSIST 陳述式。這些權限適用

如果全域系統變數對先前的權限要求有任何例外情況,則變數描述會指出這些例外情況。範例包括 default_table_encryptionmandatory_roles,這些變數需要額外的權限。這些額外權限適用於設定全域執行時值,但不適用於持久化值的操作。

若要設定工作階段系統變數執行時值,請使用 SET SESSION 陳述式。與設定全域執行時值相反,設定工作階段執行時值通常不需要特殊權限,任何使用者都可以執行此操作以影響目前的工作階段。對於某些系統變數,設定工作階段值可能會對目前工作階段之外產生影響,因此這是一個受限制的操作,只能由具有特殊權限的使用者執行。

如果工作階段系統變數受到限制,則變數描述會指出該限制。範例包括 binlog_formatsql_log_bin。設定這些變數的工作階段值會影響目前工作階段的二進位日誌記錄,但也可能對伺服器複寫和備份的完整性產生更廣泛的影響。

SESSION_VARIABLES_ADMIN 使管理員能夠最小化使用者權限,這些使用者先前可能被授予 SYSTEM_VARIABLES_ADMINSUPER,目的是讓他們能夠修改受限制的工作階段系統變數。假設管理員建立了以下角色來授予設定受限制的工作階段系統變數的能力

CREATE ROLE set_session_sysvars;
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO set_session_sysvars;

任何被授予 set_session_sysvars 角色的使用者(並且該角色處於啟用狀態)都能夠設定受限制的工作階段系統變數。但是,該使用者也能夠設定全域系統變數,這可能是不希望發生的。

透過將角色修改為具有 SESSION_VARIABLES_ADMIN 而不是 SYSTEM_VARIABLES_ADMIN,可以將角色權限縮減為僅設定受限制的工作階段系統變數的能力,而不能做其他事情。若要修改角色,請使用以下陳述式

GRANT SESSION_VARIABLES_ADMIN ON *.* TO set_session_sysvars;
REVOKE SYSTEM_VARIABLES_ADMIN ON *.* FROM set_session_sysvars;

修改角色會立即生效:任何被授予 set_session_sysvars 角色的帳戶不再具有 SYSTEM_VARIABLES_ADMIN,並且無法在沒有明確授予該權限的情況下設定全域系統變數。類似的 GRANT/REVOKE 順序可以應用於任何直接被授予 SYSTEM_VARIABLES_ADMIN 的帳戶,而不是透過角色的方式。