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;