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

MySQL 用戶管理實戰:GRANT/REVOKE 語法詳解與最佳實踐

     編輯:MySQL 資料庫相關知識

前言

MySQL 管理員必須掌握:如何創建用戶賬號、限制連接來源、授予精確權限。MySQL 3.22.11 引入 GRANT 和 REVOKE 兩條語句,作為授權表的前端接口,比直接操作底層表更簡單、安全。

受影響的四張授權表

表名 存儲內容
user 可連接服務器的用戶及其全局權限
db 數據庫級權限
tables_priv 表級權限
columns_priv 列級權限

第五張表 host 不受 GRANT/REVOKE 影響,需手動維護。

GRANT 工作流程

  • 在 user 表創建用戶記錄
  • 全局權限(管理權限/跨庫權限)記錄在 user
  • 庫/表/列級權限分別記錄在 db、tables_priv、columns_priv

建議:雖然 GRANT/REVOKE 更易用,但管理員應閱讀《MySQL 安全性指南》,理解底層表如何超越語句功能(如複雜的主機匹配邏輯)。

GRANT 語法完整解析

GRANT 權限列表 (列名) ON 權限作用範圍 TO 用戶名@主機名 IDENTIFIED BY '密碼' WITH GRANT OPTION

1. 權限指定符(privileges)

分類 權限 允許操作
數據/結構權限
(庫/表/列級)
ALTER 修改表結構和索引
CREATE 創建數據庫和表
DELETE 刪除表記錄
DROP 刪除數據庫和表
INDEX 創建/刪除索引
INSERT 插入新行
SELECT 查詢記錄
UPDATE 修改現有記錄
管理權限
(嚴格限制授予)
FILE 讀寫服務器文件
PROCESS 查看/殺死線程
RELOAD 重載授權表、清空日志/緩存
SHUTDOWN 關閉服務器
特殊權限 ALL 所有權限(同 ALL PRIVILEGES)
USAGE 「無權限」——僅創建用戶不授權

2. 列名(columns)

可選,僅用於列級權限。多列用逗號分隔。

3. 作用範圍(what)

  • *.*:全局(所有庫所有表)
  • db_name.*:特定庫所有表
  • db_name.tbl_name:特定表
  • 配合 COLUMNS 子句實現列級

4. 用戶標識(user)

格式:用戶名@主機名。MySQL 區分「誰」從「哪裡」連接,同名不同源用戶權限完全獨立。用戶名無需關聯系統登錄名。

5. 密碼(password)

  • 新用戶無 IDENTIFIED BY → 無密碼(不安全)
  • 現有用戶指定新密碼 → 替換舊密碼
  • 不指定 → 保持原密碼
  • 關鍵差異:GRANT 會自動加密密碼,**不要**像 SET PASSWORD 那樣用 PASSWORD() 函數

6. WITH GRANT OPTION

可選。包含則允許該用戶將自己擁有的權限再授予他人。

大小寫敏感性:用戶名、密碼、數據庫名、表名 區分大小寫;主機名、列名 不區分。

構建 GRANT 語句的三步提問法

  1. 誰能連接?從哪裡連接?(user@host)
  2. 需要什麼級別權限?作用於什麼對象?(privileges ON what)
  3. 是否授予管理權限?(FILE/PROCESS/RELOAD/SHUTDOWN)

實戰示例

場景 1:限制連接來源

-- 僅允許從 localhost 連接
GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY 'ruby';

-- 允許從特定域名連接
GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY 'quartz';

場景 2:通配符主機(經常出差的用戶)

-- 允許從任何主機連接(謹慎使用!)
GRANT ALL ON samp_db.* TO 'traveler'@'%' IDENTIFIED BY 'password';

場景 3:僅創建用戶不授權

GRANT USAGE ON *.* TO 'audit'@'%' IDENTIFIED BY 'audit123';

輔助工具

  • mysqlaccess:測試用戶權限的 Perl 腳本
  • mysql_setpermission:交互式設置權限的 Perl 腳本(需 DBI 支持)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved