能,phpMyAdmin 5.2 通过 mysqli 扩展可同时连接 MySQL 和 MariaDB,需手动配置多服务器入口、唯一 $i 索引、显式 host/port、开放远程访问及授权,并注意版本差异导致的语法、对象显示和权限管理限制。
phpMyAdmin 5.2 能不能同时连 MySQL 和 MariaDB?
能,但不是“自动切换”或“识别后端类型”——phpmyadmin 本身不关心你连的是 mysql 还是 mariadb,它只依赖 php 的 mysqli 或 pdo_mysql 扩展。只要扩展装好了、连接参数对了,两者都支持。冲突通常来自配置写法错误,而不是版本不兼容。
多服务器配置时 $cfg['Servers'][$i] 索引重复导致覆盖
这是最常踩的坑:复制粘贴服务器块后,忘了改 $i++ 或直接用固定数字(比如全写成 $cfg['Servers'][1]),结果后一个配置把前一个顶掉,只剩最后一个生效。
- 必须用递增的整数索引,从
1开始,且每个块开头要有独立的$i++ - 不要手动写死
$cfg['Servers'][1]、$cfg['Servers'][1]—— 即使只配两个,也要靠$i自增保证唯一性 - 检查
config.inc.php里有没有漏掉$i = 0;初始化(否则$i++会报未定义变量) - 示例正确写法:
$i = 0;<br>$i++;<br>$cfg['Servers'][$i]['host'] = '192.168.1.10';<br>$cfg['Servers'][$i]['port'] = '3306';<br>$cfg['Servers'][$i]['verbose'] = 'MySQL 8.0';<br><br>$i++;<br>$cfg['Servers'][$i]['host'] = '192.168.1.11';<br>$cfg['Servers'][$i]['port'] = '3307';<br>$cfg['Servers'][$i]['verbose'] = 'MariaDB 10.11';
连接 MariaDB 时出现 #2002 Cannot log in to the MySQL server
这个错误提示很误导人,实际和 MariaDB 版本无关,纯粹是网络层或权限层拒绝连接。重点排查三处:
-
bind-address是否放开远程访问:MariaDB 默认可能只监听127.0.0.1,需在/etc/mysql/mariadb.conf.d/50-server.cnf中设为bind-address = 0.0.0.0,然后重启服务 - 用户授权是否包含 phpMyAdmin 所在机器的 IP:执行
GRANT ALL ON *.* TO 'pma_user'@'192.168.1.5' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;,别只授@'localhost' - 防火墙是否放行非标端口:MariaDB 若跑在
3307,确认ufw status或iptables -L允许该端口入站
MySQL 与 MariaDB 在 phpMyAdmin 中显示差异怎么处理?
两者 SQL 语法和系统表结构有细微差别,会导致部分功能异常,比如存储过程列表为空、视图定义显示不全、或权限页报错。这不是配置问题,而是驱动层兼容性限制:
- 保持
$cfg['Servers'][$i]['extension'] = 'mysqli',不要尝试切mysql(已废弃)或pdo_mysql(虽可用,但 phpMyAdmin 对 PDO 的元数据支持不如 mysqli 稳定) - 避免在 MariaDB 实例中启用
unix_socket认证插件——phpMyAdmin 不支持,会直接卡在登录页 - 如果某实例显示“无权限查看”或对象列表为空,先用命令行
mysql -h host -P port -u user -p验证能否查SHOW DATABASES;和SELECT * FROM information_schema.TABLES LIMIT 1;,排除数据库侧权限或视图权限问题
配置真正生效的关键不在“加了多少个服务器”,而在于每个 $cfg['Servers'][$i] 块是否独立、可寻址、且底层网络和权限真实通达。漏掉任意一环,都会表现为“只能连一个”或“连上但看不到库”。
立即学习“PHP免费学习笔记(深入)”;



















