萬盛學電腦網

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

MySQL GRANT 指令新增使用者與權限管理完整教學

GRANT 指令語法總覽

GRANT 權限列表 ON 資料庫.資料表 TO '用戶'@'主機' IDENTIFIED BY '密碼' [WITH GRANT OPTION];

常用權限關鍵字

  • ALL PRIVILEGES:所有權限(除 GRANT OPTION)
  • SELECT, INSERT, UPDATE, DELETE:基礎 CRUD
  • CREATE, DROP, ALTER, INDEX:結構管理
  • GRANT OPTION:允許將擁有的權限授予他人

實戰範例

範例 1:建立超級管理員(全域所有權限)

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'StrongPass123' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'StrongPass123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

範例 2:建立應用程式帳號(特定資料庫讀寫)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP 
ON myapp_db.* 
TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'AppPass456';
FLUSH PRIVILEGES;

範例 3:建立唯讀報表帳號

GRANT SELECT ON report_db.* TO 'report_user'@'%' IDENTIFIED BY 'ReadOnly789';
FLUSH PRIVILEGES;

範例 4:建立開發測試帳號(多資料庫)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON dev_db1.* TO 'dev'@'%' IDENTIFIED BY 'DevPass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON dev_db2.* TO 'dev'@'%' IDENTIFIED BY 'DevPass';
FLUSH PRIVILEGES;

進階:直接操作授權表(不推薦新手)

透過 INSERT INTO mysql.user/db/tables_priv ... 直接寫入權限表,最後必須執行 FLUSH PRIVILEGES; 生效。適用於批次匯入權限設定,但易出錯,建議優先使用 GRANT。

phpMyAdmin 圖形化操作流程(零指令)

  1. 新增資料庫:首頁 → 「建立資料庫」 → 輸入名稱、選擇編碼(建議 utf8mb4_general_ci)
  2. 新增使用者:上方「權限」頁籤 → 「新增使用者帳號」 → 填寫用戶名、主機(localhost 或 %)、密碼 → 不勾選全域權限 → 執行
  3. 指定資料庫權限:提示「已新增使用者」→ 下方「資料庫專用權限」→ 選擇目標資料庫 → 勾選所需權限(結構類建議全選除 DROP/ALTER ROUTINE 外) → 執行

權限驗證與移除

-- 查看使用者權限
SHOW GRANTS FOR 'app_user'@'192.168.1.%';

-- 移除特定權限
REVOKE INSERT, UPDATE ON myapp_db.* FROM 'app_user'@'192.168.1.%';

-- 刪除使用者
DROP USER 'app_user'@'192.168.1.%';

安全性最佳實踐

  • 最小權限原則:應用程式帳號僅授予必要資料庫的必要操作
  • 主機限制:避免 'user'@'%',改用 'user'@'10.0.0.%' 或具體 IP
  • 密碼複雜度:12 字元以上,含大小寫、數字、特殊符號
  • 定期稽核:SELECT User, Host FROM mysql.user; 檢查異常帳號
  • 移除匿名帳號:DROP USER ''@'localhost'; DROP USER ''@'%';
copyright © 萬盛學電腦網 all rights reserved