CONEXION PHP Y MYSQL

LY

Me sale este error cuando trato de conectar Mysql y PHP.

ERROR SQLSTATE [HY000] [2054] The server requested authentication method unknown to the client

Esta es mi conexion y no sé el error.

<?php
    function Conecta(){
        
        try{
            $cadena = "mysql:host=localhost;dbname=machis";
            $conexion = new PDO($cadena,"root","database");
            return true;
        }
        catch(PDOException $e){
            echo "ERROR ". $e->getMessage();
        }

    }
?>
FM

No estas colocando la contraseña de tu servidor! $conexion = new PDO($cadena,"root",''$password");

FM

disculpa si recién me había dado cuenta, pero la conexión que hiciste esta bien esta bien, bueno creo que debe ser el workbench .-.

LY

No encontré una solución manteniendo el mysql 8.0 , procedi a desactivar el mysql de los SERVICIOS y lo ejecute con el mysql del XAMP y me funciono , muchas gracias por la ayuda. :D

FM

aqui te dejo un ejemplo de como yo lo hago!!

abstract class db{
   protected $host = 'localhost';
   protected $user = 'root';
   protected $password = '';
   protected $bdatos = 'stalky';
   private $charset = 'utf8mb4';

   function conectar(){
       try {
           $poo = 'mysql:host='.$this->host.';dbname='.$this->bdatos.';charset='.$this->charset;
           $options = [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_EMULATE_PREPARES=>FALSE,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"];
           $pdo = new PDO($poo,$this->user,$this->password,$options);
           return $pdo;

       } catch (PDOException $e){
           print_r('error en el codigo'.$e->getMessage());
       }finally{
           $poo = NULL;
           $pdo = NULL;
       }
   }
   abstract protected function insertar($nombre,$apellidos,$email,$password); //Crear
	abstract protected function consultar($username,$password); //Read
   abstract protected function actualizar($registro); //Update
	abstract protected function eliminar($accion, $eliminar); //Delete
}

Recuerdainiciar sesiónpara participar en la comunidad.