Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Error calling Driver#connect e Access denied for user 'root'@'localhost'

Boa noite! Estou com problemas em relação ao acesso da aplicação java ao banco de dados. O mysql que roda em minha máquina não possui senha, porém o meu acesso root no Debian, naturalmente, possui uma. Existe alguma relação entre elas? Pois mesmo quando tento colocar essa senha tenho a mensagem de "Acess denied" no console do java. Outra dúvida é referente a mensagem de erro "Error calling Driver#connect". Testei com diversos drives, tantos específicos para o Debian como drives mais gerais, porém a mensagem de erro persiste. Desde já obrigado!

7 respostas

Oi André,

Poste aqui o código do seu arquivo persistence.xml e da sua classe de teste, para entendermos melhor oque pode estar acontecendo.

Segue o persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <!-- unidade de persistencia com o nome financas -->
    <persistence-unit name="financas">

        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

        <!-- Aqui são listadas todas as entidades -->
        <class>br.com.caelum.financas.modelo.Conta</class>

        <properties>    
            <!-- Propriedades JDBC -->
            <property name="javax.persistence.jdbc.driver" 
                value="com.mysql.jdbc.Driver" />

            <property name="javax.persistence.jdbc.url" 
                value="jdbc:mysql://localhost/financas" />

            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />

            <!-- Configurações específicas do Hibernate -->
            <property name="hibernate.dialect" 
                value="org.hibernate.dialect.MySQL5InnoDBDialect" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

Agora segue a classe de teste:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <!-- unidade de persistencia com o nome financas -->
    <persistence-unit name="financas">

        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

        <!-- Aqui são listadas todas as entidades -->
        <class>br.com.caelum.financas.modelo.Conta</class>

        <properties>    
            <!-- Propriedades JDBC -->
            <property name="javax.persistence.jdbc.driver" 
                value="com.mysql.jdbc.Driver" />

            <property name="javax.persistence.jdbc.url" 
                value="jdbc:mysql://localhost/financas" />

            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />

            <!-- Configurações específicas do Hibernate -->
            <property name="hibernate.dialect" 
                value="org.hibernate.dialect.MySQL5InnoDBDialect" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

Agradecido!

Oi André,

Pelas configurações parece estar ok.

Veja se você consegue se conectar no mysql pelo terminal com o seguinte comando:

mysql -u root financas

Conectei normalmente usando: sudo mysql -u root financas. Não consigo me conectar sem o sudo

solução!

Oi André,

Então é isso o problema. Só dá pra acessar o mysql via sudo.

Faz o seguinte, rode o seguinte comando para resolver esse problema:

sudo chmod -R 755 /var/lib/mysql/

Depois disso reinicie o computador e veja se resolveu.

Caso não tenha resolvido, você pode criar um novo usuário no mysql e utilizar ele no java:

CREATE USER 'andre'@'localhost' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON financas.* TO 'andre'@'localhost';
<property name="javax.persistence.jdbc.user" value="andre" />
<property name="javax.persistence.jdbc.password" value="123456" />

Eu tentei rodar o mesmo código usando o Windows 7 e após trocar o drive de conexão mais recente pela versão 5.* obtive sucesso! Porém ao tentar fazer a mesma coisa no debian os erros persistem :(

CONSEGUIIIIIIIIIIIIIIIIIII!! MUITO OBRIGADO MESMO !!!!