phpMyAdmin 4.9 仅支持逐个连接 MariaDB 集群单节点,不支持自动故障转移或负载均衡;配置需严格按索引递增、无空值断档,且各节点须开放远程访问并授权对应IP权限。

phpMyAdmin 4.9 不支持直接管理 MariaDB 集群节点切换
它只能作为「只读连接前端」,逐个连接集群里的单个节点(比如 node1、node2),无法感知 Galera 状态、自动故障转移或负载均衡。你配置的仍是独立的 MySQL/MariaDB 实例连接,不是“集群连接”。所有节点必须单独开放远程访问权限,并各自提供独立的用户账号。
$cfg['Servers'] 索引必须从 1 开始严格递增,不能跳号或重用
phpMyAdmin 4.9 遍历 $cfg['Servers'] 数组时,遇到第一个空值、语法错误(如漏分号)、或索引断档(比如只有 [1] 和 [3]),就会中止加载——后续节点完全不会出现在登录页下拉列表里。
- 开头必须写
$i = 0;,然后每个节点前都用$i++; - 不能手写
$cfg['Servers'][1]、$cfg['Servers'][2]后忘了改索引 - 每个节点块必须包含
'host'(或'socket')和'auth_type',缺一不可 - 别在配置块中间插
// 注释,PHP 会把它当字符串拼进数组导致解析失败
连接 MariaDB 节点时出现 #2002 Cannot log in to the MySQL server
这错误跟 phpMyAdmin 或集群无关,是底层 TCP 连接被拒。三个最常踩的坑:
-
bind-address在/etc/mysql/mariadb.conf.d/50-server.cnf中仍为127.0.0.1或::1,需显式改成0.0.0.0并重启mariadb - 用户权限没授权给 phpMyAdmin 所在机器的 IP,例如执行:
GRANT ALL ON *.* TO 'pma_user'@'192.168.1.5' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES; - 防火墙(
ufw/firewalld)或云厂商安全组未放行对应端口(如 3306、3307)
用循环动态生成配置比硬编码更可靠
手动复制粘贴容易漏改 $i 或端口,推荐用数组 + foreach 统一处理。示例片段(加到 config.inc.php 底部):
$hosts = [
1 => ['host' => '192.168.1.10', 'port' => 3306, 'verbose' => 'Galera Node 1'],
2 => ['host' => '192.168.1.11', 'port' => 3306, 'verbose' => 'Galera Node 2'],
3 => ['host' => '192.168.1.12', 'port' => 3306, 'verbose' => 'Galera Node 3'],
];
<p>$i = 0;
foreach ($hosts as $idx => $h) {
$i++;
$cfg['Servers'][$i]['host'] = $h['host'];
$cfg['Servers'][$i]['port'] = $h['port'] ?? 3306;
$cfg['Servers'][$i]['verbose'] = $h['verbose'];
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['extension'] = 'mysqli';
}
注意:所有节点的 'extension' 都设为 mysqli 即可,不用区分 MySQL/MariaDB;'localhost' 尽量避免使用,它可能走 Unix socket(MySQL)或 TCP(MariaDB),行为不一致。



















