phpMyAdmin 连 RDS 必须用 TCP 连接并配置 SSL 证书校验:需设 'connect_type' => 'tcp'、'socket' => '',host 填 RDS 域名,SSL 启用 VERIFY_CA 或 VERIFY_FULL 并指定绝对路径 CA 证书。
phpMyAdmin 连 RDS 必须用 TCP,不能用 socket
远程数据库(比如阿里云 rds、aws rds)没有本地 unix socket 文件,$cfg['servers'][$i]['socket'] 必须留空或显式设为 '',否则 phpmyadmin 会静默 fallback 到 localhost 并尝试走 socket,最终连上的是本机 mysql 而非 rds。
同时必须设置:$cfg['Servers'][$i]['connect_type'] = 'tcp';
- 不设或设错会导致连接成功但操作的是错的实例(尤其当本机也装了 MySQL 时)
-
host填的是 RDS 的外网或内网地址(如rm-bp1234567890abcd.mysql.rds.aliyuncs.com),不是localhost - 端口保持
'3306',除非 RDS 显式改过
SSL 参数必须写在 $cfg['Servers'][$i] 里,且 mode 选 Verify-CA 或 Verify-Full
RDS 类服务强制要求验证服务端证书真实性,SSL mode = require 不够——它只加密不校验证书,RDS 会拒绝连接。
在 config.inc.php 对应服务器配置块中添加:
$cfg['Servers'][$i]['ssl'] = [
'ca' => '/path/to/rds-ca-2022.pem', // 必须是绝对路径,且 Web 进程有读权限
];
并确保启用了严格模式:
立即学习“PHP免费学习笔记(深入)”;
-
$cfg['Servers'][$i]['ssl_mode'] = 'VERIFY_CA';(推荐,校验 CA 签发链) - 或
'VERIFY_FULL'(额外校验 CN/DNS 是否匹配host值,更严) - 别用
'REQUIRED'或'PREFERRED',RDS 会返回SSL connection error
CA 证书路径和权限最容易被忽略
phpMyAdmin 运行在 Web 进程(如 nginx worker 或 Apache www-data)下,它读不到你用户家目录或临时目录里的证书文件。
- 证书必须放系统可信位置,例如
/etc/ssl/certs/rds-ca-2022.pem,且chown root:www-data+chmod 644 - 路径必须写全,不能用
~或相对路径;file_exists()在 PHP 中返回false时不会报错,只会降级为非 SSL 连接 - 阿里云 RDS 的 CA 证书要从控制台「下载 CA 证书」获取,不是自签名的那版;AWS RDS 用的是
rds-combined-ca-bundle.pem - 如果用宝塔,注意其 PHP 运行用户可能是
www,需确认该用户能否读取证书路径
连接失败时先绕过 phpMyAdmin 直接测通路
不要一上来就调 config.inc.php。先验证最底层是否通:
- 在 phpMyAdmin 所在服务器上跑:
openssl s_client -connect rm-bp1234567890abcd.mysql.rds.aliyuncs.com:3306 -servername rm-bp1234567890abcd.mysql.rds.aliyuncs.com -CAfile /path/to/rds-ca-2022.pem - 成功标志:末尾出现
Verify return code: 0 (ok) - 失败则说明证书路径错、RDS 白名单没开、安全组没放行 3306,或 DNS 解析异常——这些都比 phpMyAdmin 配置优先级更高
证书校验和网络连通性这两层不稳,后面所有 SSL 配置都是空谈。



















