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

MySQL GRANT 授權與 REVOKE 撤銷權限完整實戰指南

     編輯:MySQL 資料庫相關知識

基本語法

GRANT 權限 ON 資料庫物件 TO 用戶
REVOKE 權限 ON 資料庫物件 FROM 用戶

常見授權場景

1. 一般資料用戶(CRUD 權限)

-- 單獨授權
GRANT SELECT ON testdb.* TO common_user@'%';
GRANT INSERT ON testdb.* TO common_user@'%';
GRANT UPDATE ON testdb.* TO common_user@'%';
GRANT DELETE ON testdb.* TO common_user@'%';

-- 合併寫法(推薦)
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO common_user@'%';

2. 開發人員(DDL + 進階權限)

-- 表結構管理
GRANT CREATE, ALTER, DROP ON testdb.* TO developer@'192.168.0.%';

-- 外鍵、臨時表、索引
GRANT REFERENCES ON testdb.* TO developer@'192.168.0.%';
GRANT CREATE TEMPORARY TABLES ON testdb.* TO developer@'192.168.0.%';
GRANT INDEX ON testdb.* TO developer@'192.168.0.%';

-- 視圖
GRANT CREATE VIEW, SHOW VIEW ON testdb.* TO developer@'192.168.0.%';

-- 預存程序/函數
GRANT CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON testdb.* TO developer@'192.168.0.%';

3. DBA 管理單一資料庫

GRANT ALL PRIVILEGES ON testdb TO dba@'localhost';

4. 超級 DBA 管理所有資料庫

GRANT ALL ON *.* TO dba@'localhost';

權限作用層級

層級範例說明
全域GRANT SELECT ON *.* TO dba@localhost;所有資料庫所有表
資料庫GRANT SELECT ON testdb.* TO dba@localhost;指定資料庫所有表
資料表GRANT SELECT, INSERT ON testdb.orders TO dba@localhost;指定單表
欄位GRANT SELECT(id, name) ON testdb.users TO dba@localhost;指定欄位
程序/函數GRANT EXECUTE ON PROCEDURE testdb.proc TO 'dba'@'localhost';指定程序物件

查看權限

-- 看自己權限
SHOW GRANTS;

-- 看指定用戶權限
SHOW GRANTS FOR dba@localhost;

撤銷權限

REVOKE ALL ON *.* FROM dba@localhost;

重要注意事項

  1. 權限生效需重新連線:執行 GRANT/REVOKE 後,用戶必須重新連線 MySQL 權限才生效
  2. 授權傳遞選項:WITH GRANT OPTION 允許被授權者再授權他人,生產環境建議由 DBA 統一管理,不開啟此選項
  3. 授權表結構:user、db、host、tables_priv、columns_priv 五張表分別控制不同層級權限
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved