phpmyadmin 不会自动添加 blowfish_secret,所谓“自动”实为发行版安装脚本(如 ubuntu 的 postinst)生成并写入,或用户误将 config.default.php 当作生效文件编辑所致。
phpmyadmin 不会在配置文件中「自动添加」随机的 blowfish_secret。这个说法是常见误解——它从不自动生成、写入或修改你的 config.inc.php 文件。
你看到的所谓“自动添加”,通常只有两种真实情况:
-
你用的是某些 Linux 发行版(如 Ubuntu/Debian)打包的 phpMyAdmin,其安装脚本在
postinst阶段主动执行了一次生成并写入,例如:echo "<?php \$cfg['blowfish_secret'] = '"$(openssl rand -base64 32 | tr -d '\n')"';" > /var/lib/phpmyadmin/blowfish_secret.inc.php
然后在config.inc.php里通过include()加载它。这看起来像“自动”,其实是包管理器行为,不是 phpMyAdmin 自身逻辑。 你误把
config.sample.inc.php或config.default.php当成了生效文件,而它们里面确实有带注释的$cfg['blowfish_secret'] = '';模板行——但这只是示例,不会被加载,更不会“自动填值”。
真正关键的事实是:
-
phpMyAdmin启动时只读取config.inc.php,且完全不修改它 - 所有密钥必须由你手动(或通过部署脚本)生成并填入,且必须满足:
- 长度 ≥ 32 字符(新版强制要求恰好 32)
- 位置在任何
$cfg['Servers']配置之前 - 使用单引号包裹,不含未转义的
$、{、换行或空格
最容易被忽略的一点:即使你填了 32 字符,如果 $cfg['Servers'][$i]['auth_type'] 不是 'cookie',这个密钥就根本不会被用到——此时报错“需要短语密码”其实是误导,真正问题在认证模式没配对。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











