使用PDO SSL连接MariaDB 10.5报2054 client_ed25519认证错误如何解决
报错原因说明
该报错和SSL配置无关,核心原因是PHP使用的mysqlnd驱动不支持MariaDB 10.4+版本默认启用的ed25519身份验证插件,即使SSL连接正常建立,也无法通过身份校验。
解决方案
方案1:修改数据库用户的验证插件(快速生效)
使用MariaDB客户端登录数据库,执行以下命令替换用户的验证插件为mysql_native_password:
ALTER USER '你的数据库用户名'@'用户对应的主机地址' IDENTIFIED WITH mysql_native_password BY '该用户的登录密码'; FLUSH PRIVILEGES;
注:
用户对应的主机地址需要和你实际使用的一致,比如本地连接填localhost,远程连接填%或者指定的IP地址。
修改完成后重新运行PHP代码即可正常连接。
方案2:升级PHP驱动支持ed25519(无需修改数据库配置)
- 确认你的PHP版本≥7.4,更新服务器上的
php-mysqlnd扩展到最新版本 - 部分Linux发行版需要额外安装
mysqlnd-plugin-ed25519扩展包 - 安装完成后重启PHP-FPM或Apache服务生效
方案3:修正PDO SSL配置(可选,避免后续SSL连接异常)
你当前的SSL配置存在错误:PDO::MYSQL_ATTR_SSL_CA参数需要填写CA证书的实际文件路径,不能直接赋值为true。如果你只需要启用SSL连接、不需要校验服务端证书,正确配置如下:
$options = [ // 填写系统默认CA证书目录,或MariaDB自签CA证书的实际路径 PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs', PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, ];
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐

