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

MySQL GRANT 命令深度解析:五大層級、撤銷、最佳實踐

     編輯:MySQL 資料庫相關知識

MySQL GRANT 權限體系全景圖:從列級到服務器級

一、常用角色授權模板

1. 普通數據用戶(增刪改查)


GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'common_user'@'%';

2. 開發人員(結構變更、程式對象)


GRANT CREATE, ALTER, DROP, INDEX, REFERENCES ON testdb.* TO 'dev'@'192.168.0.%';
GRANT CREATE TEMPORARY TABLES ON testdb.* TO 'dev'@'192.168.0.%';
GRANT CREATE VIEW, SHOW VIEW ON testdb.* TO 'dev'@'192.168.0.%';
GRANT CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON testdb.* TO 'dev'@'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.p1 TO 'dba'@'localhost';存儲過程/函數

三、查看與撤銷


-- 查看當前用戶
SHOW GRANTS;
-- 查看指定用戶
SHOW GRANTS FOR 'dba'@'localhost';

-- 撤銷(語法與 GRANT 同,TO 改 FROM)
REVOKE ALL ON *.* FROM 'dba'@'localhost';

四、關鍵注意事項

  1. 生效需重連:權限變更後,用戶必須斷開重連
  2. WITH GRANT OPTION:允許被授權者再授權,**生產極度慎用**
  3. 系統表授權:調用存儲過程報 SELECT command denied ... for table 'proc',需 GRANT SELECT ON mysql.proc TO 'user'@'%';
  4. 授權表結構:user(全局)、db(庫級)、host(主機級)、tables_priv(表級)、columns_priv(列級)

五、常見報錯對照

報錯原因解決
Access denied for user無對應權限補授權對應對象
SELECT command denied ... table 'proc'缺 mysql.proc 權限GRANT SELECT ON mysql.proc TO ...
Unknown eventDROP 不存在事件加 IF EXISTS
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved