我可以使用应用服务器上的 --ssl 选项将数据库与 Maria 客户端连接:
mariadb -h [地址] -P [端口] -u [数据库管理员用户] -p --ssl
但是尝试使用 PHP PDO 连接同一服务器上的同一数据库,我们收到以下错误消息:
SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法[client_ed25519]
我在 PDO 连接中添加了以下选项以模拟 --ssl 选项
PDO::MYSQL_ATTR_SSL_CA => true,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
这是我的测试代码片段:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$options = [
PDO::MYSQL_ATTR_SSL_CA => true,
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
];
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password, $options);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
数据库版本:MariaDB 10.5