如果希望 phpMyAdmin 启动时先显示登录页面,并把所有已配置的服务器逐项列出来供选择,就需要关闭默认的单服务器直连模式:确保 $cfg['Servers'] 的索引从 1 开始;每个服务器配置块都必须包含 host 以及 auth_type='cookie';同时删除 user、password 和 auth_type='config' 这类自动登录字段,配置好 blowfish_secret 后,再重启 Web 服务即可。

如果你想让 phpMyAdmin 启动时不自动连接默认服务器,本质上就是关闭“单服务器直连模式”,改为显示登录页,并将所有已配置的 MySQL 服务器列出来,让用户手动选择。默认情况下,比如只配置了 $cfg['Servers'][1],但没有把 auth_type 设置为 cookie,phpMyAdmin 往往会跳过登录页面,直接连接第一个服务器;连接失败就报错,连接成功则直接进入首页,用户也就看不到服务器选择下拉框。
确认 $cfg['Servers'] 索引从 1 开始且不为空
phpMyAdmin 只识别类似 $cfg['Servers'][1]、$cfg['Servers'][2] 这样的显式索引,[0] 通常会被忽略。如果只配置一个服务器却写成:
$cfg['Servers'][0]['host'] = 'localhost';
那么该配置不会生效,甚至可能因为数组结构异常导致登录页面空白。因此必须确保:
- 第一个服务器使用
$cfg['Servers'][1],第二个服务器使用$cfg['Servers'][2],后续依次递增 - 每个
$cfg['Servers'][$i]配置块中,至少要包含host和auth_type - 不要在
if语句或函数内部动态赋值$cfg['Servers'][$i],以免因作用域问题导致配置失效
必须显式设置 auth_type = 'cookie'
这是控制 phpMyAdmin 是否显示登录页的关键设置。如果遗漏这一项,或者写成 'config',phpMyAdmin 就会跳过登录界面,直接连接数据库服务器。正确写法如下:
$cfg['Servers'][1]['auth_type'] = 'cookie';
$cfg['Servers'][2]['auth_type'] = 'cookie';
需要注意的是:cookie 是唯一能够触发“登录页 + 服务器下拉列表”显示的认证方式;http 会弹出浏览器的基础认证窗口;而 config 则会完全绕过登录页,直接自动登录。
此外,还必须配置 $cfg['blowfish_secret'](即使只是一个随机字符串也可以),否则 cookie 认证可能失效,进而出现页面空白、白屏或反复跳回登录页的问题。
删掉或注释掉自动登录相关字段
请检查 config.inc.php 中是否存在以下配置,如果有,建议删除或使用 // 注释掉:
$cfg['Servers'][$i]['user'] = 'root';$cfg['Servers'][$i]['password'] = 'xxx';$cfg['Servers'][$i]['auth_type'] = 'config';(这一项尤其需要修改)
只要任意一个服务器配置块中存在 user + password + auth_type = 'config' 的组合,phpMyAdmin 就会优先使用这组凭据自动连接,导致登录页面根本不会显示。
多服务器配置必须用循环或显式索引,不能靠“复制粘贴+手调$i”
手动复制两段几乎相同的配置,再靠自己维护 $i=1、$i=2,非常容易出错。更可靠的做法是使用数组配合 foreach 循环(新版 config.manyhosts.inc.php 也是采用这种方式):
$servers = [
['host' => '192.168.1.10', 'verbose' => 'Dev DB'],
['host' => 'prod-db.myqcloud.com', 'verbose' => 'Prod CDB']
];
foreach ($servers as $i => $server) {
$cfg['Servers'][$i+1]['host'] = $server['host'];
$cfg['Servers'][$i+1]['verbose'] = $server['verbose'];
$cfg['Servers'][$i+1]['auth_type'] = 'cookie';
}
这样不仅可以避免索引混乱,还更方便管理多服务器配置;以后新增、删除或修改服务器信息时,只需要调整数组内容即可,无需手动修改索引编号。
最后提醒一下:修改完 config.inc.php 后,一定要重启 Web 服务(例如 sudo systemctl restart apache2 或 sudo service httpd restart),否则 PHP 缓存可能会导致配置没有立即生效;如果你使用的是 WAMP,记得执行“重启所有服务”,而不是只重启 Apache。
