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

MySQL 資料庫網路安全解決方案:帳號體系、三層驗證、權限矩陣、SSL 加密傳輸

     編輯:MySQL 資料庫相關知識

網路資料庫安全威脅模型

網路傳輸面臨:竊聽 (明文傳輸)、竄改 (中間人)、冒充 (弱認證)、越權 (權限失控)。MySQL 提供多層防禦機制。

帳號體系:三元組識別

MySQL 帳號 = 用戶名 + 密碼 + 來源位置 (Host: IP、主機名、通配符 %)


# 同一用戶名,不同來源擁有不同權限/密碼
GRANT SELECT ON db1.* TO 'alice'@'192.168.1.10' IDENTIFIED BY 'pass1';
GRANT SELECT ON db2.* TO 'alice'@'192.168.1.20' IDENTIFIED BY 'pass2';
# alice 從不同 IP 連線,權限與密碼完全隔離

此設計實現來源基準的權限隔離,防止單一帳號被盜用後橫向移動。

三層安全檢查架構

層級名稱檢查內容對應 MySQL 機制
1登入驗證用戶名/密碼/來源驗證Authentication Plugin (caching_sha2_password, mysql_native_password)
2授權檢查全域/資料庫/資料表/欄位級權限GRANT/REVOKE 權限系統 (mysql.user, db, tables_priv, columns_priv)
3存取控制具體操作許可 (SELECT/INSERT/UPDATE/DELETE/EXECUTE...)權限位元組合、資源限制 (MAX_QUERIES_PER_HOUR 等)

核心權限矩陣 (布爾型:允許/拒絕)

權限範圍說明
SELECT資料表/欄位查詢資料。無此權限僅能執行 SELECT 1+1 等無表查詢
INSERT資料表插入新行
UPDATE資料表/欄位修改現有行
DELETE資料表刪除行
INDEX資料表建立/刪除索引
ALTER資料表修改表結構
CREATE資料庫/資料表建立新物件
DROP資料庫/資料表刪除物件
GRANT全域將自身權限授予他人 (權限傳遞)
REFERENCES資料表/欄位建立外來鍵約束引用
RELOAD全域執行 FLUSH TABLES/LOGS/PRIVILEGES 等
SHUTDOWN全域關閉 MySQL 服務
PROCESS全域查看 SHOW PROCESSLIST 完整資訊
SUPER全域KILL 線程、CHANGE MASTER、PURGE BINLOG 等超級操作
REPLICATION SLAVE全域從庫連線讀取 Binlog
REPLICATION CLIENT全域SHOW MASTER/SLAVE STATUS

網路傳輸加密:SSL/TLS 配置


# 1. 產生憑證 (OpenSSL)
openssl req -newkey rsa:2048 -nodes -keyout server-key.pem -x509 -days 365 -out server-cert.pem
openssl req -newkey rsa:2048 -nodes -keyout client-key.pem -x509 -days 365 -out client-cert.pem

# 2. 伺服器配置
[mysqld]
ssl-ca = /etc/mysql/ca-cert.pem
ssl-cert = /etc/mysql/server-cert.pem
ssl-key = /etc/mysql/server-key.pem
require_secure_transport = ON  # 強制所有連線使用 SSL

# 3. 客戶端連線
mysql -h host -u user -p --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem

# 4. 驗證加密生效
STATUS;
# SSL: Cipher in use is TLS_AES_256_GCM_SHA384

進階防禦策略

  1. 強制密碼策略:INSTALL PLUGIN validate_password SONAME 'validate_password.so'; 設定長度、複雜度、過期週期
  2. 連線限制:GRANT USAGE ON *.* TO 'user'@'%' WITH MAX_CONNECTIONS_PER_HOUR 1000 MAX_QUERIES_PER_HOUR 5000;
  3. 審計日誌:企業版 Audit Log Plugin 或開源 MariaDB Audit Plugin
  4. 資料加密:InnoDB Tablespace Encryption (TDE) 靜態資料加密
  5. 防火牆/安全組:僅開放應用層 IP 存取 3306,資料庫伺服器不直接暴露公網
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved