Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro categoria

Instalação individual do php e do mysql. No ato da instalação do Mysql coloquei a senha para o root de A1.camila321.

Alterei isso no meu Arquivo Categorias.php:

<?php

class Categoria
{

    public $id;
    public $nome;

    public function listar()
    {
        $query = "SELECT id, nome FROM categorias";
        $conexao = new PDO('mysql:host=127.0.0.1;dbname=estoque', 'root', 'A1.camila321');
        $resultado = $conexao->query($query);
        $lista = $resultado->fetchAll();
        return $lista;
    }
}

Criei o banco estoque normalmente. Ao acessar o front da página e clicar na função Categorias da o seguinte Erro:

Fatal error: Uncaught PDOException: PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in C:\Projetos Web\alura\phppdo\classes\Categoria.php:12 Stack trace: #0 C:\Projetos Web\alura\phppdo\classes\Categoria.php(12): PDO->__construct('mysql:host=127....', 'root', 'A1.camila321') #1 C:\Projetos Web\alura\phppdo\categorias.php(4): Categoria->listar() #2 {main} Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client in C:\Projetos Web\alura\phppdo\classes\Categoria.php:12 Stack trace: #0 C:\Projetos Web\alura\phppdo\classes\Categoria.php(12): PDO->__construct('mysql:host=127....', 'root', 'A1.camila321') #1 C:\Projetos Web\alura\phppdo\categorias.php(4): Categoria->listar() #2 {main} thrown in C:\Projetos Web\alura\phppdo\classes\Categoria.php on line 12

Não entendi o motivo.

5 respostas

Olá Anderson,

Esse parece ser um erro ligado à versão do MySQL, você está usando a versão 8?

Caso sim, você vai ter que reinstalar o MySQL utilizando uma versão anterior ou então você pode tentar alterar o usuário atual para não utilizar esse método de autenticação (talvez tenha que mudar a configuração geral de autenticação do MySQL também).

Tenta executar esse sql diretamente pelo MySQL para mudar a configuração do usuário atual:

alter user 'root'@'localhost' identified with mysql_native_password by 'A1.camila321';

Ok Se não funcionar qual versão do Mysql eu instalo?

Funcionou queria saber exatamente o que ocorreu! Obrigado.

A versão 5 deve funcionar sem problemas.

Talvez seja mais fácil apenas reinstalar a versão que você já baixou (a 8 mesmo) e durante a instalação colocar a opção como na imagem abaixo:

Eu encontrei essas informações nesse link.

A razão do problema é que a última versão do MySQL utiliza um plugin para autenticação que ainda não foi incluído no PHP, assim mudando a configuração do seu usuário root para utilizar o modo antigo de login resolve o problema.

Na documentação do PHP é falado um pouco sobre isso.