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();
        }

    }
?>
6respuestas
FM

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

LY

la contraseña es database, afecta en algo que use MySQL WorkBench?

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

he leido por ahi que la version de mysql 8.0 da ese tipo de problemas :s

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
}
Necesitas iniciar sesión para responder.
¿En qué estamos trabajando?
Enrutamiento de Redes

Enrutamiento de Redes

Aprenderás cómo hace su trabajo un router en una red pequeña.