需在config.inc.php中$cfg['Servers']配置前添加≥32字符的$cfg['blowfish_secret'],用openssl rand -base64 24生成后补足,权限设为644,清除浏览器cookie并重启Web服务。
phpMyAdmin 报错 “The configuration file now needs a secret passphrase (blowfish_secret)” 怎么办
这个报错说明 config.inc.php 里缺了 $cfg['blowfish_secret'],它不是可选项,是 cookie 认证模式下强制需要的 32 字符随机密钥。不填或填短了都会导致登录页白屏、反复跳转或提示“配置文件需要密钥”。
实操建议:
- 别手敲字符串——用 PHP 生成:执行
openssl rand -base64 24或在 PHP 中运行bin2hex(random_bytes(16)),再补足到 32 字符(blowfish_secret要求长度 ≥32) - 密钥必须写在
config.inc.php的$cfg['Servers'][$i]['auth_type'] = 'cookie'对应的服务器块之前,否则无效 - 不要用中文、空格、$、\ 等特殊字符;纯字母数字 + 符号(如
!@#%)更稳妥 - 改完记得重启 Web 服务(比如
sudo systemctl restart apache2),否则缓存可能让错误持续出现
config.inc.php 里 $cfg['blowfish_secret'] 放哪儿才生效
位置错了就等于没配。phpMyAdmin 启动时只读一次配置,且对 $cfg['blowfish_secret'] 的读取时机非常靠前——它必须出现在任何 $cfg['Servers'] 配置之前,否则后续的 cookie 认证逻辑会拿不到密钥。
正确顺序示例:
$cfg['blowfish_secret'] = 'a32c...'; // 必须在这儿,32+ 字符 $i = 0; $i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['auth_type'] = 'cookie';
常见错误:
立即学习“PHP免费学习笔记(深入)”;
- 密钥写在
$i++之后、$cfg['Servers'][$i]之后——失效 - 写在
/* End of servers configuration */注释下面——完全不被加载 - 多个
$cfg['blowfish_secret']赋值,后写的覆盖前写的,但只认第一个(PHP 解析顺序决定)
为什么填了 blowfish_secret 还报错或登录失败
密钥本身合法 ≠ 配置生效。最常踩的坑是权限和上下文错位。
排查点:
-
config.inc.php文件权限不能是 777,Apache/PHP 默认拒绝读取世界可写的配置文件;设为644或600更安全 - 确认你编辑的是 phpMyAdmin 实际加载的配置文件——有些系统(如 Ubuntu 的 apt 安装版)把默认配置放在
/etc/phpmyadmin/config.inc.php,而你改的可能是/usr/share/phpmyadmin/config.sample.inc.php - 如果用了 Nginx + PHP-FPM,检查
fastcgi_param PHP_VALUE "auto_prepend_file=/path/to/config.inc.php"是否干扰了原配置加载 - 浏览器 cookie 残留:清掉
phpMyAdmin域下的所有 cookie,尤其phpMyAdmin和phpMyAdminxxx开头的
blowfish_secret 影响哪些功能和安全性
它只服务于 auth_type = 'cookie' 模式,用于加密客户端 cookie 中的登录凭证。不涉及数据库连接、SQL 执行或文件导出。
关键事实:
- 密钥泄露 ≠ 数据库密码泄露,但攻击者可用它伪造有效登录 cookie(所以别提交到 Git)
- 换密钥会导致所有已登录用户立刻登出(因为旧 cookie 解密失败),这是正常行为
- 长度不足 32 字符时,phpMyAdmin 会静默截断或填充,但某些 PHP 版本(如 8.1+)会直接报错终止初始化
- 如果你用
auth_type = 'http'或'config',这个字段可以留空,但多数 Docker 或一键包默认启用了 cookie 模式
密钥不是越长越好,也不是越复杂越好——只要满足 32 字符、不可预测、不重复,就足够。真正容易被忽略的是:它必须存在、位置正确、文件可读、且没被其他配置覆盖。



















