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

MySQL 網路安全解決方案:帳號體系、權限模型與 SSL 加密傳輸

     編輯:MySQL 資料庫相關知識

一、帳號安全體系

MySQL 帳號由三元組構成:用戶名 + 密碼 + 來源位置。同一用戶名從不同來源連線可擁有不同權限。

範例:同用戶不同庫不同密碼

GRANT SELECT ON db1.* TO 'abc'@'server1' IDENTIFIED BY 'pass1';
GRANT SELECT ON db2.* TO 'abc'@'server1' IDENTIFIED BY 'pass2';

用戶 abc 連 db1 用 pass1,連 db2 用 pass2,實現庫級密碼隔離。

二、三層安全檢查機制

  1. 登入驗證:用戶名/密碼/來源匹配 mysql.user 表
  2. 授權檢查:登入後依 mysql.db、mysql.tables_priv 等判斷庫/表級權限
  3. 存取控制:具體操作權限(SELECT/INSERT/UPDATE/DELETE/INDEX/ALTER/CREATE/GRANT/REFERENCES...)

三、核心權限清單

權限說明風險等級
SELECT查詢資料低
INSERT/UPDATE/DELETE增刪改資料中
INDEX建立/刪除索引中
ALTER修改表結構高
CREATE建立資料庫/表高
GRANT授權給他人極高
REFERENCES外鍵引用中
RELOADFLUSH 操作高
SHUTDOWN關閉服務極高
PROCESS查看/殺死執行緒高
FILELOAD DATA INFILE極高(可讀寫伺服器任意檔案)
SUPER殺死任意查詢、修改全域變數極高

四、SSL 加密傳輸配置

前提

  • MySQL ≥ 4.1,編譯支援 OpenSSL(have_openssl=YES)
  • Windows 版內建 OpenSSL,Linux 版需確認編譯參數

驗證 SSL 支援

mysql> SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES   |
+---------------+-------+

伺服器端啟用 SSL

[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

客戶端強制 SSL 連線

# 建立帳號要求 SSL
GRANT SELECT ON db.* TO 'user'@'%' IDENTIFIED BY 'pass' REQUIRE SSL;

# 連線指定憑證
mysql -h host -u user -p --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem

五、安全加固清單

  • ✅ 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  • ✅ Root 僅允許本地:UPDATE mysql.user SET Host='localhost' WHERE User='root';
  • ✅ 移除 test 資料庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test%';
  • ✅ 啟用 SSL 強制加密傳輸
  • ✅ 定期輪換密碼、審核權限
  • ✅ 關閉不必要的網路端口、綁定特定 IP
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved