Olá pessoal. Estou tentando conectar o meu projeto com o banco de dados MySQL que já tenho configurado na minha máquima. Por algum motivo não estou conseguindo estabelecer a conexão devido ao erro:
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá pessoal. Estou tentando conectar o meu projeto com o banco de dados MySQL que já tenho configurado na minha máquima. Por algum motivo não estou conseguindo estabelecer a conexão devido ao erro:
O arquivo pom.xml está assim:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.erdev</groupId>
<artifactId>loja</artifactId>
<version>0.1</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.15.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
</dependencies>
</project>
E o persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="loja" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/loja?useSSL=false&serverTimeZone=UTC"/>
<property name="javax.persistence.user" value="root" />
<property name="javax.persistence.password" value="root" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
<property name="hibernate.show.sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
Com o h2 funciona normalmente, mas com o MySQL estou tendo esse problema...
Oi Luis!
No último print da exception aparece o erro: Access denied for user 'oedur'@'localhost' (using password: NO)
O usuário/senha do mysql passado no persistence.xml está incorreto.
Olá professor! Na configuração do mysql, eu não adicionei esse usuário oedur... Existe alguma forma de saber a origem dele?
Posta aqui o código da sua classe CadastroDeProduto
package com.erdev.loja.testes;
import java.math.BigDecimal;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.erdev.loja.model.Produto;
public class CadastroDeProduto {
public static void main(String[] args) {
Produto celular = new Produto();
celular.setNome("Galaxy S23");
celular.setDescricao("Muito Legal");
celular.setPreco(new BigDecimal("3000"));
EntityManagerFactory factory = Persistence.createEntityManagerFactory("loja");
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
manager.persist(celular);
manager.getTransaction().commit();
manager.close();
}
}
Tudo certo. Ele vai pegar o usuário e senha do persistence.xml mesmo. Confere se o persistence.xml está no src/main/java/resources/META-INF.
Verifica também no menu superior Project se a opção Build project Automatically está marcada.
Está tudo certo, e mesmo assim continua dando o mesmo erro... A impressão é que ele não está olhando para os properties user e password informados no persistence.
Eu criei um novo usuário na base, e passei ele como parâmetro na URL de conexão... Tem algum problema em utilizar essa abordagem?
Pois é, muito estranho isso. Pode passar pela url então.