首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 使用者權限管理實戰:GRANT 與 INSERT 兩種授權模式完整教學

     編輯:MySQL 資料庫相關知識

核心概念

MySQL 權限系統基於四張授權表:user、db、tables_priv、columns_priv(另有 host 表不受 GRANT/REVOKE 影響)。GRANT/REVOKE 是操作這些表的前端介面,比直接修改資料表更安全直觀。

方法一:GRANT 指令授權(推薦)

建立超級用戶

GRANT ALL PRIVILEGES ON *.* TO 'system'@'localhost' IDENTIFIED BY 'manager' WITH GRANT OPTION;
  • *.*:所有資料庫、所有資料表
  • WITH GRANT OPTION:允許將自身權限轉授他人
  • 限制 @'localhost' 降低暴力破解風險

權限層級說明

層級語法範例適用範圍
全域GRANT ALL ON *.*所有資料庫,含管理權限
資料庫GRANT ALL ON db_name.*單一資料庫所有表
資料表GRANT SELECT,INSERT ON db.tbl單一資料表
欄位GRANT UPDATE(col) ON db.tbl單一欄位

管理權限(僅能全域授予)

  • FILE、PROCESS、RELOAD、SHUTDOWN
  • 範例:GRANT RELOAD ON *.* TO 'flush_user'@'localhost' IDENTIFIED BY 'pwd';

通配符主機名

  • user@'%':任意主機(最不安全)
  • user@'%.domain.com':特定網域
  • user@'192.168.1.%':IP 段
  • user@'192.168.1.0/255.255.255.0':CIDR 表示法(MySQL 3.23+)

匿名用戶與臨時資料庫技巧

GRANT ALL ON tmp.* TO ''@'mars.net';

允許 mars.net 網域任何用戶使用 tmp 資料庫建立臨時表,不影響主業務資料權限。

方法二:直接操作 user 表(進階/批量)

INSERT INTO user
VALUES('localhost','system',PASSWORD('manager'),
  'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

MySQL 3.22.34 共 14 個 Y,對應權限順序:

  1. Select_priv
  2. Insert_priv
  3. Update_priv
  4. Delete_priv
  5. Create_priv
  6. Drop_priv
  7. Reload_priv
  8. Shutdown_priv
  9. Process_priv
  10. File_priv
  11. Grant_priv
  12. References_priv
  13. Index_priv
  14. Alter_priv

注意: 新版 MySQL 權限欄位已擴充(含 Create_tmp_table_priv、Lock_tables_priv 等),直接 INSERT 需對應完整欄位數,建議改用 GRANT。

建立業務資料庫

CREATE DATABASE XinXiKu;

最佳實踐建議

  1. 原則:最小權限,僅授予業務必要權限
  2. 超級帳號:限制 @'localhost'、強密碼、定期輪換
  3. 應用帳號:分離讀寫、拒絕 DROP/SHUTDOWN 等高危權限
  4. 稽核:定期 SHOW GRANTS FOR 'user'@'host';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved