phpMyAdmin 不支持多服务器并发监控,因其架构为单会话、单服务器绑定,登录后仅复用当前连接,无后台轮询或多连接管理机制,所有状态数据均来自已认证的单一实例。

phpMyAdmin 本身不支持在单个界面中聚合显示多台服务器的并发连接数。它每次只连接并展示当前已登录的那台服务器的状态,SHOW STATUS LIKE 'Threads_connected' 的结果仅反映该实例的实时连接状态。
为什么“多服务器并发监控”在 phpMyAdmin 里行不通
phpMyAdmin 的架构是单会话、单服务器绑定的:登录时选择一台服务器 → 建立一个 mysqli/pdo 连接 → 所有操作(包括“状态”页)都复用这个连接。它没有后台轮询或多连接管理机制,也不会主动连接未登录的其他 $cfg['Servers'] 实例。
- 你看到的“进程列表”或“状态”页,数据完全来自当前已认证的那台 MySQL 实例,和其他配置好的服务器无关
- 即使所有服务器都已定义在
$cfg['Servers']中,phpMyAdmin 也不会在登录后自动探测或拉取其余服务器的Threads_connected -
AllowArbitraryServer或auth_type = cookie只影响登录入口,不改变运行时连接模型
替代方案:用脚本批量查 Threads_connected
真要集中看多台服务器的并发连接数,得绕过 phpMyAdmin,直接用命令行或轻量脚本。前提是这些服务器对当前 Web 服务器(或你的终端)网络可达、账号有 PROCESS 权限:
- 写一个 PHP 脚本,循环遍历你的
$hosts数组,用mysqli_connect()分别连每台,执行SHOW STATUS LIKE 'Threads_connected',汇总输出 - 或者用 shell +
mysql命令批量查(适合运维场景):for host in "192.168.1.10:3306" "db-test:3307"; do echo "== $host ==" mysql -h $(echo $host | cut -d: -f1) -P $(echo $host | cut -d: -f2) -u monitor -p'pass' -Nse "SHOW STATUS LIKE 'Threads_connected'" 2>/dev/null | awk '{print $2}' done - 注意:MySQL 用户必须被授权从 Web 服务器 IP 连接(如
monitor@'web-server-ip'),且不能仅限localhost
如果非要“在 phpMyAdmin 界面里看”,只能手动切换
这是最接近但效率最低的方式:
立即学习“PHP免费学习笔记(深入)”;
- 登录 phpMyAdmin,从下拉框选第一台服务器 → 进入“状态”页 → 记下
Threads_connected值 - 点击右上角用户名 → “退出” → 回到登录页 → 换第二台服务器 → 重复
- 不能开多个标签页同时保持不同服务器登录态:因为每个 phpMyAdmin 实例使用独立
session_name()和 cookie path,浏览器不会共享登录态 - 强行开多个标签页,切过去时大概率触发重新登录(尤其在宝塔等多站点部署下)
真正需要统一监控多实例连接数,应该用 Prometheus + mysqld_exporter + Grafana 这类专用工具;phpMyAdmin 的定位是交互式数据库操作终端,不是分布式状态仪表盘——这点容易被忽略,但恰恰是配置和预期落差的根源。



















