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

MySQL 用戶授權與權限回收全流程操作指南

     編輯:MySQL 資料庫相關知識

MySQL 權限系統基於「主機+用戶」二元組,權限分層:全局→庫→表→列→存儲程序。本文梳理 GRANT/REVOKE/SET PASSWORD/DROP USER 完整操作鏈路,涵蓋授權、改密、撤權、刪除用戶四大核心場景,附帶生產環境最佳實踐。

一、 用戶授權(GRANT)

1.1 典型授權示例

-- 超級管理員(含授權權限)
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDENTIFIED BY 'something' WITH GRANT OPTION;

-- 運維帳號(僅管理權限)
GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost';

-- 只連接無權限(佔位帳號)
GRANT USAGE ON *.* TO 'dummy'@'localhost';

1.2 授權語法結構

GRANT privileges ON db.tbl TO 'user'@'host' [IDENTIFIED BY 'pwd'] [WITH GRANT OPTION];
  • privileges:SELECT/INSERT/UPDATE/DELETE/CREATE/DROP/INDEX/ALTER 等,ALL 代表除 GRANT OPTION 外所有權限。
  • db.tbl:*.* 全局,db.* 庫級,db.tbl 表級。
  • host:% 任意主機,localhost 本地 Unix Socket,127.0.0.1 本地 TCP,192.168.1.% 網段。
  • WITH GRANT OPTION:允許被授權用戶再授權,謹慎開啟。

1.3 常用授權模板

-- 開發讀寫權限
GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO 'dev'@'10.0.%' IDENTIFIED BY 'strong_pwd';

-- 唯讀分析權限
GRANT SELECT ON `app_db`.* TO 'analyst'@'%' IDENTIFIED BY 'strong_pwd';

-- 跨庫只讀
GRANT SELECT ON *.* TO 'readonly'@'%' IDENTIFIED BY 'strong_pwd';

二、 密碼管理

2.1 修改他人密碼(需 SUPER 權限)

SET PASSWORD FOR 'user'@'host' = PASSWORD('newpwd');
-- 5.7.6+ 推薦
ALTER USER 'user'@'host' IDENTIFIED BY 'newpwd';

2.2 修改當前用戶密碼

SET PASSWORD = PASSWORD('newpwd');
-- 或
ALTER USER USER() IDENTIFIED BY 'newpwd';

三、 權限回收(REVOKE)

REVOKE privileges ON db.tbl FROM 'user'@'host';
  • 僅移除權限記錄,用戶賬號保留,仍可登錄(無任何權限)。
  • privileges 可為子集,不必與原 GRANT 完全一致。
  • 執行後隱式 FLUSH PRIVILEGES。

四、 徹底刪除用戶

-- 5.7.6+ 標準語法
DROP USER 'user'@'host';

-- 舊版本兼容(直接操作 mysql.user 表)
DELETE FROM mysql.user WHERE User='user' AND Host='host';
FLUSH PRIVILEGES;

五、 生產環境最佳實踐

  1. 最小權限原則:業務帳號僅授予單庫 CRUD,禁止 DROP/TRUNCATE/ALTER。
  2. 主機白名單:拒絕 '%',限定應用服務器 IP 段。
  3. 密碼策略:啟用 validate_password 插件,強制長度/複雜度/過期輪換。
  4. 分層賬號:admin(運維)、app_rw(業務讀寫)、app_ro(只讀)、repl(復制)、monitor(監控)。
  5. 定期審計:SELECT User,Host FROM mysql.user WHERE User NOT IN ('root','repl','monitor') 掃描殭屍賬號。
  6. 變更留痕:所有授權/撤權操作記錄變更單,納入合規審計。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved