登录页只显示一个服务器是因为$cfg['Servers'][$i]索引未从1开始连续递增,或配置被条件语句跳过、重复赋值覆盖;必须用统一$i++动态生成且各服务器host/port/auth_type完整独立。

能,但关键不在 phpMyAdmin 本身,而在于 config.inc.php 中服务器配置的索引方式和连接参数是否真正独立、可区分。手动递增 $i 或混用条件块极易导致只显示一个服务器,甚至白屏。
为什么登录页只看到一个服务器?
根本原因是 $cfg['Servers'][$i] 的索引没对齐:phpMyAdmin 要求每个服务器必须有从 1 开始、连续且唯一的整数索引;如果 $i 在 if/else 或循环外被重复赋值,或在多个配置块中未统一管理,后定义的配置会覆盖前一个,最终只剩最后一个生效。
常见错误包括:
- 在不同位置分别写
$i = 0; $i++; $cfg['Servers'][$i] = [...];两次,但第二次没重置$i,导致索引错乱 - 把第二个服务器配置放在
if (isset($_SERVER['REMOTE_ADDR'])) { ... }里,运行时该条件不成立,配置直接被跳过 - 复制粘贴时漏改
host或port,两个配置实际指向同一实例,界面虽显示两个条目,但点击后连的都是 localhost
正确配置多个局域网 MySQL 实例的步骤
以管理本机(localhost:3306)、Docker 容器(172.18.0.2:3307)、另一台开发机(192.168.1.105:3306)为例,全部写入 config.inc.php 末尾(不要嵌套在任何条件语句中):
立即学习“PHP免费学习笔记(深入)”;
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
$i = 0; <p>// 服务器 1:本机 $i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['port'] = '3306'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'local_pass'; $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['AllowNoPassword'] = false;</p><p>// 服务器 2:Docker 容器(需确保宿主机能直连该 IP+端口) $i++; $cfg['Servers'][$i]['host'] = '172.18.0.2'; $cfg['Servers'][$i]['port'] = '3307'; $cfg['Servers'][$i]['user'] = 'devuser'; $cfg['Servers'][$i]['password'] = 'docker_pass'; $cfg['Servers'][$i]['auth_type'] = 'config';</p><p>// 服务器 3:局域网另一台 Windows 开发机 $i++; $cfg['Servers'][$i]['host'] = '192.168.1.105'; $cfg['Servers'][$i]['port'] = '3306'; $cfg['Servers'][$i]['user'] = 'remote_admin'; $cfg['Servers'][$i]['password'] = 'remote_pass'; $cfg['Servers'][$i]['auth_type'] = 'config';
注意:
- 每段前必须有
$i++,且不能省略或挪到别处 -
host填 IP 地址而非域名(避免 DNS 解析失败),确保 IIS 所在机器能ping通且telnet 192.168.1.105 3306成功 - 远程 MySQL 必须已授权该 IP 访问:
GRANT ALL ON *.* TO 'remote_admin'@'192.168.1.%' IDENTIFIED BY 'remote_pass'; FLUSH PRIVILEGES; - 若远程 MySQL 绑定在
127.0.0.1,需改my.ini中的bind-address = 0.0.0.0并重启服务
IIS 下 phpMyAdmin 连接失败的典型表现与排查
配置完仍连不上,先看错误信息再动手:
-
mysqli::real_connect(): (HY000/1130): Host '192.168.1.100' is not allowed to connect to this MySQL server→ 远程 MySQL 未授权该客户端 IP,不是 phpMyAdmin 或 IIS 的问题 -
Connection refused→ 检查目标 MySQL 是否运行、端口是否监听(netstat -ano | findstr :3306)、防火墙是否放行对应端口(尤其是 Windows 防火墙入站规则) - 空白页或 500 错误 → 检查
config.inc.php语法(多逗号、少分号、中文标点),用php -l config.inc.php验证 - 登录页有下拉列表但选完跳转后报
Cannot log in to the MySQL server→ 密码错误或auth_type不匹配(比如设成cookie却没配控制用户)
Windows IIS 环境下尤其要注意:PHP 是以 FastCGI 还是 ISAPI 模式运行,会影响 php.ini 加载路径和扩展启用方式,但不影响 phpMyAdmin 多服务器逻辑——只要 mysqli 或 mysqlnd 扩展已启用,连接行为完全由配置文件驱动。
最易被忽略的是:所有服务器的 auth_type 必须一致(推荐全用 config),且不能混用 controluser 和普通用户;一旦启用了 controluser,所有服务器都得配,否则部分连接会静默失败。


















