Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

7 respostas
V

Boa Noite a todos,

Estou criando uma fábrica de conexões usando a classe ConnectionFactory, criei uma outra classe para testar essa conexão, mas estou tendo o seguinte erro:
Caused by: java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: NO)

Estou usando o banco de dados mysql e já coloquei o .jar do mysql no build path.

Segue abaixo os códigos:

Testa Conexão

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

import br.com.caelum.jdbc.ConnectionFactory;

public class TestaConexao {
	
	public static void main(String args[]) throws SQLException{
		
		Connection connection = new ConnectionFactory().getConnection();
		connection.close();		
	}
}

Connection Factory

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

public class ConnectionFactory {
	
	public Connection getConnection(){
		
		System.out.println("Conectando ao Banco");
		try{
			return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "");
		}catch(SQLException e){
			throw new RuntimeException(e); 
		}				
	}
}

Agradeço desde já a todos.

Vitor Bonfim

7 Respostas

V

Segue o Stack trace, pois acho que vai ajudar:

Conectando ao Banco
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
	at br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:15)
	at br.com.caelum.teste.TestaConexao.main(TestaConexao.java:12)
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:911)
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3953)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1276)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at br.com.caelum.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:13)
	... 1 more
lgi2020

A mensagem faz referência a problemas de autenticação.

Pelo que se pode ver, você está tentando autenticar como root sem senha.

É isso mesmo?

blackfalcon

Veja la no arquivo de configuração do hibernate ou nos setProperties, caso voce esteja os utilizando e troque a senha do root para uma string vazia, pois deve ter alguma senha la e no seu banco nao esta configurada isso.

Abraços

V

Tenho uma outra dúvida, a senha que uso no banco de dados, tem q ser a mesma senha para usar na string de conexão?

Obrigado!

V

Valeu galera, funcionou…

Foi a dica que vcs deram, eu tenho que usar a mesma senha que uso para conectar o banco de dados.

Muito obrigado pela ajuda!!!

abraços

P

Olá Vitor

Eu sou iniciante em java e eu estou com mesmo problema seu. Como fez a respeito

da senha, por eu não entendi?

Vlw!

S

paulo_pereira:
Olá Vitor

Eu sou iniciante em java e eu estou com mesmo problema seu. Como fez a respeito

da senha, por eu não entendi?

Vlw!

Este tópico já tem quase 3 anos mas vamos lá.

Considerando que você está tendo exatamente o mesmo problema, a stacktrace indica que você está tentando se conectar com o banco de dados com um usuário chamado root e você não está passando nenhuma senha para ele.

Possíveis causas:

O usuário root tem uma senha e você não a passou.
Não existe um usuário chamado root. Pode ser que exista algum usuário que não necessite de senha (nunca vi mas acho que existe).

Criado 7 de setembro de 2010
Ultima resposta 3 de mai. de 2013
Respostas 7
Participantes 5