在 config.inc.php 中,$cfg['Servers'][$i]['auth_type'] 決定 phpMyAdmin 如何進行用戶認證:
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // 推薦預設
// 可選值:'config' | 'http' | 'cookie'
| 模式 | 認證機制 | 密碼來源 | 安全性 | 適用場景 | 限制 |
|---|---|---|---|---|---|
| config | 配置檔硬編碼 | config.inc.php 中明文存放 user/password | ❌ **極低** (檔案洩露即帳號洩露) | 僅限**完全受信任的內網開發環境**、自動化腳本 | 無登入介面、無法切換用戶、配置檔需嚴格權限保護 |
| http | HTTP Basic/Digest 認證 | 瀏覽器原生彈窗輸入,驗證對 MySQL 用戶表 | ⚠️ 中等 (Base64 易解碼,**必須配合 HTTPS**) | Apache + PHP 模組 (mod_php) 環境 | IIS + PHP (CGI/FastCGI) 無法使用,依賴 Apache 將認證標頭傳給 PHP |
| cookie | 表單登入 + Cookie 會話 | 自定義登入頁輸入,Session/加密 Cookie 維持狀態 | ✅ **高** (支援 HTTPS、登入攔截、記住我、多用戶切換) | **通用推薦**:所有 Web 伺服器 (Apache/IIS/Nginx)、PHP 模式 | 需啟用 PHP Session、Cookie、mcrypt/openssl (加密 Cookie) |
http 模式依賴 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 變數
// config.inc.php 核心片段
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false; // 禁止空密碼登入
// Blowfish 密鑰 (加密 Cookie 必須,32 字元隨機字串)
$cfg['blowfish_secret'] = 'a_very_long_random_string_here_32_chars_min';
// 登入 Cookie 有效期 (秒)
$cfg['LoginCookieValidity'] = 1440; // 24 小時
$cfg['LoginCookieStore'] = 0; // 0=瀏覽器關閉失效, 1=記住我 (需 blowfish_secret)
// 強制 HTTPS (生產環境必須)
$cfg['ForceSSL'] = true;
// 限制登入嘗試 (防暴力破解)
$cfg['LoginCookieDeleteAll'] = true; // 登出刪除所有 Cookie
$cfg['ForceSSL'] = trueopenssl_random_pseudo_bytes(32) 生成,存入配置,**勿提交版控**CREATE USER 'pma_user'@'%' IDENTIFIED BY 'strong_pass'; GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'pma_user'@'%';allow 192.168.1.0/24; deny all; 或 VPN/堡壘機Alias /my-secret-pma /usr/share/phpmyadmin 避免掃描器發現| 現象 | 原因 | 解決 |
|---|---|---|
| 登入後立即跳回登入頁 | Session 目錄不可寫 / Cookie 域名不匹配 / blowfish_secret 未設 | 1. session.save_path 權限2. $cfg['PmaAbsoluteUri'] 設正確域名3. 設定 32+ 字元 blowfish_secret |
| 「無法載入 mcrypt/openssl」警告 | PHP 缺少擴充套件 | 安裝 php-mcrypt (PHP 7.1-) 或 php-openssl (PHP 7.2+),重啟 PHP-FPM |
| http 模式彈窗不出現 / 失效 | IIS / Nginx + FastCGI 環境 | 改用 cookie 模式 (唯一通用方案) |
| 「Token mismatch」錯誤 | Cookie 損毀 / 多標籤頁並發 / Session 過期 | 清除瀏覽器 Cookie、檢查 Session 存儲、調整 LoginCookieValidity |