直接修改config.inc.php中$cfg['servers'][$i]['host']、['port']和['auth_type']即可配置远程mysql,但必须同步完成mysql用户授权(如'username'@'192.168.0.100')、bind-address设为0.0.0.0、防火墙放行及ssl配置(若启用),否则将出现#2003或#1045错误。
config.inc.php 里改 $cfg['servers'][$i]['host'] 和端口就行
phpmyadmin 5.1 远程连接的核心就是改 config.inc.php 中的服务器定义,不是改 config.default.php(那个是模板,不生效)。重点改这三项:$cfg['servers'][$i]['host']、$cfg['servers'][$i]['port']、$cfg['servers'][$i]['auth_type']。
常见错误是只改了 host 却忘了 port ——远程 MySQL 如果用了非默认端口(比如 3307),不显式设 $cfg['Servers'][$i]['port'] = '3307',phpMyAdmin 仍会连 3306,直接报 #2003。
-
$cfg['Servers'][$i]['host']必须填远程服务器 IP 或域名,别写localhost或127.0.0.1(那会让请求打到 phpMyAdmin 自己机器的本地 MySQL) -
$cfg['Servers'][$i]['auth_type']推荐用'cookie';若选'config',用户名密码会明文写在配置里,必须确保config.inc.php无法被 Web 直接下载(靠 Web 服务器配置禁止访问,不是靠 phpMyAdmin 自己) - 如果远程 MySQL 启用了 SSL,必须加
$cfg['Servers'][$i]['ssl'] = true;,否则连接静默失败,页面卡在登录页无提示
MySQL 侧必须创建 '@%' 或具体 IP 的用户
phpMyAdmin 能填对地址 ≠ 能连上。真正拦住你的,是 MySQL 的用户授权机制。它检查两个东西:服务监听地址(bind-address)和用户账号的 Host 字段。缺一不可。
典型错误现象是登录页卡死或报 #1045 Cannot log in to the MySQL server,90% 是因为 MySQL 用户没授权给 phpMyAdmin 所在服务器的 IP。
- 先确认 MySQL 是否监听外部:执行
mysql -e "SHOW VARIABLES LIKE 'bind_address';",如果是127.0.0.1,得改my.cnf里的bind-address = 0.0.0.0并重启mysqld - 创建用户时,
CREATE USER 'pmauser'@'192.168.0.100'比'pmauser'@'%'安全得多——%允许任意 IP 连入,生产环境慎用 - 执行
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'pmauser'@'192.168.0.100';,别轻易用GRANT ALL PRIVILEGES,尤其别带WITH GRANT OPTION - 最后一定跑
FLUSH PRIVILEGES;,否则授权不生效
网络层通不通,得从 phpMyAdmin 服务器上测
浏览器打不开 phpMyAdmin 登录页?那是 Web 服务问题。能打开但输完账号密码没反应或报 #2003?那基本是网络或 MySQL 服务端问题。关键点:连接是 PHP 进程发起的,不是浏览器直连,所以测试必须从 phpMyAdmin 所在机器出发。
- 用
telnet 192.168.0.200 3307或nc -zv 192.168.0.200 3307测试端口是否可达。不通就别调 phpMyAdmin 配置了 - 检查远程 MySQL 服务器的防火墙:Linux 上看
ufw status或firewall-cmd --list-ports,云服务器还要查安全组规则是否放行对应端口 - MySQL 8.0+ 默认认证插件是
caching_sha2_password,老版本 PHP(如 7.2 以下)可能不兼容,报错Authentication plugin 'caching_sha2_password' cannot be loaded。解决办法是建用户时指定插件:CREATE USER 'pmauser'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
多个远程服务器怎么加
phpMyAdmin 5.1 支持同时管理多个 MySQL 实例,靠的是递增 $i 索引。别手动写死 $i = 0 或 $i = 1,用自增逻辑更稳。
- 起始点:找到
config.inc.php里类似$i = 0;的行,注释掉或删掉 - 第一个远程服务器:用
$i++;开头,然后设$cfg['Servers'][$i]['host']等参数 - 第二个:再
$i++;,重复填参数。每加一个服务器就多一次$i++ - 注意:
$cfg['Servers'][$i]['auth_type']每个实例可以不同,比如一个用cookie,另一个用http,互不影响
最容易被忽略的是:所有改动都发生在 phpMyAdmin 所在服务器上,MySQL 服务端的配置、用户、防火墙,一个都不能少——光改 config.inc.php 就想连上,纯属幻想。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











