3
respostas

Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)

Criei a classe TestaListagem.java exatamente igual ao que foi pedido, com a msm Connection da classe TestaConexao:

Connection connection =  DriverManager
        .getConnection("jdbc:mysql://localhost/loja_virtual?useTimezone=true&serverTimezone=UTC", "root", "admin");

, porém, recebo o erro abaixo apenas na segunda class:

Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:827) at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:447) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:237) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251) at com.mysql.cj.jdbc.admin.TimezoneDump.main(TimezoneDump.java:70)

(usuário e senha estão corretos)

3 respostas

Fala, Marcelo! Tudo bem contigo?

Desculpe a demora em dar um retorno

Ele está acusando erro que login no mysql. Isso ocorre quando temos algum erro no usuário ou senha, porém você disse que estão corretos, certo?

Na aula parte 06 da aula 01, quando fizemos a primeira conexão, rodou ou também tivemos o mesmo erro?

Vamos dar uma investigada!!!

Fico no aguardo, Marcelo!!!

Também estou com o mesmo problema. Tenho duas classes diferentes: TestaConexão e TestaListagem.

Código de TestaConexão:

package loja_virtual_repository;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class TestaConexao {

    public static void main(String[] args) throws SQLException {

        Connection connection = DriverManager
                .getConnection("jdbc:mysql://localhost/loja_virtual?useTimeZone=true&serverTimezone=UTC", "root", "root");

        System.out.println("Fechando conexão!!");

        connection.close();

    }

}

Código de TestaListagem:

package loja_virtual_repository;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class TestaListagem {

    public static void main(String[] args) throws SQLException {


        Connection connection = DriverManager
                .getConnection("jdbc:mysql://localhost/?useTimeZone=true&serverTimezone=UTC&user=root&password=root");

        Statement stm = connection.createStatement();

        boolean resultado = stm.execute("SELECT ID, NOME, DESCRICAO FROM PRODUTO");

        System.out.println(resultado);

        connection.close();

    }

}

Fiz um CTRL + C, CTRL + V no código de obter a conexão da primeira classe para a segunda classe.

Configurações do ambiente:

Windows 10 x64; Versão do Java: 13.0.2 MySql Community 8.0.21

Driver para conexão: mysql-conenctor-java-8.0.21.jar (estava utilizando o que estava disponibilizado nas aulas, mas como estava dando o erro acabei trocando para essa versão para ver se corrigia, porém o erro persiste).

Na primeira classe o código executa normalmente com sucesso. Já na segunda classe está estourando o mesmo erro do amigo aí em cima:

Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
    at com.mysql.cj.jdbc.admin.TimezoneDump.main(TimezoneDump.java:70)

E o mais interessante é que aqui em casa possuo um notebook e um computador, e o mesmo erro ocorre nas duas máquinas diferentes.

Experimentei também criar um novo usuário no MySql para ver se conseguia trabalhar nele, porém, sem sucesso também.

OBS: Marcelo, após algumas leituras na internet (não sei se pode citar o link onde encontrei por ser link externo), percebi que, ao invés de executar minha classe TestaListagem, estava executando uma classe chamada TimezoneDump que também possui um método Main, e por isso estava dando o erro. Após executar minha classe corretamente (clique com o direito do mouse em cima da classe > Run As > Java Application), o código voltou a funcionar normalmente.