Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Access denied for user

OBS: Utilizando usuário root com senha alterada para root, para evitar possíveis erros relacionados a caracteres. OBS: Nenhuma alteração nas configurações padrões de porta ou localhost

import os
from classes.connection import MongoConnection
from classes.operations import ETLM
import pymongo as pymongo
import mysql.connector
import pymysql



connection = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
 
)

Retorno:

Log de erro VSCODE Python

2 respostas

Oii, Gabriel! Tudo bem?

Agradeço por aguardar o nosso retorno.

O erro "Access denied for user" indica um problema nas credenciais ou permissões do usuário root ao tentar acessar o MySQL. Com basta nisso, peço que revise alguns pontos:

  1. Verifique se o usuário root tem permissões para acessar o MySQL a partir do localhost com o comando:

    SHOW GRANTS FOR 'root'@'localhost';
    
  2. Se a senha está correta, tente acessar o MySQL pelo terminal usando:

    mysql -u root -p
    
    • Digite a senha root quando solicitado e veja se consegue acessar.
  3. Reinicie o Servidor MySQL para reparar qualquer instabilidade da conexão:

    sudo service mysql restart
    

Percebi que finalizou o curso, caso tenha resolvido o problema, caso se sinta confortável, compartilhe conosco a sua solução.

Conte sempre com a Alura para se desenvolver, até mais!

solução!

Bom dia, e feliz ano novo !

Na verdade o buraco era mais "em baixo". Mesmo com todas as credenciais corretas e devidas permissões, reparei que e a linha de erro estava no connector (Ou seja, o script do código sequer chegava a ler as credenciais do usuário). Inclusive, mesmo tentando acessar diretamente pelo terminal do ambiente pelo código

mysql -u root -p

Logo, entrei com o usuário Root:

sudo mysql -u root

Aparentemente o que impossibilitava minha conexão era que meu servidor mySQL permitia autenticação apenas via socket. Resumo O socket no contexto do MySQL é um mecanismo de comunicação utilizado para permitir a troca de dados entre o cliente (que tenta se conectar) e o servidor MySQL em um sistema local, sem precisar passar pela rede TCP/IP. Ele é frequentemente usado quando o MySQL está configurado para permitir conexões locais (de um cliente no mesmo servidor). Quando o MySQL está configurado para usar autenticação via socket (unix_socket), ele utiliza um mecanismo de autenticação que não exige uma senha, mas sim a verificação do usuário do sistema operacional para garantir que o cliente que está tentando se conectar tenha permissões adequadas no nível do sistema

O código a seguir alterou o método de autenticação do localhost para a senha definida, e com isso, fez com que o código funcionasse normalmente:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'aqui_vai_a_senha';