MYSQL Workbench 未填充 Spring Boot JPA 实体的表数据

Posted

技术标签:

【中文标题】MYSQL Workbench 未填充 Spring Boot JPA 实体的表数据【英文标题】:MSQL Workbench not being populated with table data for Spring Boot JPA Entity 【发布时间】:2019-05-08 20:25:05 【问题描述】:

我一直在尝试将 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 数据库?

【问题讨论】:

能否提供MySQL的版本详情? 我添加了版本。它的版本是 8.0.13 根据 Spring 文档 - spring.datasource.driver-class-name= # JDBC 驱动程序的完全限定名称。默认根据 URL 自动检测。您也可以将 SSL 设置为 false。 TestSchema?useSSL=false 如果我删除它,我会得到同样的错误 即使在将 SSL 更改为 false 之后? 【参考方案1】:

聊天讨论结束。

根据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 并且必须明确启用。

【讨论】:

还将 spring.jpa.hibernate.ddl-auto=create 更改为 spring.jpa.hibernate.ddl-auto=update 是@Entity 自动填充 mysql 表所必需的

以上是关于MYSQL Workbench 未填充 Spring Boot JPA 实体的表数据的主要内容,如果未能解决你的问题,请参考以下文章

mySQL Workbench 中的数据类型未更新

MySQL Workbench中两行之间的差异,但未授权LAG

在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误

MySQL Workbench 数据导入向导未显示 CSV 中的所有列

macOS sierra 的 mysql workbench 6.3.9 上未显示结果网格

ubuntu安装mysql可视化工具MySQL-workbench及简单操作