Bom dia pessoal, não estou conseguindo conectar com meu banco, alguém poderia me auxiliar? Detalhe, estou utilizando Linux Mint. java.sql.SQLException: Access denied for user 'root'@'localhost'
Bom dia pessoal, não estou conseguindo conectar com meu banco, alguém poderia me auxiliar? Detalhe, estou utilizando Linux Mint. java.sql.SQLException: Access denied for user 'root'@'localhost'
Olá, Emerson.
Você consegue conectar ao MySQL através do terminal?
Sim, já estou com banco criado e tudo.
O problema é quando eu rodo aplicação para criar as tabelas.
mysql> use livrariadb Database changed mysql>
Você observou se no seu arquivo persistence.xml, as configurações de conexão com o MySQL estão corretas?
Configuração esta assim:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.caelum.livraria.modelo.Livro</class>
<class>br.com.caelum.livraria.modelo.Autor</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
</persistence>
No seu ambiente, o login de root no MySQL tem senha?
Não, o mesmo esta sem senha.
Na linha do url, experimenta adicionar a porta do MySQL - :3306 - caso não tenha personalizado.
<property name="javax.persistence.jdbc.url"value="jdbc:mysql://localhost:3306/livrariadb" />
Continua mesmo problema: Access denied for user 'root'@'localhost'
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livrariadb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
Cola a sua stack trace para nós.
java.sql.SQLException: Access denied for user 'root'@'localhost'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2412)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:503)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at br.com.caelum.livraria.dao.JPAUtil.<clinit>(JPAUtil.java:10)
at br.com.caelum.livraria.dao.PopulaBanco.main(PopulaBanco.java:17)
Experimenta reforçar as permissões ao root do MySQL:
1) mysql -u root
2) grant all privileges on *.* to root@localhost identified by suaSenhaAqui
3) flush privileges
4) exit
Depois restarta o MySQL:
5) sudo /etc/init.d/mysql restart
6) Tenta novamente.
Esse linha de comando pedindo senha, é do banco, se for não tem senha, não executei ainda os comandos, só tirando essa dúvida antes. grant all privileges on . to root@localhost identified by suaSenhaAqui
Está corretíssimo, Emerson. Olha novamente cada linha, pois eu editei. Quando postei alguns caracteres não apareciam.
Fiz dessa forma, mas não rolou.
mysql> grant all privileges on *.* to root@localhost;
Query OK, 0 rows affected (0,04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0,27 sec)
sudo /etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.
Faltou a parte do identified by:
grant all privileges on *.* to root@localhost identified by
Da erro de sintaxe quando coloco identified by.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Cria uma senha para este usuário root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'novaSenha'
;
E tenta novamente.
Emerson beleza mano? Qual a versão do seu hibernate? Está usando maven? Se estiver abre o pom.xml e ve a versão do hibernate, se nao ve nas lib a versão
Problema continua, como coloquei senha para acesso ao banco adicionei a mesma no persistece.xml, mas deu mesma Exception, tá tenso, kkkkkkk.
java.sql.SQLException: Access denied for user 'root'@'localhost'
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
java.sql.SQLException: Access denied for user 'root'@'localhost'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2412)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:194)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:178)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:503)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at br.com.caelum.livraria.dao.JPAUtil.<clinit>(JPAUtil.java:10)
at br.com.caelum.livraria.dao.PopulaBanco.main(PopulaBanco.java:17)
Emerson, cria um novo usuário no MySQL.
Após logar no MySQL:
CREATE USER 'novoUsuario'@'localhost' IDENTIFIED BY 'senhaDoUsuario'
;
GRANT ALL PRIVILEGES ON *.* TO 'novoUsuario'@'localhost' WITH GRANT OPTION
;
Atualiza as credenciais no persistence.xml e tenta novamente.
Agora eu acho que foi, sabe como faz para acessar esse novo usuário com a senha no mysql agora? O root eu entrava sem a senha.
INFO: HHH000232: Schema update complete
Hibernate: insert into Autor (nome) values (?)
Hibernate: insert into Autor (nome) values (?)
Hibernate: insert into Autor (nome) values (?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro (dataLancamento, isbn, preco, titulo) values (?, ?, ?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Hibernate: insert into Livro_Autor (Livro_id, autores_id) values (?, ?)
Que bom. {:
Experimenta:
ALTER USER 'seuNovoUsuario'@'localhost' IDENTIFIED BY '';
(vazio entre as aspas simples).
Eu aconselharia utilizar sempre com senha.
Valeu Bruno, deu tudo certo, eu só ainda não entendi poque a necessidade de criar um novo usuário para o banco, mas pelo menos esta funcionando.
Database changed
mysql> show tables;
+----------------------+
| Tables_in_livrariadb |
+----------------------+
| Autor |
| Livro |
| Livro_Autor |
+----------------------+
3 rows in set (0,00 sec)
mysql> select * from Autor;
+----+------------------+
| id | nome |
+----+------------------+
| 1 | Machado de Assis |
| 2 | Jorge Amado |
| 3 | Paulo Coelho |
+----+------------------+
3 rows in set (0,00 sec)
Emerson, para sabermos de fato o que estava causando... apenas debugando o log do MySQL. Isto é assunto para uma outra conversa, :D.
Caso este workaround tenha solucionado o seu problema, não esquece de marcar a resposta e fechar o tópico para auxiliar outros usuários. (8
Obrigado pela credibilidade.
[]'s.