phpMyAdmin双因素认证仅支持cookie认证模式,需配置blowfish_secret为32字节字符串并启用TwoFactorAuth='application';绑定需通过用户界面扫码完成,失败主因是密钥错误、PHP扩展缺失或缓存未清除。
phpmyadmin 的双因素认证(2fa)必须通过修改 config.inc.php 启用,且仅在 auth_type = 'cookie' 模式下生效;直接启用但未配置 blowfish 密钥或未刷新 session,会导致登录页无限重定向或 500 错误。
确认基础认证模式为 cookie
2FA 不支持 auth_type = 'config'(明文存密码)或 'http' 模式。必须确保配置中已设为 cookie 认证:
$cfg['Servers'][$i]['auth_type'] = 'cookie';- 同时确认
$cfg['blowfish_secret']已设置为 32 字节随机字符串,例如:$cfg['blowfish_secret'] = '8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d'; - 若使用宝塔面板,
config.inc.php通常位于/www/server/phpmyadmin/libraries/config.default.php或/www/server/phpmyadmin/config.inc.php,优先编辑后者
启用 TOTP 双因素认证
phpMyAdmin 原生支持基于时间的一次性密码(TOTP),无需额外插件,但需用户端安装 Google Authenticator 或 Authy 类应用:
- 在
config.inc.php中添加:$cfg['TwoFactorAuth'] = 'application'; - 保存后,用已有账号登录 phpMyAdmin → 点击右上角用户名 → 「Two-factor authentication」→ 扫描二维码并输入六位验证码完成绑定
- 首次启用后,该用户的 Session 会失效,需重新登录;若跳过绑定步骤,下次登录仍会强制要求设置
- 注意:TOTP 绑定信息存储在用户数据库表
phpmyadmin.pma__userconfig中,不依赖服务器时间同步,但客户端设备时间偏差超过 30 秒将验证失败
常见失败场景与修复
启用后无法进入登录页、报 500 或空白页,大概率是以下三类问题之一:
-
$cfg['blowfish_secret']为空或长度不足 32 字节 → 会导致 Session 加密失败,必须严格补全 - PHP 缺少
hash_hmac或openssl扩展 → 运行php -m | grep -E 'hash|openssl'确认已启用 - Web 服务器缓存了旧的登录页面(尤其是 Nginx proxy_cache 或浏览器强缓存)→ 清除浏览器 Cookie + 强制刷新,或临时在 Nginx 配置中加
add_header Cache-Control "no-cache, no-store, must-revalidate"; - 如果使用宝塔面板,其内置 phpMyAdmin 可能被硬编码禁用 2FA(部分旧版本),建议升级到 v5.1+ 并检查
/www/server/phpmyadmin/VERSION文件内容
真正麻烦的不是开启开关,而是用户侧绑定流程——一旦管理员自己没完成 TOTP 绑定就登出,可能锁死后台;务必在启用前,先用自己的账号走完「扫描→输入→确认」全流程,并备份好恢复码。
立即学习“PHP免费学习笔记(深入)”;



















