Não consigo conectar o Java ao MySQL

15 respostas
K

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!

15 Respostas

V

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.

K

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.

V

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

peczenyj

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

smatt

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?

rodriguesabner

Qual o erro?

smatt

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.

R

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.

Hundea

pode ser a versão do driver?

staroski

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:

smatt

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

Hundea

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

smatt

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.

bsmachado

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…

V

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

Espero ter ajudado.

Criado 20 de outubro de 2018
Ultima resposta 2 de out. de 2020
Respostas 15
Participantes 10