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

MySQL GRANT 授權命令詳解:從普通用戶到 DBA 權限模型

     編輯:MySQL 資料庫相關知識

語法核心


GRANT privileges ON db_object TO 'user'@'host' [IDENTIFIED BY 'pass'] [WITH GRANT OPTION];

五大授權層級

層級範例適用對象
全域 (Global)GRANT SELECT ON *.* TO 'dba'@'localhost';跨庫管理、監控帳號
資料庫 (Database)GRANT SELECT ON testdb.* TO 'dev'@'%';開發、唯讀報表
資料表 (Table)GRANT SELECT,INSERT ON testdb.orders TO 'app'@'10.0.0.%';應用服務帳號
欄位 (Column)GRANT SELECT(id,email) ON testdb.users TO 'api'@'%';最小權限原則、敏感欄位隔離
程序/函數 (Routine)GRANT EXECUTE ON PROCEDURE testdb.proc TO 'dev'@'%';存儲過程調用者

權限分類速查

  • 數據操作 (DML):SELECT, INSERT, UPDATE, DELETE
  • 結構管理 (DDL):CREATE, ALTER, DROP, INDEX
  • 權限管理:GRANT OPTION, CREATE USER
  • 管理操作:RELOAD, SHUTDOWN, PROCESS, SUPER, REPLICATION SLAVE/CLIENT
  • 特殊:USAGE (無實際權限,佔位)、ALL PRIVILEGES (除 GRANT OPTION 外所有)

典型角色授權範本

1. 唯讀報表用戶


GRANT SELECT ON *.* TO 'readonly'@'%' IDENTIFIED BY 'pass';

2. 開發人員 (建表、索引、視圖、存儲過程)


GRANT CREATE, ALTER, DROP, INDEX, CREATE VIEW, SHOW VIEW,
      CREATE ROUTINE, ALTER ROUTINE, EXECUTE
ON devdb.* TO 'dev'@'192.168.0.%' IDENTIFIED BY 'pass';

3. 單庫 DBA


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

4. 超級 DBA


GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

查看與撤銷權限


SHOW GRANTS;                    -- 當前用戶
SHOW GRANTS FOR 'user'@'host';  -- 指定用戶
REVOKE ALL ON *.* FROM 'user'@'host';  -- 撤銷

注意事項

  1. 授權/撤銷後,用戶需**重新連線**生效
  2. WITH GRANT OPTION 允許被授權者再授權,生產環境極少用,統一由 DBA 管理
  3. 避免直接操作 mysql.user/db/tables_priv/columns_priv/procs_priv 表,易遺漏 FLUSH PRIVILEGES
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved