es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conéctese a MariaDB utilizando PDO con el certificado del servidor aceptado.

Puedo conectar la base de datos con Maria client y opciones –ssl desde el servidor de aplicación:

mariadb -h [Dirección] -P [Puerto] -u [Usuario administrador BD] -p –ssl

Pero al intentar conectar a la misma base de datos en el mismo servidor con PHP PDO, nos aparece el mensaje de error:

SQLSTATE[HY000] [2054] El servidor solicitó un método de autenticación desconocido para el cliente[client_ed25519]

He agregado las siguientes opciones a la conexión PDO para simular las opciones –ssl:

   PDO::MYSQL_ATTR_SSL_CA => true,
   PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,

Aquí está mi pieza de código de prueba:

<?php
$servername = "localhost";
$username = "usuario";
$password = "contraseña";
$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);
  // establecer el modo de error PDO a excepción
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Conexión exitosa";
} catch(PDOException $e) {
  echo "La conexión falló: " . $e->getMessage();
}
?>

Versión de la base de datos: MariaDB 10.5

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en PHP, SSL, PDO y MariaDB 10.5, me encontré con un mensaje de error al intentar conectarme a la misma base de datos en el mismo servidor con PHP PDO. El mensaje de error indica SQLSTATE [HY000] [2054] El servidor solicitó un método de autenticación desconocido para el cliente [client_ed25519].

    Para solucionar el problema, agregué las siguientes opciones a la conexión PDO para simular las opciones –ssl:

    PDO::MYSQL_ATTR_SSL_CA => true,
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
    

    Aquí está el bloque de código utilizado para la prueba:

    <?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);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      echo "Conexión exitosa";
    } catch(PDOException $e) {
      echo "Fallo en la conexión: " . $e->getMessage();
    }
    ?>
    

    En general, pude conectarme a la base de datos con el cliente Maria con las opciones –ssl en el servidor de la aplicación, y pude solucionar el mensaje de error encontrado en PHP PDO agregando las opciones apropiadas a la conexión PDO. La versión de la base de datos utilizada fue MariaDB 10.5.

Comments are closed.