能,phpmyadmin通过mysqli协议同时连接mysql和mariadb,关键在于配置多个独立$cfg['servers'][$i]条目($i连续递增)、端口不冲突、认证插件兼容(如设为mysql_native_password)、mysqli扩展启用且客户端库匹配。
能,但关键不在“版本混合”,而在配置是否隔离、认证是否兼容、连接是否可达——phpmyadmin 本身不感知 mysql 或 mariadb 的版本号,只认 mysqli 协议和你填的 host/port/user。
多个服务器必须用不同 $i 索引且端口不冲突
phpMyAdmin 把每个服务器当作独立条目处理,$cfg['Servers'][$i] 的 $i 必须是连续整数(1、2、3…),跳号或重复会导致部分服务器消失在登录下拉列表里。
- MySQL 8.0 默认监听
3306,MariaDB 11.4 若装在同一台机器,必须改到其他端口(如3307),并在my.cnf中确认bind-address = 0.0.0.0(不是localhost) -
$cfg['Servers'][$i]['host']别混用localhost和127.0.0.1:前者在 Linux 上可能走 Unix socket,后者强制走 TCP,行为不一致,容易一个通一个不通 - 示例配置片段(追加在
config.inc.php末尾):
$i++; $cfg['Servers'][$i]['host'] = '127.0.0.1'; $cfg['Servers'][$i]['port'] = '3307'; $cfg['Servers'][$i]['verbose'] = 'MariaDB 11.4 dev'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = ''; $cfg['Servers'][$i]['password'] = '';
认证插件不匹配会直接拒绝登录
MariaDB 10.4+ 默认用 unix_socket 插件认证 root 用户,而 phpMyAdmin 的 mysqli 扩展不支持该流程,结果就是 #1698 Access denied for user 'root'@'localhost'。
- 临时验证:用命令行连
mysql -h 127.0.0.1 -P 3307 -u root -p,如果连不上,phpMyAdmin 肯定也连不上 - 永久修复需两步:在
/etc/mysql/mariadb.conf.d/50-server.cnf的[mysqld]段加default_authentication_plugin = mysql_native_password,然后重启mariadb服务 - 已有用户必须重置认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('yourpass'); - 别设
auth_type = 'config'—— 它会绕过密码直接尝试 socket 连接,在 MariaDB + unix_socket 场景下必挂
mysqli 扩展必须启用且客户端库要匹配
phpMyAdmin 5.0+ 已彻底弃用旧的 mysql 扩展,只依赖 mysqli。如果它没启用,或加载的是 mysqlnd 而非 MariaDB 官方客户端库,就可能出现空白页或 #2002 Cannot log in to the MySQL server。
- 运行
php -m | grep mysqli确认模块已加载;检查phpinfo()页面中 “Client API library version” 是否显示类似10.11.8-MariaDB,而不是mysqlnd 8.2.12 - 确保
php.ini中有extension=mysqli(不是pdo_mysql,也不是注释掉的状态) - Apache/Nginx 重启后才生效,光改配置不重启等于没改
最容易被忽略的点是:你以为在连“不同版本”,其实 phpMyAdmin 只看到两个 IP:PORT 组合;真正卡住你的,往往是 MariaDB 的认证插件、bind-address 配置、或者 mysqli 模块根本没加载——这些和 MySQL/MariaDB 的“版本号”无关,只和底层连接链路是否通畅有关。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











