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

MySQL 資料庫安全解決方案(一):帳號結構、三層驗證模型與權限分類總覽

     編輯:MySQL 資料庫相關知識

本系列首篇,建立 MySQL 安全的整體認知框架:帳號三要素結構、三層驗證模型(登入認證 → 授權 → 存取控制)、權限分類總覽,為後續細節篇奠基。

MySQL 帳號唯一標識:User + Host + Password

  • User:用戶名(如 app_user)。
  • Host:來源主機(IP、主機名、% 通配符、localhost)。
  • Password:加密雜湊值(mysql.user 表 authentication_string 欄位)。

關鍵特性:'app_user'@'10.0.0.1' 與 'app_user'@'10.0.0.2' 是**兩個獨立帳號**,可設不同密碼、不同權限。這實現了「同一用戶名,不同來源不同信任度」的精細控制。

實例:同用戶名、不同資料庫、不同密碼

GRANT SELECT ON db1.* TO 'alice'@'server1' IDENTIFIED BY 'pwd1';
GRANT SELECT ON db2.* TO 'alice'@'server1' IDENTIFIED BY 'pwd2';
-- alice 從 server1 連 db1 用 pwd1,連 db2 用 pwd2,互不干擾

三層安全驗證模型

  1. 登入認證:驗證 User + Host + Password,通過則建立連線會話。
  2. 授權:連線建立後,根據授權表(user、db、tables_priv、columns_priv、host)計算該會話擁有的**全域/庫/表/欄位權限集合**。
  3. 存取控制:每條 SQL 執行時,檢查該操作所需的具體權限(SELECT/INSERT/UPDATE/DELETE/INDEX/ALTER... )是否在會話權限集內,**布爾判斷:允許/拒絕**。

權限分類總覽(布爾型:有/無)

類別權限說明
資料操作 (DML)SELECT查詢資料(無則僅能做 SELECT 1+1 等純運算)
INSERT插入新行
UPDATE修改現有行
DELETE刪除行
結構管理 (DDL)INDEX建立/刪除索引
ALTER修改表結構
CREATE建立資料庫/表/索引
DROP刪除資料庫/表/視圖
權限管理GRANT授予他人權限(高危)
REFERENCES外鍵引用
CREATE USER建立/刪除/重命名用戶(5.7+)
伺服器管理RELOADFLUSH 操作
SHUTDOWN關閉伺服器(極高危)
PROCESSSHOW PROCESSLIST / KILL(高危)
FILELOAD DATA INFILE / SELECT INTO OUTFILE(極高危)
SUPER全域變數、殺任意連線、複製控制、Binlog 管理(極高危)
REPLICATION SLAVE/CLIENT複製專用

授權表儲存機制

  • 所有授權表(user、db、tables_priv、columns_priv、host)均為 **MyISAM** 表,儲存於 mysql 系統庫。
  • 優勢:可用標準 SQL(SELECT/INSERT/UPDATE/DELETE)直接維護,便於自動化腳本、審計查詢。
  • 注意:手工 DML 修改後**必須 FLUSH PRIVILEGES 或重啟**生效;優先使用 GRANT/REVOKE 避免不一致。

系列導覽

  1. (一)帳號結構、三層驗證、權限分類 ← 當前篇
  2. (二)權限體系詳解與高危權限警示
  3. (三)SSL/TLS 加密連線配置與 GRANT REQUIRE
  4. (四)五大授權表詳解與雜湊加密原理
  5. (五)密碼加密函數對比與 MD5 最佳實踐

建議按序閱讀,構建從「認識帳號」到「傳輸加密」到「儲存加密」的完整防禦纵深體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved