Não consigo conectar o Java ao MySQL

Saudações!

Há meses, estou com esse problema: ao tentar conectar o Java, usando a IDE NetBeans, ao MySQL, aparece a mensagem "unable to load authentication plugin ‘caching_sha2_password’ ".

Não há erro na Classe ConnectionFactory nem nas demais classes para persistência de dados (classes DAO), uma vez que consigo fazer um CRUD no PostgreSQL usando Java e Netbeans (com as devidas alterações, é claro).

Estou usando:
Windows 10 - 64 bits
Java 8
NetBeans 8.2
Workbench 8
MySQL Server 8.0.12
JDBC do MySQL 5.1.23

P.S. Já fiz o teste com o JDBC na mesma versão do MySQL Server, isto é, com o JDBC na versão 8 e, mesmo assim, não deu para conectar.

Por favor, me ajudem com isso.
Abraço!

Cara também tive esse problema, não sei porque raios está acontecendo isso. Vi comentários falando que é o driver do Netbeans pra MySQL, mas como não sei de fato, desinstalei o MySQL Server, e instalei o WampServer, e não há dever que deu certo?

Essa foi a solução inicial que encontrei.

Olá, Victor!

Cara, eu já desinstalei e reinstalei todo o pacote para Windows do MySQL e, até agora, não deu certo.

Já usei tanto o Driver do MySQL disponível no NetBeans, que é a versão 5, e já baixei o Driver da mesma versão do MySQL Server, que é na versão 8, mas, para todos os casos, não consigo fazer a conexão.

Minha salvação, até o momento, tem sido o PostgreSQL.

Entendo, eu também infelizmente não consegui, a solução alternativa que encontrei foi usar o WampServer mesmo. De quebra vem o PHPMyAdmin, pra montar as tabelas do banco de dados de forma vagabunda e preguiçosa kkkkkkkkk

https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html

Gente to com esse mesmo problema. Minha classe de conexao ta certa, o connector ta o 8 e nao consigo ter acesso ao banco. Como proceder?

Qual o erro?

Esta aqui eh a minha ConnectioFactory:

public class Conexão {
    
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/banco";
    private static final String USER = "root";
    private static final String PASS = "sql123";
    
    public static Connection getConnection(){
        try {
            Class.forName(DRIVER);
            
            return DriverManager.getConnection(URL, USER, PASS);
        } catch (ClassNotFoundException | SQLException ex) {
            throw new RuntimeException("Erro na conexão!", ex);
        }
    }

Dai, quando executo, aparece isso aqui na StackTrace:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Erro na conexão!
	at DAO.Conexão.getConnection(Conexão.java:30)
    at DAO.ContaDAO.create(ContaDAO.java:30) // Aqui eh onde é invocado o getConnection

Ou seja, ele executa o catch.
O usuario e a senha estão certos, assim como o Driver e tbm o URL do banco. To desconfiando que to meio que sem acesso ao banco. Tipo um “firewall” me barrando. Pq não consigo achar uma explicação.

Uma vez aconteceu isso comigo no windows 10.

Executa o MySQLInstanceConfig, e veja se todos os serviços estão instalados e rodando.
Quando perguntar o tipo de configuração escolha “Standard Configuration”.next
Reconfigura Instance next
Selecione a drop down “Include Bin Directory in windows path” next
Insira a senha atual e a nova (pode repetir) next e execute
Ele fará quatro testes se der erro, refaça o processo, só que em vez de reconfigurar remova a instancia, depois faça novamente reconfigurando e vai dar certo.

pode ser a versão do driver?

Aparece isso pois está lançando essa exceção, veja:

} catch (ClassNotFoundException | SQLException ex) {
    throw new RuntimeException("Erro na conexão!", ex);
}

Põe um ex.printStackTrace() aí pois lançar um "Erro na conexão!" não diz nada. :wink:

2 curtidas

Já resolvi aqui, obrigado a todos! :blush::+1:

1 curtida

conta como resolveu, para ajudar futuros usuários com a mesma dúvida.

1 curtida

Baseado no que o povo falou acima mesmo kk e antes eu estava logando o MySQL antes de executar o programa no netbeans, dai eu executava com o DB ja logado la no MySQL. Ai fiz diferente! Eu executei o programa sem logar la no WorkBench e deixei ele msm fazer o login la no MySQL pelo ConnectionFactory, e resolveu. Mas recomendo testar também o que todos disseram acima.

1 curtida

Mesmo erro aqui… tenho no mesmo notebook o MySQL workbench 8.0 e fiz o BD novamente no XAMPP e agora, executa e não da erro e nem aparece mensagem…

Gente eu estava com o mesmo problema, fiz uma busca para resolver esse problema e encontrei uma solução!!

Espero ter ajudado.