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

MySQL 用戶帳號權限管理權威指南:GRANT/REVOKE 實戰詳解

     編輯:MySQL 資料庫相關知識

權限體系四層架構

層級權限表ON 語法典型權限
全局userON *.*SHUTDOWN, SUPER, RELOAD, CREATE USER
資料庫dbON db.*CREATE, DROP, INDEX, ALTER
資料表tables_privON db.tblSELECT, INSERT, UPDATE, DELETE
欄位columns_privON db.tbl (col)SELECT, INSERT, UPDATE

host 表不受 GRANT/REVOKE 控制,需手動維護。

GRANT 完整語法與實戰範例

-- 基礎授權
GRANT SELECT, INSERT ON db.* TO 'app'@'10.0.0.%' IDENTIFIED BY 'pass';

-- 全權限含授權權
GRANT ALL ON db.* TO 'admin'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;

-- 僅修改密碼/資源/SSL(USAGE = 無實質權限)
GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY 'newpass';
GRANT USAGE ON *.* TO 'user'@'%' REQUIRE SSL;
GRANT USAGE ON *.* TO 'user'@'%' WITH MAX_CONNECTIONS_PER_HOUR 100 MAX_QUERIES_PER_HOUR 1000;

主機名通配規則

  • %:任意主機(等同無主機部分)。
  • _:單字元通配。
  • IP 前綴:192.168.10.%。
  • 精確匹配優先於通配。

REVOKE 與徹底刪除帳號

-- 撤銷特定權限
REVOKE SELECT ON db.* FROM 'app'@'10.0.0.%';

-- REVOKE 不刪除帳號記錄,需手動清理
DELETE FROM mysql.user WHERE User='app' AND Host='10.0.0.%';
FLUSH PRIVILEGES;

注意:REQUIRE SSL、資源限制需用 GRANT USAGE ... REQUIRE NONE、WITH MAX_... 0 重置,REVOKE 無法清除。

權限生效機制

  • 修改權限表後,Server 會自動緩存,FLUSH PRIVILEGES 強制重讀。
  • --skip-grant-tables 啟動時忽略權限表(緊急重置 root 密碼用)。

最佳實踐原則

  1. 最小權限原則:應用帳號僅授業務庫 DML,避免 DDL/管理權限。
  2. 按環境隔離:dev/test/prod 使用不同帳號、不同主機通配。
  3. 定期審計:SELECT User, Host, Db FROM mysql.db WHERE Db LIKE 'prod%';
  4. 密碼複雜度:配合 validate_password 插件強制策略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved