萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 用戶權限管理完整教學:GRANT 語法、權限分類、phpMyAdmin 圖形化授權與重新載入

最小權限原則是資料庫安全基石。本文系統整理 GRANT 語法、權限分類對照表、phpMyAdmin 圖形化操作流程與 FLUSH PRIVILEGES 重新載入機制。

GRANT 標準語法


GRANT privileges [(columns)] ON db.table TO 'user'@'host' IDENTIFIED BY 'password' [WITH GRANT OPTION];

權限分類對照表

類別權限說明
資料操作 (DML)SELECT讀取資料
INSERT插入/替換資料
UPDATE修改資料
DELETE刪除資料
FILELOAD DATA INFILE / SELECT INTO OUTFILE
結構管理 (DDL)CREATE建立資料庫/表/索引
ALTER修改表結構
INDEX建立/刪除索引
DROP刪除資料庫/表/視圖
CREATE TEMPORARY TABLES建立臨時表
CREATE VIEW建立視圖
SHOW VIEW查看視圖定義
CREATE ROUTINE建立預存程序/函數
ALTER ROUTINE修改預存程序/函數
EXECUTE執行預存程序
管理權限SUPER超級權限(KILL、SET GLOBAL、CHANGE MASTER 等)
RELOADFLUSH 操作
SHUTDOWN關閉服務器
PROCESSSHOW PROCESSLIST
REPLICATION SLAVE從庫同步權限
REPLICATION CLIENTSHOW MASTER/SLAVE STATUS

常用授權範例

1. 建立唯讀帳號(僅 SELECT)


CREATE USER 'readonly'@'%' IDENTIFIED BY 'strong_pass';
GRANT SELECT ON `prod_db`.* TO 'readonly'@'%';

2. 建立開發帳號(DML + DDL,無 DROP)


CREATE USER 'dev'@'10.0.%' IDENTIFIED BY 'strong_pass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON `dev_db`.* TO 'dev'@'10.0.%';

3. 建立管理帳號(含 GRANT OPTION)


CREATE USER 'admin'@'10.0.0.10' IDENTIFIED BY 'strong_pass';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'10.0.0.10' WITH GRANT OPTION;

phpMyAdmin 圖形化授權流程

  1. 首頁點擊 權限 → 新增使用者帳號
  2. 填寫:用戶名、主機名(% 或具體 IP)、密碼
  3. 3. 資料庫特定權限:選擇資料庫 → 勾選所需權限(全域權限通常留空) 4. 按 執行 建立 5. 返回權限頁 → 點擊該用戶 編輯權限 微調 6. 重新載入權限:首頁 → 重新載入權限(等同 FLUSH PRIVILEGES)

密碼修改與帳號維護


-- 修改密碼(5.7.6+)
ALTER USER 'user'@'host' IDENTIFIED BY 'new_pass';

-- 修改密碼(舊版)
SET PASSWORD FOR 'user'@'host' = PASSWORD('new_pass');

-- 刪除用戶
DROP USER 'user'@'host';

-- 重命名用戶
RENAME USER 'old'@'host' TO 'new'@'host';

查看用戶權限


SHOW GRANTS FOR 'user'@'host';
-- 輸出可直接作為備份/遷移腳本

避坑指南

  • GRANT 若用戶不存在會隱式建立(舊版行為),新版需先 CREATE USER
  • IDENTIFIED BY 密碼需用雙引號或無引號,單引號在某些版本無效
  • 修改權限後必須 FLUSH PRIVILEGES(phpMyAdmin 點「重新載入權限」)
  • 避免使用 '%' 主機通配,改用具體網段 '10.0.%'
  • 定期審計 SELECT * FROM mysql.user 移除殭屍帳號

建立「角色基礎權限集 → 依專案分配 → 定期審計」的權限治理體系,是資料庫安全的長久之計。

copyright © 萬盛學電腦網 all rights reserved