必须手动在config.inc.php中配置$cfg['servers']数组,索引从1开始连续,且设$cfg['serverdefault']=0;否则因php解析失败或索引断续,phpmyadmin遍历到首个错误即终止加载,导致新服务器不显示在登录页下拉列表。
能配,但必须手动写数组、索引从 1 开始连续、$cfg['serverdefault'] = 0 必须设,漏任何一项都会导致新服务器不显示在登录页下拉列表里。
为什么改完 config.inc.php 后新服务器不显示在下拉菜单
根本原因只有两个:PHP 解析失败(比如少分号、引号不闭合),或 $cfg['Servers'] 索引不连续。phpMyAdmin 启动时遍历该数组,遇到第一个空值或语法错误就停,后面全丢弃。
-
$cfg['Servers'][1]和$cfg['Servers'][3]中间缺了[2],旧版本会直接跳过[3] - 复制配置块时忘了改索引,导致
$cfg['Servers'][2]覆盖了前一个[2] - 没注释掉原始的
$i = 0;,又自己写$cfg['Servers'][1],造成逻辑冲突 -
$cfg['ServerDefault']没设,或设成了1(表示只默认连第一个,不显示切换菜单)
auth_type = 'http' 在多服务器下为什么几乎不可用
HTTP 认证由 Apache/Nginx 接管,phpMyAdmin 拿不到用户选的是哪台服务器,所有实例只能共用同一套账号密码,且无法透传 SSL 参数。
- 启用
auth_type = 'http'后,$cfg['Servers'][$i]['user']和$cfg['Servers'][$i]['password']完全被忽略 - 若某台 MySQL 强制 SSL(
require_secure_transport=ON),连接必失败 - 真实场景中,坚持用
'cookie'最稳妥:登录页选服务器,凭据走 session 管理
本地多实例(如 3307/3308 端口)怎么填 host/port/socket
TCP 连接必须显式写 host 和 port;走 socket 则 host 留空,只填 socket 路径,二者不能共存。
- 本地端口实例:
$cfg['Servers'][2]['host'] = '127.0.0.1'; $cfg['Servers'][2]['port'] = '3307'; - 本地 socket 实例:
$cfg['Servers'][3]['host'] = '';+$cfg['Servers'][3]['socket'] = '/tmp/mysql.sock'; - 混用
host和socket会导致连接绕过权限校验,甚至连上错误实例 - 若目标 MySQL 绑定在
127.0.0.1而非localhost,别写'localhost'——它可能触发 socket 查找而非 TCP
最易被忽略的是索引连续性与 $cfg['ServerDefault'] = 0 的组合;只要这两项出错,其他参数再对也白搭。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











