MySQL 賬號唯一標識為 'user'@'host'。同用戶名不同來源可擁有完全不同權限與密碼:
GRANT SELECT ON db1.* TO 'abc'@'server1' IDENTIFIED BY 'pass1';
GRANT SELECT ON db2.* TO 'abc'@'server2' IDENTIFIED BY 'pass2';
實現「同賬號、分庫、分密碼、分權限」的精細隔離。
權限信息存儲於 mysql 庫的 MyISAM 表:user、db、tables_priv、columns_priv、procs_priv、proxies_priv。可用標準 SQL 查詢、修改、審計。
user 表記錄。失敗即拒絕連接。user、db、tables_priv 等表判斷全局/庫/表/列/程序級權限。| 權限 | 作用範圍 | 風險等級 | 建議授予對象 |
|---|---|---|---|
| SELECT | 表/列 | 低 | 所有業務讀賬號 |
| INSERT/UPDATE/DELETE | 表 | 中 | 業務寫賬號 |
| INDEX | 表 | 中 | DBA/遷移工具 |
| ALTER/CREATE/DROP | 庫/表/索引 | 高 | DBA/發布系統 |
| GRANT | 全局 | 極高 | 極少數超管 |
| REFERENCES | 表/列 | 中 | 需外鍵的應用 |
| RELOAD | 服務器 | 高 | 監控/備份工具 |
| SHUTDOWN | 服務器 | 極高 | 僅 root/自動化運維 |
| PROCESS | 服務器 | 高 | DBA/監控系統 (可見慢查詢、改密SQL) |
| FILE | 文件系統 | 極高 | **嚴禁業務賬號** (可讀 /etc/passwd、寫 webshell) |
RELOAD:執行 FLUSH TABLES/PRIVILEGES/LOGS 等。SHUTDOWN:執行 mysqladmin shutdown 關閉實例。PROCESS:SHOW PROCESSLIST、KILL 線程。SUPER:CHANGE MASTER TO、KILL 所有線程、SET GLOBAL 變量、啟用/禁用復制、安裝插件。REPLICATION SLAVE/CLIENT:復制拓撲管理。require_secure_transport=ON 強制加密連接。useSSL=true&verifyServerCertificate=false (或配置 CA 驗證)。skip-networking,僅 Unix Socket 通信。skip-name-resolve、bind-address 內網 IP。