phpMyAdmin 不感知 ProxySQL,仅按 config.inc.php 中手动配置的 $cfg['Servers'][$i] 连接指定地址;ProxySQL 后端节点不会自动出现在其服务器列表中,需为每个后端单独配置且直连真实 MySQL 地址才能显示多个入口。

ProxySQL 后端节点不会自动出现在 phpMyAdmin 的服务器列表里——phpMyAdmin 根本不感知 ProxySQL,它只认你 config.inc.php 里硬写的 $cfg['Servers'][$i] 配置。
phpMyAdmin 压根不和 ProxySQL 打交道
ProxySQL 是 MySQL 流量代理层,运行在数据库网络链路中间;而 phpMyAdmin 是一个纯 PHP Web 应用,它只做一件事:把你在配置文件里填的 host、port、user、password 透传给 PHP 的 mysqli 或 PDO 扩展去连。它既不查询 ProxySQL 的 mysql_servers 表,也不调用 ProxySQL Admin 接口,更不会动态发现后端节点。
所以即使你把 ProxySQL 配置成管理 10 个 MySQL 实例,只要 config.inc.php 里只定义了一个 $cfg['Servers'][1] 指向 127.0.0.1:6033(ProxySQL 监听端口),phpMyAdmin 登录页就只显示一个服务器入口——那个“ProxySQL”本身,而不是它背后的节点。
- ProxySQL 的
mysql_servers表、admin_variables等全是它自己的管理视图,phpMyAdmin 不会、也不能访问 - 你登录 phpMyAdmin 后执行
SHOW PROCESSLIST,看到的Host是 ProxySQL 的 IP(比如127.0.0.1:58224),不是真实后端地址 - 想让 phpMyAdmin “显示多个后端”,唯一办法是手动在
config.inc.php里为每个后端单独配一个$cfg['Servers'][$i],并把host直连写成真实 MySQL 地址(绕过 ProxySQL)
为什么连 ProxySQL 本身也常失败?
即使你把 $cfg['Servers'][1]['host'] = '127.0.0.1'、$cfg['Servers'][1]['port'] = 6033,仍可能卡在 “#1045 Cannot log in” 或 “无法连接到 MySQL 服务器”——这不是 phpMyAdmin 的问题,而是 ProxySQL 认证规则没对齐:
- ProxySQL 要求用户必须在
mysql_users表里显式添加,且active=1、transaction_persistent=0(除非你真需要事务粘滞) - 用户名密码必须和 phpMyAdmin 配置里的
$cfg['Servers'][$i]['user']/$cfg['Servers'][$i]['password']完全一致,ProxySQL 不接受空密码(哪怕 MySQL 允许) - ProxySQL 默认只允许本地
127.0.0.1连接 admin 端口(6032),但客户端端口(6033)需检查mysql_servers是否已上线、status='ONLINE' - 如果 ProxySQL 启用了
mysql-forward-tcp或自定义mysql-query_rules,某些语句(如SELECT @@version)被改写或拦截,phpMyAdmin 初始化阶段就会中断
怎么验证 ProxySQL 是否真被 phpMyAdmin 正确使用?
别信登录页,直接看连接实际走哪条路:
- 在 ProxySQL 主机上执行
SELECT * FROM stats_mysql_connection_pool;,查srv_host和ConnUsed,确认有来自 phpMyAdmin 所在 Web 服务器 IP 的活跃连接 - 在 phpMyAdmin 页面里执行
SELECT @@hostname, @@port;,返回值是 ProxySQL 自己的主机名和端口(如proxysql-host、6033),不是后端 MySQL 的——这说明流量确实经过了 ProxySQL - 关掉 ProxySQL 服务,再刷新 phpMyAdmin 页面:如果立刻报“无法连接到 MySQL 服务器”,说明它连的就是 ProxySQL;如果还能连上,那你配的根本不是 ProxySQL
真正容易被忽略的是:ProxySQL 的 mysql_servers 表变更后必须执行 LOAD MYSQL SERVERS TO RUNTIME,否则新后端永远不生效;而 phpMyAdmin 对这个过程零感知,它只管连你指定的地址——连得通,就是通;连不通,就是配置、网络或 ProxySQL 本身的问题。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











