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

MySQL 網路安全防禦實戰:帳號權限模型、SSL 強制加密與授權表深度解析

     編輯:MySQL 資料庫相關知識

一、帳號安全:三層防線

1.1 帳號三元組

用戶名 / 密碼 / 來源(Host),不含資料庫名。同一用戶可針對不同庫設不同密碼:

GRANT SELECT ON db1.* TO 'abc'@'srv1' IDENTIFIED BY 'pwd1';
GRANT SELECT ON db2.* TO 'abc'@'srv1' IDENTIFIED BY 'pwd2';

1.2 三類檢查

  1. 登錄驗證:匹配 mysql.user (user+password+host)。
  2. 授權檢查:登入後,按 db、tables_priv、columns_priv 判斷庫/表/列權限。
  3. 訪問控制:具體權限位(SELECT/INSERT/UPDATE/DELETE/INDEX/ALTER/CREATE/DROP/GRANT/REFERENCES...)。

1.3 高危全域權限(慎授)

權限風險
FILELOAD DATA INFILE 讀取任意伺服器檔案
PROCESSSHOW PROCESSLIST 窺探他人 SQL、KILL 終止查詢
SUPER終止任意查詢、改全域變數、控制複寫
SHUTDOWN關閉資料庫服務
RELOAD執行 FLUSH * 管理命令

二、SSL 加密傳輸

2.1 啟用前提

  • MySQL ≥ 4.1 + OpenSSL 支援(SHOW VARIABLES LIKE 'have_openssl'; 為 YES)。
  • Linux 版預設未編入,需自行編譯或安裝社區版;Windows 版內建。

2.2 GRANT REQUIRE 強制加密

-- 僅允許 SSL 連線
GRANT ALL ON ssl_db.* TO 'abc'@'%' IDENTIFIED BY 'pwd' REQUIRE SSL;

-- 驗證客戶端憑證
GRANT ALL ON ssl_db.* TO 'abc'@'%' IDENTIFIED BY 'pwd' REQUIRE X509;

-- 指定客戶端憑證主體
GRANT ALL ON ssl_db.* TO 'abc'@'%' IDENTIFIED BY 'pwd'
REQUIRE SUBJECT '/C=US/ST=NY/L=Albany/O=Widgets Inc./CN=client-ray';

-- 指定簽發者 CA
GRANT ALL ON ssl_db.* TO 'abc'@'%' IDENTIFIED BY 'pwd'
REQUIRE ISSUER '/C=US/ST=NY/L=Albany/O=Widgets Inc./CN=ca';

-- 指定加密套件
GRANT ALL ON ssl_db.* TO 'abc'@'%' IDENTIFIED BY 'pwd'
REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA';

三、五大授權表

表層級說明
user全域認證、全域權限、加密密碼
host主機主機級權限,GRANT 不影響,需手工維護
db資料庫庫級權限
tables_priv資料表表級權限
columns_priv欄位列級權限

均為 MyISAM,可用標準 SQL 維護。

四、實戰建議

  1. 業務帳號僅授具體庫/表權限,禁用 root 遠端、禁用匿名帳號。
  2. 生產環境強制 REQUIRE SSL,防明文竊聽。
  3. 定期 SELECT User, Host, plugin FROM mysql.user 審計弱密碼/過期帳號。
  4. 網路層:安全組/防火牆僅放行應用叢集 IP 段訪問 3306。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved