適用 MySQL 5.0+。核心語法:GRANT 權限 ON 對象 TO 用戶 [WITH GRANT OPTION]。
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'common_user'@'%';
-- 表結構
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.%';
GRANT ALL PRIVILEGES ON testdb TO 'dba'@'localhost';
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
WITH GRANT OPTION 允許被授權者再授權,生產環境慎用,建議由 DBA 統一管理。'user'@'192.168.0.%' 支援通配符,localhost 僅本地 Unix socket,127.0.0.1 走 TCP。caching_sha2_password,舊版 mysql_native_password。