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

MySQL 資料庫安全配置全攻略:帳號、權限與 SSL 加密

     編輯:MySQL 資料庫相關知識

建立多層次的 MySQL 安全防線

隨著網路應用普及,資料庫安全至關重要。MySQL 提供帳號認證、細粒度權限控制、SSL 加密傳輸等機制,本文詳細說明配置要點。

1. 帳號與認證機制

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

GRANT SELECT ON db1.* TO 'user'@'host1' IDENTIFIED BY 'pwd1';
GRANT SELECT ON db2.* TO 'user'@'host1' IDENTIFIED BY 'pwd2';

此機制可實現同用戶分庫不同密碼,限制存取範圍。

2. 三層安全檢查

  • 登錄驗證: 驗證用戶名/密碼。
  • 授權檢查: 登入後依權限表判斷操作權限(如 `DROP`、`CREATE`)。
  • 訪問控制: 針對具體資料表/欄位的操作權限(`SELECT`、`INSERT`、`UPDATE`、`DELETE`、`INDEX`、`ALTER` 等)。

3. 關鍵權限說明

高危權限嚴格限制授予,遵循最小權限原則。

4. SSL 加密傳輸配置

MySQL 4.1+ 支援 OpenSSL。預設未啟用,需編譯或配置開啟:

SHOW VARIABLES LIKE 'have_openssl'; -- 檢查是否支援

強制特定帳號使用 SSL 連線:

GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pwd' REQUIRE SSL;
-- 或要求客戶端憑證
GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pwd' REQUIRE X509;
-- 指定主體/簽發者/加密套件
GRANT ALL ON db.* TO 'user'@'%' IDENTIFIED BY 'pwd'
  REQUIRE SUBJECT '/CN=client' ISSUER '/CN=ca' CIPHER 'EDH-RSA-DES-CBC3-SHA';

5. 權限表維護

權限資料儲存於 `mysql` 資料庫的 MyISAM 表中(`user`、`db`、`tables_priv` 等)。可直接用 SQL 管理,但操作需極度謹慎,錯誤修改可能導致服務癱瘓或權限失控。

最佳實踐: 定期審計帳號、移除匿名帳號、強制強密碼、啟用 SSL、限制來源 IP、最小化權限授予。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
權限說明風險等級
FILE執行 `LOAD DATA INFILE`,可讀取伺服器任意檔案高危
GRANT將自身權限授予他人高危
SHUTDOWN關閉 MySQL 服務高危
PROCESS查看/終止其他連線的執行緒中危
SUPER終止任意查詢、修改全域變數高危
RELOAD執行 `FLUSH` 指令中危