萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL GRANT 與 REVOKE 權限對照表及 mysqldump 權限實戰

在進行 MySQL 資料庫備份與遷移時,正確設定備份帳號權限至關重要。本文整理 MySQL 權限對照表,並以 mysqldump 完整備份所需的最小權限集為例,說明實際授權與指令用法。

一、 mysqldump 完整備份所需最小權限

為了使用 mysqldump 進行完整備份(含結構、資料、觸發器、常式、事件、二進制日志位置),備份帳號需具備以下權限:

GRANT EVENT, RELOAD, LOCK TABLES, SELECT, SHOW VIEW, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY 'your_password';

權限對照說明:

權限用途
SELECT讀取表資料,基礎權限
LOCK TABLES鎖定表以保證備份一致性(--lock-tables/--single-transaction)
SHOW VIEW導出視圖定義
REPLICATION CLIENT獲取二進制日志位置(--master-data)
RELOAD執行 FLUSH TABLES WITH READ LOCK(--master-data、--flush-logs)
EVENT導出事件調度器定義(--events 或 -E)
TRIGGER導出觸發器(--triggers,預設開啟)
PROCESS查看所有線程(某些版本 --single-transaction 需要)

二、 實戰備份指令範例

mysqldump -u db_user_backups -p'your_password' -h Host \
  --master-data=2 -E -F -R --triggers \
  --add-drop-database --add-drop-table \
  -B DatabaseName > backup_$(date +%F).sql
參數說明
--master-data=2輸出 CHANGE MASTER TO 註釋(含 Binlog 位置),2 表示註釋化
-E / --events導出事件
-F / --flush-logs備份前刷新 Binlog,配合 --master-data 實現增量備份基點
-R / --routines導出存儲過程與函數
--triggers導出觸發器(預設開啟)
--add-drop-database在 CREATE DATABASE 前加 DROP DATABASE IF EXISTS
--add-drop-table在 CREATE TABLE 前加 DROP TABLE IF EXISTS
-B / --databases指定資料庫名,輸出包含 CREATE DATABASE 與 USE 語句

三、 MySQL 權限體系速查表(核心權限分類)

1. 全域管理權限

  • ALL PRIVILEGES:除 GRANT OPTION 外所有權限
  • CREATE USER、DROP USER、RELOAD、SHUTDOWN、PROCESS、FILE、SHOW DATABASES、REPLICATION CLIENT、REPLICATION SLAVE、SUPER

2. 資料庫/表/欄位層級權限

  • 資料操作: SELECT、INSERT、UPDATE、DELETE
  • 結構變更: CREATE、DROP、ALTER、INDEX
  • 特殊物件: CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、EXECUTE、EVENT、TRIGGER
  • 鎖控制: LOCK TABLES
  • 參考完整性: REFERENCES

3. 權限傳遞

  • GRANT OPTION:允許受權者將擁有的權限授予其他用戶

四、 權限撤銷 (REVOKE) 範例

-- 撤銷特定權限
REVOKE INSERT, UPDATE ON db_name.* FROM 'user'@'host';

-- 撤銷所有權限(保留 USAGE)
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'host';

-- 徹底移除用戶
DROP USER 'user'@'host';

五、 最佳實踐建議

  1. 最小權限原則: 備份帳號僅授予上表列出的必要權限,避免使用 root 或 ALL PRIVILEGES。
  2. 網路限制: 帳號 Host 指定為備份伺服器 IP 或特定網段(如 'backup_user'@'10.0.%.%'),禁止 '%'。
  3. 密碼複雜度: 使用長隨機字串,定期輪換。
  4. 審計與監控: 開啟 audit_log 記錄備份帳號活動,設置告警偵測異常操作。
  5. 測試還原: 定期演練備份檔案還原,驗證權限設置是否完整(特別是視圖、觸發器、事件、常式)。
MySQL 權限對照表圖片1
MySQL 權限對照表圖片2

文中圖片為 MySQL 官方權限對照表截圖,輔助理解各權限層級與適用物件。

copyright © 萬盛學電腦網 all rights reserved