1. max_connections(用户全局最大連接數)
- 配置語法:
-- 創建用户時配置
CREATE USER '用户名'@'主機名' WITH MAX_CONNECTIONS = 數值;
-- 修改已有用户配置
ALTER USER '用户名'@'主機名' WITH MAX_CONNECTIONS = 數值;
- 使用場景:限制用户從所有主機發起的總連接數,防止單個用户佔用過多數據庫連接資源。
- 示例:
ALTER USER 'app_user'@'%' WITH MAX_CONNECTIONS = 50; -- 允許該用户全局最多建立 50 個連接
- 關鍵説明:數值為 0 表示無限制,優先級低於
max_user_connections。
2. max_user_connections(用户同時在線最大連接數)
- 配置語法: sql
CREATE USER '用户名'@'主機名' WITH MAX_USER_CONNECTIONS = 數值;
ALTER USER '用户名'@'主機名' WITH MAX_USER_CONNECTIONS = 數值;
- 使用場景:限制用户同一時間的併發連接數,避免單個用户多線程併發連接耗盡數據庫資源。
- 示例:
CREATE USER 'web_user'@'localhost' WITH MAX_USER_CONNECTIONS = 10; -- 最多同時在線 10 個連接
- 關鍵説明:數值為 0 表示無限制,優先級高於
max_connections,僅對該用户生效。
3. max_queries(單次連接最大查詢次數)
- 配置語法:
CREATE USER '用户名'@'主機名' WITH MAX_QUERIES = 數值;
ALTER USER '用户名'@'主機名' WITH MAX_QUERIES = 數值;
- 使用場景:限制用户單次連接中可執行的所有 SQL 語句次數(含 SELECT、UPDATE、INSERT 等),防止惡意循環查詢。
- 示例:
ALTER USER 'report_user'@'192.168.1.%' WITH MAX_QUERIES = 1000; -- 單次連接最多執行 1000 條語句
- 關鍵説明:數值為 0 表示無限制,連接斷開後計數重置。
4. max_updates(單次連接最大寫操作次數)
- 配置語法:
CREATE USER '用户名'@'主機名' WITH MAX_UPDATES = 數值;
ALTER USER '用户名'@'主機名' WITH MAX_UPDATES = 數值;
- 使用場景:限制用户單次連接中寫操作次數(含 UPDATE、DELETE、INSERT、REPLACE),防止批量誤操作或惡意寫入。
- 示例:
CREATE USER 'edit_user'@'localhost' WITH MAX_UPDATES = 500; -- 單次連接最多 500 次寫操作
- 關鍵説明:數值為 0 表示無限制,SELECT 操作不計入計數。
5. max_questions(單次連接最大請求次數)
- 配置語法:
CREATE USER '用户名'@'主機名' WITH MAX_QUESTIONS = 數值;
ALTER USER '用户名'@'主機名' WITH MAX_QUESTIONS = 數值;
- 使用場景:與
max_queries功能基本一致,部分 MySQL 版本中為同義詞,用於限制單次連接的總請求次數。 - 示例:
ALTER USER 'guest_user'@'%' WITH MAX_QUESTIONS = 200; -- 單次連接最多 200 次請求
- 關鍵説明:優先使用
max_queries配置,避免重複設置導致衝突。
6. max_statement_time(單條 SQL 最大執行時間)
- 配置語法:
CREATE USER '用户名'@'主機名' WITH MAX_STATEMENT_TIME = 數值;
ALTER USER '用户名'@'主機名' WITH MAX_STATEMENT_TIME = 數值;
- 使用場景:限制用户單條 SQL 語句的最長執行時間(單位:秒),防止慢查詢長時間佔用數據庫 CPU 資源。
- 示例:
CREATE USER 'api_user'@'10.0.0.%' WITH MAX_STATEMENT_TIME = 10; -- 單條 SQL 最多執行 10 秒
- 關鍵説明:僅支持 MySQL 5.7+ 版本,數值為 0 表示無限制,超過時間會自動終止語句。
批量配置示例(多參數組合)
-- 創建用户時同時配置多個資源限制
CREATE USER 'business_user'@'localhost'
IDENTIFIED BY 'password123'
WITH MAX_CONNECTIONS = 30
MAX_USER_CONNECTIONS = 5
MAX_QUERIES = 2000
MAX_UPDATES = 800
MAX_STATEMENT_TIME = 15;
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。