能,但必须手动配置多服务器入口;phpmyadmin不区分mysql和mariadb,仅依赖mysqli或pdo_mysql扩展,关键在config.inc.php中正确设置$cfg['servers'][$i]索引,必须从1开始唯一递增,避免覆盖或报错。
能,但必须手动配置多服务器入口,不能靠“自动识别”或改个配置就生效。phpmyadmin 本身不区分 mysql 和 mariadb——它只依赖 mysqli 或 pdo_mysql 扩展,而这两个驱动都能连两者。关键在 config.inc.php 里怎么写、怎么索引、怎么暴露端口和权限。
配置多个服务器时 $cfg['Servers'][$i] 索引必须唯一且从 1 开始递增
常见错误是复制粘贴后漏改 $i,导致后配的覆盖前配的,登录页只显示一个服务器,甚至报错“无效的服务器索引:0”。$i 必须显式自增,且每个块独立。
-
$i++要放在每个服务器块最前面,不能省略或写成$i = 1后反复赋值 - 索引必须是整数,不能用字符串(如
'mysql')或从 0 开始 - 如果用循环动态生成,确保
for ($i = 1; $i 这类结构正确,且 <code>$hosts数组键名是连续数字 - 推荐直接抄
examples/config.manyhosts.inc.php的结构,它就是为这个场景设计的
host/port/user/password 必须显式指定,localhost 容易踩坑
localhost 在 MySQL 和 MariaDB 中行为不一致:MySQL 默认走 socket,MariaDB 可能走 TCP;若混用,127.0.0.1 比 localhost 更可靠。端口也必须写明,尤其当 MySQL 用 3306、MariaDB 用 3307 时。
-
$cfg['Servers'][$i]['host']填真实 IP 或域名,比如'192.168.1.10',别留空或填'localhost' -
$cfg['Servers'][$i]['port']显式写上,如'3306'或'3307',不要依赖默认值 -
$cfg['Servers'][$i]['user']和$cfg['Servers'][$i]['password']要对应各库的实际账号,不能复用 root 密码还忽略权限 -
$cfg['Servers'][$i]['extension']统一设为'mysqli'即可,不用分'mysql'或'mariadb'
Docker 部署时用 PMA_HOSTS/PMA_PORTS 而非单值环境变量
用 docker run 启动时,-ePMA_HOST=... 只支持单库;要连多个,必须用 PMA_HOSTS 和 PMA_PORTS,且值用英文逗号分隔、无空格。
- 命令示例:
docker run -d -p 8000:80 -ePMA_HOSTS=192.168.1.10,192.168.1.11 -ePMA_PORTS=3306,3307 phpmyadmin:latest - 如果两个实例在同一台机器(比如本地测试),IP 都填
127.0.0.1但端口不同,也能正常切换 - Docker Compose 中同样适用:
PMA_HOSTS=172.26.36.7,172.26.36.8,注意网络互通性,容器内 DNS 解析可能失败,优先用宿主机 IP - 该方式不支持单独设置各实例的用户名/密码,登录时需手动输入,适合开发调试;生产环境仍推荐配置文件方式
连不上 MariaDB 时先查 bind-address、用户授权、防火墙三处
报错 #2002 Cannot log in to the MySQL server 不代表 MariaDB 有问题,而是连接被拒。根本原因几乎都出在这三个地方。
- MariaDB 的
bind-address默认常为127.0.0.1或::1,需改成0.0.0.0并重启服务,配置文件通常在/etc/mysql/mariadb.conf.d/50-server.cnf - 用户必须显式授权给 phpMyAdmin 所在机器的 IP,例如:
GRANT ALL ON *.* TO 'pma_user'@'192.168.1.5' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES; - 非标准端口(如 3307)常被防火墙拦截,检查
ufw status或iptables -L,确认已放行 - PHP 扩展是否启用?运行
php -m | grep mysqli确认mysqli已加载,否则配置再对也连不上
最容易被忽略的是索引冲突和 localhost 的 socket 行为差异——前者让配置静默失效,后者让同一配置在 MySQL 和 MariaDB 上表现不一致。实际部署前,建议先用 mysql -h 192.168.1.10 -P 3306 -u user -p 和 mysql -h 192.168.1.11 -P 3307 -u user -p 分别测试命令行连通性,再调 phpMyAdmin。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











