没有使用Spring Boot JPA实体的表数据填充MSQL Workbench

时间:2018-12-07 04:30:04

标签: java mysql spring spring-boot

我一直试图将Spring Boot应用程序连接到MySQL工作台,但未能成功。我的MySQL Workbench(8.0.13版)服务器正在运行,它指示默认的localhost连接位于localhost 3306上。我还在工作台中创建了一个名为TestSchema的数据库。

我已经配置了Spring Boot application.properties以识别此连接,如下所示:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/TestSchema
spring.datasource.username=*****    
spring.datasource.password=*****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.database = MYSQL

据我所知,这是配置应用程序的正确方法。

最后,我在Spring Boot应用程序中使用@Entity批注创建了一个User表。但是,当我运行Spring Boot应用程序时,它给了我这个错误:

java.sql.SQLException: Access denied for user 'dougwb'@'localhost' (using password: YES). 

虽然这是我配置的用户名,但是YES不是我在application.properties文件中提供的密码,也不是我的MySQL工作台密码。如何正确配置Spring Boot应用程序以识别MySQL Workbench,并使用User @Entity JPA注释自动填充TestSchema数据库?

1 个答案:

答案 0 :(得分:2)

结束聊天讨论。

根据Spring Boot offical document JDBC驱动程序将被自动检测。

spring.datasource.driver-class-name = # Fully qualified name of the JDBC driver. Auto-detected based on the URL by default.

授予MySQL用户特权,并使用mysql_native_password进行默认身份验证。

GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost'; 
ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 
'user_name';

由于错误而导致的数据源URL更改:java.sql.SQLNonTransientConnectionException:不允许公共密钥检索

  

如果用户帐户使用sha256_password身份验证,则密码   在传输过程中必须受到保护; TLS是首选机制   为此,但是如果它不可用,则使用RSA公钥加密   将会被使用。要指定服务器的RSA公钥,请使用   ServerRSAPublicKeyFile连接字符串设置或设置   AllowPublicKeyRetrieval = True允许客户端自动   从服务器请求公钥。

spring.datasource.url=jdbc:mysql://localhost:3306/TestSchema?useUnicode=true&cha‌​racterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false
  

AllowPublicKeyRetrieval = True可能允许恶意代理执行   MITM攻击以获取纯文本密码,因此默认情况下为False   并且必须明确启用。