必须填写 $cfg['blowfish_secret'],因其是 cookie 认证下 aes 加密登录态的必需对称密钥;需在 config.inc.php 中非注释位置设置至少 32 字符的随机字符串,并确保与 config.default.php 等加载文件中值一致。

为什么必须填 $cfg['blowfish_secret']
phpMyAdmin 用 cookie 认证方式(默认)时,会把登录态加密后存进浏览器 Cookie。这个加密依赖 $cfg['blowfish_secret'],它不是密码,而是 AES 加密用的对称密钥。留空或长度太短,就会触发“配置文件现在需要一个短语密码”红色提示,且无法完成登录流程。
怎么填才有效:长度、位置、一致性
密钥必须满足三个硬性条件,缺一不可:
-
$cfg['blowfish_secret']必须出现在config.inc.php文件中,且不能在注释里 - 值必须是非空字符串,建议至少 32 字符(官方文档明确说最大支持 46 字符,但低于 32 容易被某些版本拒绝)
- 如果系统同时加载了
config.default.php(比如某些包管理安装方式),里面的$cfg['blowfish_secret']也得同步修改,否则可能被覆盖
常见错误是只改了 config.inc.php,却忘了 libraries/config.default.php 里还有一处同名变量——尤其在 Ubuntu/Debian 的 APT 安装包里,后者会被自动加载。
生成和写入密钥的实操步骤
别手敲“123456”这种弱密钥,也不要用日期、用户名等可预测内容。推荐用 PHP 命令行快速生成:
php -r "echo bin2hex(random_bytes(32));"
复制输出结果(如 7a8b9c...f0),然后在 config.inc.php 中定位到这一行:
$cfg['blowfish_secret'] = '';
替换成:
$cfg['blowfish_secret'] = '7a8b9c...f0';
注意:config.inc.php 通常由 config.sample.inc.php 复制而来;如果该文件不存在,先复制再编辑。改完保存,无需重启 Web 服务,但必须清空浏览器中 phpMyAdmin 相关 Cookie,否则旧加密态仍会报错。
容易被忽略的兼容性细节
不同安装方式下,$cfg['blowfish_secret'] 的生效路径不同:
- 手动解压部署:只改
config.inc.php即可 - APT/YUM 包安装(如 Ubuntu 的
phpmyadmin包):必须同时改/usr/share/phpmyadmin/config.inc.php和/usr/share/phpmyadmin/libraries/config.default.php - Docker 镜像:密钥常通过环境变量注入,直接改文件可能被覆盖,应优先查镜像文档
最麻烦的情况是密钥改了但提示还在——八成是浏览器缓存了旧 Cookie,或者 Web 服务器(如 Apache)用了 OPcache 缓存了未更新的配置文件,此时需执行 opcache_reset() 或重启服务。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











