首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.x 權限管理詳解:GRANT 與 REVOKE 語法、權限層級、最佳實踐與注意事項

     編輯:MySQL 綜合教學

MySQL 5.x GRANT/REVOKE 權限管理完整指南

適用 MySQL 5.0+。核心語法:GRANT 權限 ON 對象 TO 用戶 [WITH GRANT OPTION]。

一、常用角色權限模板

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

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

2. 開發人員(DDL + 程式對象)

-- 表結構
GRANT CREATE, ALTER, DROP ON testdb.* TO 'dev'@'192.168.0.%';
-- 外鍵
GRANT REFERENCES ON testdb.* TO 'dev'@'192.168.0.%';
-- 臨時表
GRANT CREATE TEMPORARY TABLES ON testdb.* TO 'dev'@'192.168.0.%';
-- 索引
GRANT INDEX 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 'u'@'h';所有庫所有表
庫級GRANT SELECT ON testdb.* TO 'u'@'h';指定庫所有表
表級GRANT SELECT, INSERT ON testdb.orders TO 'u'@'h';指定表
列級GRANT SELECT(id, name) ON testdb.log TO 'u'@'h';指定列
程式對象級GRANT EXECUTE ON PROCEDURE testdb.p TO 'u'@'h';存儲過程/函數

三、查看權限

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

四、撤銷權限

REVOKE ALL ON *.* FROM 'dba'@'localhost';  -- TO 換成 FROM

五、關鍵注意事項

  1. 生效需重連:GRANT/REVOKE 後,用戶必須重新連接才生效。
  2. 授權傳遞:WITH GRANT OPTION 允許被授權者再授權,生產環境慎用,建議由 DBA 統一管理。
  3. 主機匹配:'user'@'192.168.0.%' 支援通配符,localhost 僅本地 Unix socket,127.0.0.1 走 TCP。
  4. 密碼插件:MySQL 5.7+ 建議使用 caching_sha2_password,舊版 mysql_native_password。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved