Olá Antônio, tudo bem com você?
Antes de mais nada eu recomendaria que ao invés de fazer esse curso, que é um pouco antigo, seguir o recomendado pela Formação NodeJS, que no caso é um curso parecido: Rest Com NodeJS: API Com Express e MySQL
Em relação ao seu problema, alguns pontos:
Será que vcs não conseguem descobrir qual é a senha que vem no mysql quando usamos o npm install --save mysql?
Então, quando utilizamos esse comando do npm não estamos fazendo download de uma versão do mysql, na verdade estamos apenas pegando um driver de conexão, ele não tem senha ou coisas parecidas, ele apenas nos provê todos recursos que o mysql
tem a nos oferecer, sendo apenas a ponte entre nossa aplicação node e o banco instalado localmente
Agora em relação a sua dúvida, isso acontece porque o driver
que é instalado não tem compatibilidade com a versão do Mysql8 que trouxe uma nova forma de cadastrar a senha, utilizando autenticação por criptografia baseado no SHA256
Para solucionar isso temos que declarar que queremos utilizar a forma antiga de senha, para que o driver quando tente se conectar tenha sucesso, e para isso, temos que ou alterar a senha do root ou criar um usuário e adotar a senha sem criptografia da seguinte maneira:
Com root:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'novasenha';
Quando utilizamos o mysql_native_password
não teremos mais o problema de criptografia
Caso seja criar um novo usuário:
- Entrar no banco de dados pelo terminal
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'senha';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;
E ai temos que utilizar o primeiro comando novamente trocando root
pelo nome do usuário, dessa forma quando o driver de conexão tentar acessar o banco de dados não será barrado pela criptografia
Aqui no curso atual, temos um vídeo de instalação que mostra que podemos escolher essa opção logo ao fazer download do mysql
: Conectando ao Mysql
Abraços e Bons Estudos!