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

MySQL 用戶權限管理核心實戰:從創建到精細授權

     編輯:MySQL 資料庫相關知識

核心原則:最小權限原則

生產環境嚴禁應用程序直接使用 root 賬號連接數據庫。應為每個業務系統創建專用賬號,並按「最小權限原則」授予僅完成業務所需的最小權限集合。

一、用戶創建與基礎授權

1. 創建用戶

CREATE USER 'app_user'@'10.0.1.%' IDENTIFIED BY 'StrongPass#2024';

關鍵點:Host 字段指定允許連接的客戶端 IP 段,% 為通配符,生產環境建議限制具體網段。

2. 授予庫級權限(常見業務場景)

GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `business_db`.* TO 'app_user'@'10.0.1.%';

3. 刷新權限生效

FLUSH PRIVILEGES;

二、權限精細控制實例

業務需求SQL 示例說明
只讀報表賬號GRANT SELECT ON `report_db`.* TO 'readonly'@'10.0.2.%';僅允許查詢
特定表寫入權限GRANT INSERT, UPDATE ON `order_db`.`orders` TO 'order_svc'@'10.0.3.%';列級控制可用 GRANT UPDATE (status) ON ...
存儲過程執行權限GRANT EXECUTE ON PROCEDURE `biz_db`.`sp_calc` TO 'etl_user'@'10.0.4.%';不需表級權限

三、權限回收與用戶刪除

1. 回收過大權限

REVOKE ALL PRIVILEGES ON *.* FROM 'app_user'@'10.0.1.%';
GRANT SELECT, INSERT ON `business_db`.`core_table` TO 'app_user'@'10.0.1.%';

2. 刪除用戶

DROP USER 'old_user'@'10.0.5.%';

四、權限系統底層原理

MySQL 權限本質操作的是 mysql 系統庫中的授權表:

  • user:全局權限、登錄認證
  • db:庫級權限
  • tables_priv、columns_priv:表/列級權限
  • procs_priv:存儲過程/函數權限

查看用戶實際權限

SHOW GRANTS FOR 'app_user'@'10.0.1.%';

檢查用戶 Host 分布

SELECT User, Host FROM mysql.user;

五、生產環境最佳實踐清單

  1. 按應用/模塊劃分賬號,一應用一賬號
  2. Host 欄位限制具體 IP/網段,避免 %
  3. 密碼策略:長度≥16位,包含大小寫、數字、特殊字符,定期輪換
  4. 定期審計:SELECT * FROM mysql.user WHERE User='root' AND Host!='localhost'; 應為空結果
  5. 重要操作前備份 mysql 庫授權表

掌握 MySQL 權限系統的分層結構(全局→庫→表→列→存儲過程),配合 GRANT/REVOKE 靈活組合,即可構建安全合規的數據庫訪問控制體系。

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