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

MySQL 權限體系深度解讀與安全配置最佳實踐

     編輯:MySQL 資料庫相關知識

權限表架構與驗證流程

四張權限表,驗證順序:

  1. user(全域權限)
  2. db(資料庫級)
  3. tables_priv(資料表級)
  4. columns_priv(欄位級)

邏輯:user 中權限為 Y → 直接通過,不再檢查後續表;為 N → 遞歸檢查下一層。

權限分類速查表

類別權限關鍵字說明
資料操作SELECT, INSERT, UPDATE, DELETEDML 基礎權限
結構變更CREATE, DROP, ALTER, INDEXDDL 權限
管理權限SUPER, PROCESS, RELOAD, SHUTDOWN影響全實例,極度謹慎授予
檔案權限FILE可讀寫伺服器檔案,極高風險
複製權限REPLICATION SLAVE/CLIENT主從複製專用

資料庫級權限建議矩陣

角色建議權限禁止權限
應用讀寫賬號SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTERSUPER, FILE, PROCESS, SHUTDOWN, GRANT OPTION
只讀報表賬號SELECT所有寫入與管理權限
開發/測試賬號特定庫 ALL PRIVILEGES生產庫任何權限
備份賬號SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENTFILE, SUPER

安全配置九大項

  1. 網路層:防火牆/安全組限制 3306 埠僅允許應用伺服器 IP
  2. 非預設埠:修改 port 減少掃描攻擊
  3. 強密碼 + IP 綁定:CREATE USER 'app'@'10.0.1.%' IDENTIFIED BY 'ComplexP@ssw0rd'
  4. Root 管控:強密碼 + host='localhost' + 禁用遠程登入
  5. 審計日誌:開啟 general_log 或审计插件記錄登入與敏感操作
  6. 最小權限運行:Linux 建專用 mysql 用戶,目錄權限 750,數據目錄 750
  7. 禁用危險功能:secure_file_priv=/var/lib/mysql-files/ 限制 LOAD DATA/INTO OUTFILE 目錄
  8. 應用賬號隔離:每應用一賬號,僅授對應庫權限
  9. 清理預設:DROP DATABASE test,移除匿名用戶

入侵提權路徑與防禦

攻擊向量核心條件防禦措施
UDF 提權寫入 plugin 目錄 .so/dll進程用戶無寫入權限、plugin_dir 唯讀
寫啟動腳本寫入 /etc/init.d/ 或 cron進程用戶無系統目錄寫入權限
Root 洩露管理帳號被盜限制 Root 只能本地登入、定期輪換密碼
應用賬號洩露SQL 注入/伺服器被控賬號無 FILE/管理權限、庫級隔離

常用權限管理指令速查

-- 建用戶授權
GRANT SELECT,INSERT,UPDATE,DELETE ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON db.* TO 'user'@'%' IDENTIFIED BY 'pass';

-- 刷新生效
FLUSH PRIVILEGES;

-- 查看權限
SHOW GRANTS FOR 'user'@'%';

-- 回收權限
REVOKE DELETE ON *.* FROM 'user'@'%';

-- 刪除用戶
DROP USER 'user'@'%';

-- 修改密碼
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

-- 導出檔案(需 FILE 權限)
SELECT * FROM t INTO OUTFILE '/var/lib/mysql-files/t.csv';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved