能,phpMyAdmin可通过mysqli/pdo_mysql驱动同时连接MySQL与MariaDB,但须手动配置多服务器入口:每个实例用唯一递增$i索引、显式host/port、禁用localhost、统一设extension为mysqli,并确保MariaDB开放远程访问及对应用户授权。

能,但必须手动配置多服务器入口,不能靠“自动识别”或“开箱即用”。phpMyAdmin 本身不区分 MySQL 和 MariaDB——它只依赖 mysqli 或 pdo_mysql 扩展,而这两个驱动都能连两者。关键在 config.inc.php 里写对索引、地址、端口和权限。
怎么写 $cfg['Servers'] 才不覆盖、不报错?
常见错误是复制粘贴后漏改 $i 自增变量,导致后配的服务器覆盖前配的。每个实例必须有唯一递增的 $i 索引,且不能只改 host 或 port 就以为区分开了。
-
$i++必须显式出现,且每次新增服务器都执行一次(比如从$i = 0开始,第一个服务器前写$i++) -
$cfg['Servers'][$i]['host']填真实 IP,别用localhost——它在 MySQL 和 MariaDB 下可能走 socket 或 TCP,行为不一致 -
$cfg['Servers'][$i]['port']显式写上,尤其当 MySQL 是3306、MariaDB 是3307时 -
$cfg['Servers'][$i]['extension']统一设为mysqli即可,不用分“mysql”或“mariadb”
连 MariaDB 时提示 #2002 Cannot log in to the MySQL server 怎么办?
这个错误和 MariaDB 本身无关,是连接阶段被拒。最常踩的坑有三个:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- MariaDB 的
bind-address默认可能是127.0.0.1或::1,没放开远程 IP;检查/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; - 防火墙拦了非标准端口(比如
3307),确认ufw status或iptables -L放行了对应端口
Ubuntu 安装后为什么 root 登录不了 phpMyAdmin?
Ubuntu 20.04+ 默认用 auth_socket 插件验证 root,不支持密码登录,直接破坏 phpMyAdmin 的标准流程。
立即学习“PHP免费学习笔记(深入)”;
- 不要试图改
root的认证方式,容易引发系统服务异常 - 创建专用用户:用
sudo mariadb进入,执行CREATE USER 'pmaadmin'@'localhost' IDENTIFIED BY 'strong-pass'; - 授全权:
GRANT ALL PRIVILEGES ON *.* TO 'pmaadmin'@'localhost'; FLUSH PRIVILEGES; - 该用户密码填进 phpMyAdmin 配置的
$cfg['Servers'][$i]['password'],或登录时手动输
真正容易被忽略的是:$i 索引冲突和 localhost 地址歧义。这两个问题不解决,再多的权限配置或防火墙放行都白搭。


















