[RESOLVIDO] Conexão entre Java e Mysql Workbench

Bom dia, pessoal.

Sou iniciante em Java e aqui na comunidade, estou com um problema na conexão entre meu banco de dados mysql e o java netbeans, estou usando as seguintes versões:

  • Windows 10 x64.
  • Netbeans 8.0.2
  • Mysql Workbench 8.0

Eu criei a classe para conexão com o banco, mas na hora de realizar a conexão quando vamos na opção Serviços e clicamos em Banco de dados o Status que aparece é (desconectado) e não consigo alterar o status por nada. Já li em outro lugares que tenho que alterar as propriedades da conexão, e especificar o caminho correto do mysqlAdministrator dentro da pasta bin, só que dentro da minha pasta bin do mysql não tem esse mysqlAdministrator.

image

Esse é a mensagem de erro que dá quando tento conectar. Já refiz a classe de conexão, já exclui e criei novamente o banco, já reinstalei o netbeans, já reinstalei o mysql inclusive instalei outras versões do mysql e nada.

Segue a minha classe de conexão:

public class Conexaofactory {
       
    private static final String DRIVER = "com.mysql.jdbc.driver";
    private static final String URL = "jdbc:mysql://localhost/Conexao_Mercado";
    private static final String USER = "root";
    private static final String PASS = "Abc123";
  
    
   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);
           
        }
       
   }

O que pode estar acontecendo pessoal?

A partir do MySQL 8.0.4, eles mudaram o plugin de autenticação padrão para o servidor MySQL de mysql_native_password para caching_sha2_password.

Tenta isso:

ALTER USER seu_usuario IDENTIFIED WITH mysql_native_password;

Escrever esse código em qual lugar?? Dentro da classe de conexão?

Eu não conheço muito a interface do MySQL, mas acho que tem algo sobre “SQL” lá, tipo, jogar um query lá dentro, do tipo: “select * from tabela”, ou “insert…”

O banco esta com o mesmo nome do código?
Você adicionou a biblioteca do Mysql ao projeto?
Acredito que não seja acesso do usuário pois caso fosse nem no workbrench seria possível executar os códigos ou até mesmo acessar, tente com a ferramenta que esta acessando o banco, caso entre e execute as ações normalmente não é o caso do amigo acima

Faltou a porta, você disse apenas que é localhost

private static final String URL = "jdbc:mysql://localhost/Conexao_Mercado";

Tente fazer assim:

private static final String URL = "jdbc:mysql://localhost:3306/Conexao_Mercado";

Por padrão a porta é 3306, mas pode ser que mude em algumas situações.

Bem lembrado!

Fiz a alteração conforme post acima e nada, não funcionou. Esta complicado.

Desculpe amigo, esqueci uma coisa. Na variavel DRIVER que você criou, faltou colocar o “D” em maiúsculo.

Onde está:
private static final String DRIVER = "com.mysql.jdbc.driver";

Mude para:
private static final String DRIVER = "com.mysql.jdbc.Driver";

Essa variável que você criou vai receber o caminho especificado na biblioteca que você importou para o seu projeto. Você pode verificar em: Bibliotecas > mysql-connector-java-5.1.45.jar (a versão que eu uso como exemplo) > com.mysql.jdbc > Driver.class , Acredito que o erro seja esse.

Se houver outro erro, pode ser:

o login e senha do seu mysql que não está correto nas variáveis USER e PASS que você criou;
a versão do mysql-connector-java, eu uso a 5.1.45 e nao tive problemas até agora.

Como o Abner falou, pode ser a versão do mysql.

Consegui fazer a conexão, usei o mysql-connector-java-8.0.11, assim conectou. Acredito que é o que alguns disseram incompatibilidade de versões, e precisou de um conector mais atualizado.

Obrigado a todos!

1 curtida

Mano? Como vc conseguiu conectar? Estou com o mesmo problema. SE PUDER MANDE SEU CONTATO

https://dev.mysql.com/downloads/windows/installer/8.0.html

Se não der certo:

ALTER USER 'usuario'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

Acabei de fazer isso que vc me disse mano! Mas olha como fica no Netbeanns

Mostra sua classe

http://www.logikdev.com/tag/zerodatetimebehavior/
https://www.vivaolinux.com.br/topico/MySQL/ligar-mysql-ao-netbeans

public class ConnectionFactory {

private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/bdnovo";
private static final String USER = "root";
private static final String PASS = "";

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);
    }
}

public static void closeConnection(Connection con){
    
        try {
            if(con != null){
            con.close();
        } 
            
        }catch (SQLException ex) {
             Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


public static void closeConnection(Connection con, PreparedStatement stmt){
    
    closeConnection(con);
    
        try {
            if(stmt != null){
            stmt.close();
        } 
            
        }catch (SQLException ex) {
            Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs){
    
    closeConnection(con, stmt);
    
        try {
            if(rs != null){
            rs.close();
        } 
            
        }catch (SQLException ex) {
            Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

Aqui mano

eu tambem ja importei o conector 8.0 mano para o projeto

Já que você importou o novo conector, faz o seguinte altera o a senha do banco e altera as horas, aqui funcionou assim:

Comando para alterar a senha do banco:
Alter user ‘root’ @ ‘localhost’ identified with mysql_native_password by ‘MUDE A SENHA’;

Comando para alterar o horário:
Set @@global.time_zone=‘+3:00’;

E na quando você usar o assistente de conexão com o banco, no JDBC URL digite o comando abaixo:
Jdbc:mysql://localhost:3306/NOMEDOSEUBANCO?useTimezone=true&serverTimezone=UTC

Acredito que assim vai funcionar.

1 curtida

Cara eu to com o mesmo problema só q tipo, quando eu olho pro “Programa e Recursos” (Painel de controle > Programa > Programa e Recursos) lá tem o Mysql Connector/J mas eu não sei onde o jar dele ta pra eu poder importar, alguém pode me dizer?