能,但必须严格按规范修改 config.inc.php:服务器索引须从 1 开始连续递增,不可跳号、重复或为 0;需启用 mysqli 扩展、避免端口冲突;推荐用预定义关联数组配合循环赋值,杜绝手动递增出错。

能,但必须改 config.inc.php,且不能只靠“添加多个 $cfg['Servers'] 块”就完事——索引错、扩展没启、服务端口冲突,三者任一都会导致下拉列表空白或登录失败。
config.inc.php 中服务器索引必须从 1 开始连续递增
phpMyAdmin 要求 $cfg['Servers'][$i] 的 $i 严格从 1 开始,且不能跳号、不能重复、不能为 0。手动写 $i = 0; $i++; 再赋值极易出错,尤其在复制粘贴后容易漏掉递增逻辑。
- 错误写法:
$i = 0; $cfg['Servers'][$i]['host'] = 'localhost'; $i++; $cfg['Servers'][$i]['host'] = '192.168.1.100';—— 第一个配置实际用了索引 0,phpMyAdmin 直接忽略 - 正确做法:用数组 + 循环结构,例如定义
$connect_hosts = [1 => ['host' => 'localhost', ...], 2 => ['host' => '192.168.1.100', ...]];,再for ($i = 1; $i - 更稳妥的方式是直接参考 phpMyAdmin 自带的
examples/config.manyhosts.inc.php,它已验证过索引生成逻辑
每个 MySQL 实例必须监听不同端口,且 IIS 下的 PHP 必须能连通
Windows 上跑多个 MySQL,不能都绑 3306。哪怕一个用 localhost:3306,另一个也得设成 localhost:3307 或 127.0.0.1:3308,否则启动第二个服务时会报 Can't start server : Bind on TCP/IP port: Address already in use。
- 确认方式:进每个 MySQL 的
my.ini,检查[mysqld]段下的port值是否唯一 - IIS 下 PHP 连接时,
$cfg['Servers'][$i]['port']必须显式填对,留空会默认走 3306,连不上就卡在登录页或报#2002 Cannot log in to the MySQL server - 别用
localhost混淆:Windows 下localhost可能走命名管道,而127.0.0.1强制走 TCP;若连接异常,统一改用127.0.0.1+ 显式端口更可靠
PHP 扩展和 DLL 文件必须匹配,且路径要对
IIS 环境下,php_mysqli.dll 或 php_mysql.dll(PHP 5.x)未加载,会导致 phpMyAdmin 根本不显示 MySQL 相关选项,甚至整个界面报错 The mysqli extension is missing。
立即学习“PHP免费学习笔记(深入)”;
- 检查
phpinfo()页面里有没有mysqli或mysql模块 —— 没有就说明扩展没启用 - 确认
php.ini中extension_dir指向的是真实存在的ext/目录,且extension=php_mysqli.dll前面的分号已删 - Windows Server 2003/IIS6 等老环境还需把
libmysql.dll(MySQL 5.x)或libmariadb.dll(MariaDB)拷到C:\Windows\System32,否则扩展加载失败,错误日志里常出现PHP Warning: PHP Startup: Unable to load dynamic library 'php_mysqli.dll'
最易被忽略的一点:IIS 应用程序池的“加载用户配置文件”必须设为 True(尤其在 Windows Server 2003/2008),否则 PHP 无法读取系统级 DLL,mysqli 扩展看似启用实则静默失效 —— 这个开关藏在 IIS 管理器 → 应用程序池 → 高级设置里,不是 phpMyAdmin 配置能解决的。



















