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

MySQL GRANT 與 REVOKE 權限管理全解析:四大授權表操作指南

     編輯:MySQL 資料庫相關知識

權限管理前端:GRANT / REVOKE

MySQL 3.22.11 引入 GRANT(建立用戶、授權)與 REVOKE(撤銷權限),作為直接操作授權表的前端介面。影響四張核心授權表:

授權表內容
user可連線用戶及其全域權限(管理權限、跨庫權限)
db資料庫級權限
tables_priv表級權限
columns_priv欄位級權限

第五張表 host 不受 GRANT/REVOKE 影響。建議深讀《MySQL 安全性指南》理解底層表結構,超越 GRANT/REVOKE 功能層面。

GRANT 語法完整拆解

GRANT privileges [(columns)] ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION]

1. privileges(權限指定符)

指定符允許操作
ALTER修改表與索引
CREATE建立資料庫與表
DELETE刪除表記錄
DROP刪除資料庫與表
INDEX建立/刪除索引
INSERT插入新行
REFERENCES保留未用
SELECT查詢記錄
UPDATE修改現有記錄
FILE讀/寫伺服器檔案
PROCESS檢視/終止執行緒
RELOAD重載授權表、清空日誌/快取
SHUTDOWN關閉服務器
ALL所有權限(= ALL PRIVILEGES)
USAGE特殊「無權限」權限(僅建立用戶)

第一組適用庫/表/欄位;第二組為管理權限,嚴格授予;第三組特殊:ALL=全給,USAGE=只建用戶不給權。

2. columns(可選)

欄位級權限,多欄位逗號分隔。

3. what(權限層級)

  • 全域:ON *.*
  • 特定資料庫:ON db_name.*
  • 特定表:ON db_name.tbl_name
  • 指定 columns 子句即為欄位級。

4. user(用戶標識)

格式:'user_name'@'host_name'。MySQL 同時限定「誰」與「從哪裡連」,允許同名用戶從不同主機連線並獨立授權。用戶名非系統登入名,預設客戶端用登入名,可任意指定(如 nobody)。

5. password(可選)

新用戶必須指定 IDENTIFIED BY,否則無密碼(不安全)。現有用戶指定則覆蓋舊密碼,不指定則保留。GRANT 會自動加密,勿像 SET PASSWORD 那樣用 PASSWORD() 函數。

6. WITH GRANT OPTION(可選)

允許該用戶將自身擁有的權限再授予他人。

替代工具

MySQL Access 與 mysql_setpermission(Perl 腳本,需 DBI)提供圖形/腳本化授權介面。

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