必须手动配置mysql服务端和phpmyadmin的config.inc.php:mysql需在my.cnf[mysqld]段设ssl_ca、ssl_cert、ssl_key绝对路径并require_secure_transport=on,重启生效;phpmyadmin需在config.inc.php中显式配置ssl_ca、ssl_cert、ssl_key指向php进程可读的客户端证书路径。
不能直接在 phpmyadmin 界面里配置 mysql 的 ssl 连接——所有证书路径、验证逻辑和加密强制策略,都得在 mysql 服务端和 phpmyadmin 的 config.inc.php 里手动写死,点几下开关没用。
MySQL 服务端必须先启用 SSL 并强制加密
phpMyAdmin 只是客户端,它连不上,90% 的原因是 MySQL 根本没真正启用 SSL。光配证书路径不等于生效。
-
require_secure_transport = ON必须加在my.cnf的[mysqld]段里,否则客户端即使带证书也会被允许走明文 -
ssl_ca、ssl_cert、ssl_key必须是绝对路径,且 MySQL 进程(如mysql用户)能读取——放/root/或权限为644的私钥都会静默失败 - 改完必须
systemctl restart mysqld(不是reload),SSL 配置不支持热加载 - 验证是否真生效,别只看
SHOW VARIABLES LIKE '%ssl%';执行SHOW STATUS LIKE 'Ssl_cipher',返回非空值才算当前连接已加密
phpMyAdmin 的 config.inc.php 必须显式填入客户端证书路径
就算 MySQL 开了 REQUIRE SSL,phpMyAdmin 默认也不传任何证书——它会直接被拒,报错却显示 Access denied for user 'xxx'@'%' (using password: YES),完全不提 SSL,极具误导性。
- 在
$cfg['Servers'][$i]['ssl'] = true;后追加三项:$cfg['Servers'][$i]['ssl_ca'] = '/etc/mysql/ca.pem'; $cfg['Servers'][$i]['ssl_cert'] = '/etc/mysql/client-cert.pem'; $cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/client-key.pem';
- 路径必须是 phpMyAdmin 所在服务器上 PHP 进程(如
www-data)能读的绝对路径,不是浏览器可访问路径 -
ssl_cert和ssl_key必须配对,且私钥不能设密码(PHP 的 MySQLi/PDO 不支持交互式解密) - 若用自签名 CA,可临时设
$cfg['Servers'][$i]['ssl_verify'] = false;避免 CN/SAN 校验失败,但仅限内网测试
常见错误:OpenSSL 握手失败但报错笼统
连不上时看到 Unknown SSL error 或 SSL connection error: protocol error,基本不是 phpMyAdmin 的问题,而是底层 OpenSSL 握手卡住了。
- 用
openssl x509 -in /path/to/client-cert.pem -text -noout检查证书是否含X509v3 Extended Key Usage: TLS Web Client Authentication - 确认
server-cert.pem的subjectAltName包含你实际连接的地址(如IP:127.0.0.1或DNS:db.example.com),否则客户端会拒绝 - 检查 MySQL 错误日志:
tail -n 30 /var/log/mysql/error.log,搜SSL或Failed to set up SSL,常有Unable to get private key这类提示 - 如果 MySQL 开了
require_secure_transport = ON,本地localhost的 Unix socket 连接会被直接拒绝——确保 phpMyAdmin 是通过 TCP(如127.0.0.1)而非localhost连接
最易被忽略的点:MySQL 的 ssl_ca 路径和 phpMyAdmin 的 ssl_ca 路径不是一回事;前者供 mysqld 验证客户端证书,后者供 PHP 驱动验证 mysqld 证书——两边文件可以不同,但必须各自有效且可读。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











