phpMyAdmin多服务器配置必须手动编辑config.inc.php,核心是确保$cfg['Servers']索引从1开始连续且无语法错误,否则后续配置被丢弃;推荐auth_type='cookie'并为每台服务器显式设置host、verbose等参数。
直接改 config.inc.php,别指望界面点点就能加服务器——phpmyadmin 的“新建服务器”功能在多数生产部署中根本不可用,它只在通过 /setup 页面初始化配置时起作用,且生成的配置常缺关键字段(比如 auth_type 或 verbose),导致新条目加载失败。
为什么服务器列表里只显示一个或干脆空白
根本原因就两个:PHP 解析 config.inc.php 时遇到语法错误,或者 $cfg['Servers'] 数组索引没从 1 开始连续编号。phpMyAdmin 启动时会按 $i = 1, 2, 3... 顺序读取,一旦某一项是空、重复、跳号(比如写了 [1] 和 [3]),它就停在那里,后续全丢弃。
- 检查 PHP 错误日志,常见报错如
Parse error: syntax error, unexpected '}',说明某个配置块少括号或分号 - 确认所有服务器配置都落在
$cfg['Servers'][1]、$cfg['Servers'][2]、$cfg['Servers'][3]… 上,不能有[0],也不能中间断档 - 避免在配置里混用
if/include动态逻辑——除非你明确知道$i在每个分支里都被正确递增并唯一赋值
内网多服务器必须填对的三个参数
内网环境看似简单,但最容易栽在连接方式上:不是所有“本地”都该走 host='localhost' + port=3306。MySQL 默认对 localhost 特殊处理,会强制走 socket,而你的内网服务器大概率是另一台机器,必须显式指定协议和地址。
-
host填 IP(如'10.10.2.5'),别填'localhost'或'127.0.0.1'——后者可能被 MySQL 当成本地 socket 连接,绕过网络权限检查 -
connect_type显式设为'tcp',防止 phpMyAdmin 自作主张选 socket - 如果目标 MySQL 启用了
require_secure_transport=ON,必须补上$cfg['Servers'][$i]['ssl'] = true;,否则连接直接被拒,错误提示只有模糊的#2002 Cannot log in to the MySQL server
auth_type = 'cookie' 是唯一靠谱的选择
别碰 'http',它在多服务器下完全失效;也慎用 'config',密码明文写死在文件里,只要 web 目录权限出问题就全泄露。内网环境用 'cookie' 最稳:登录页会列出所有已配服务器,选完再输账号密码,凭据存在 session 里,不落地、可切换、权限隔离清晰。
- 每个
$cfg['Servers'][$i]['auth_type'] = 'cookie';必须单独写,不能靠循环外统一赋值(容易漏) - 务必配
$cfg['Servers'][$i]['verbose'],比如'Dev DB (MariaDB 10.6)',不然下拉列表里全是10.10.2.5这种裸 IP,根本分不清哪台是哪台 - 如果某台服务器只允许特定用户登录(比如只给
backup_user),就在对应块里加$cfg['Servers'][$i]['user'] = 'backup_user';,但auth_type仍保持'cookie',这样登录页选完服务器后,输入框默认填的就是这个用户名
最常被忽略的一点:改完 config.inc.php 后,不要只刷新浏览器——先用 php -l /path/to/config.inc.php 检查语法,再清掉浏览器 cookie 和 phpMyAdmin 的 session 文件(通常在 /var/lib/php/sessions/),否则旧缓存可能让你以为配置没生效。
立即学习“PHP免费学习笔记(深入)”;



















