萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

phpMyAdmin 新增資料庫使用者與權限配置最佳實務

核心原則:最小權限、專庫專用、非 root 運維

**絕對不要在應用程式中使用 root 帳號連線資料庫。** 每個網站/應用應擁有獨立資料庫帳號,僅授予該資料庫必要權限,將風險隔離在單一資料庫範圍內。

操作步驟 (phpMyAdmin 4.x / 5.x 通用)

  1. 以 root 登入 phpMyAdmin。
  2. 點擊頂部選單 **「權限」 (Privileges)** → **「新增使用者帳號」 (Add user account)**。
  3. 登入資訊:
    • 使用者名稱:wp_user (建議:專案縮寫 + _user)
    • 主機名稱:localhost (本機連線) 或 10.0.0.% (特定網段) / % (任何主機,**生產環境禁用**)
    • 密碼:生成 **32 字元高強度隨機密碼** (含大小寫、數字、符號),妥善保存 (密碼管理器)。
    • 重新輸入密碼確認。
  4. 資料庫權限 (關鍵步驟):
    勾選 **「建立與使用者同名的資料庫並授予所有權限」 (Create database with same name and grant all privileges)**。
    → phpMyAdmin 會自動建立同名資料庫 (如 wp_user) 並授予該使用者對此資料庫的所有權限 (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER...)。
  5. 點擊 **「執行」 (Go)** 建立完成。
  6. 精細調整權限 (生產環境建議):
    回到「權限」頁面 → 編輯該使用者 → 「資料庫專屬權限」區塊 → 取消勾選高風險權限:
    ❌ DROP (刪除資料表/資料庫)
    ❌ ALTER (修改結構,遷移工具除外)
    ❌ CREATE VIEW, CREATE ROUTINE, TRIGGER (視業務需求)
    ❌ LOCK TABLES, REFERENCES (極少數舊系統需求)
    ✅ 保留:SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX (CRUD 核心)
    點擊「執行」套用。

進階:手動建立資料庫並指派權限 (更精確控制)

  1. 建立資料庫:建立資料庫 → 名稱 wp_db → 校對 utf8mb4_general_ci (支援 Emoji)。
  2. 新增使用者:不勾選自動建立資料庫選項。
  3. 指派權限:編輯使用者 → 「資料庫專屬權限」→ 選擇 wp_db → 勾選所需權限 → 執行。

命令列等效操作 (自動化部署必備)

-- 登入 MySQL
mysql -u root -p

-- 建立資料庫
CREATE DATABASE wp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 建立使用者 (採用 caching_sha2_password, MySQL 8.0+ 預設)
CREATE USER 'wp_user'@'10.0.0.%' IDENTIFIED BY 'Str0ng!P@ssw0rdHere';

-- 授權核心權限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX ON wp_db.* TO 'wp_user'@'10.0.0.%';

-- 刷新權限
FLUSH PRIVILEGES;

安全加固清單

  • [ ] 根帳號禁用遠端登入 (Host='localhost')
  • [ ] 所有應用帳號密碼 ≥ 32 字元、隨機生成
  • [ ] 帳號主機限制為具體 IP/網段 (避免 %)
  • [ ] 僅授予 CRUD + CREATE/INDEX 權限,移除 DROP/ALTER/GRANT
  • [ ] 啟用 SSL 連線強制 (REQUIRE SSL)
  • [ ] 定期審計權限 (SHOW GRANTS FOR 'user'@'host';)
  • [ ] 異地備份並驗證還原

常見問題

  • 連線失敗 "Access denied":確認主機名稱匹配 (localhost vs 127.0.0.1 vs 實際 IP)、密碼正確、防火牆開放 3306、MySQL bind-address 設定正確。
  • 權限不足 "Table 'xxx' doesn't exist":應用安裝時需 CREATE 權限建表,安裝完成後可移除 CREATE 權限 (視遷移工具需求)。
  • 中文亂碼:資料庫、資料表、連線字串均需 utf8mb4,PHP PDO DSN 加 charset=utf8mb4。

建立「一應用一帳號一資料庫、最小權限、強密碼、網段限制、SSL 加密」的資料庫存取模式,是守護資料資產的基石。

copyright © 萬盛學電腦網 all rights reserved