Spring Boot 未从 application.properties 加载用户名

Posted

技术标签:

【中文标题】Spring Boot 未从 application.properties 加载用户名【英文标题】:Spring Boot not loading username from application.properties 【发布时间】:2018-07-20 16:25:21 【问题描述】:

我正在使用 Spring Boot 开发一个简单的 Web 应用程序。第一步,我实现了关于页面本身的所有内容和一个简单的登录。此外,我使用 mysql 和 hibernate 实现了数据库访问。我的数据库在本地 easyphp 开发服务器上运行。

在第一步中,一切正常。但是,在重置数据库并使用相同的凭据重新创建用户后,Hibernate 无法获得连接:

2018-02-09 21:17:11.487 ERROR 9592 --- [  restartedMain] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'db'

据我所知,没有配置用户名。但是在我的application.properties 中,设置了一个用户名:

spring.datasource.url=jdbc:mysql://localhost:3306/db?userSSL=false
spring.datasource.username=user
spring.datasource.password=

异常在启动时出现,所以它必须是配置。在数据库中,用户'user' 拥有数据库'db' 的所有权限,但没有其他权限。

【问题讨论】:

你说你的数据库在本地 easyphp 开发服务器上运行,但你的 datasource.url 设置为 mysql:// 。你能检查一下吗? 感谢您的评论@user641887。我不认为连接是问题。正如您在错误日志中看到的,连接处于活动状态,但访问被拒绝。此外,数据库访问之前使用相同的配置。 你能粘贴你的完整代码吗? 也许你有多个 application.property 文件由于某种原因只更新了其中一个?或者您更改了属性文件中的值并没有实际保存它?你也可以试试mvn clean 看看是否有帮助... @user641887 属性、日志还是java代码? 【参考方案1】:

好的,我自己找到了解决方案。真实的用户名包含一个像“user_name”这样的“_”。不知何故,这个字符是用户名未被读取的问题。

编辑:工作了几次,但问题仍然存在......

【讨论】:

【参考方案2】:

数据源 URL 可能会导致问题。那是错字吗?您可以通过将其重置为以下内容来检查吗?它必须是“useSSL”而不是“userSSL”

spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false
spring.datasource.username=user
spring.datasource.password=

如果上述方法不起作用,您的问题可能与用户的权限有关。 here 发布的问题与您的问题有关(尽管它是在 PHP 中)。

希望这能解决它,让我们知道。

【讨论】:

感谢您的回答。用户对表 'db' 拥有除授予之外的所有权限。不幸的是,错字更正并没有解决问题。

以上是关于Spring Boot 未从 application.properties 加载用户名的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot、Spring Cloud AWS 和 AWS SQS 未从队列中读取

Spring Boot 未从 application.properties 加载用户名

未从 application.properties 中提取 Spring Boot JOOQ sql 方言

Spring Boot 库项目未从 /conf 文件夹中选择外部文件配置

前端 (HTML) 未从 Microsoft Azure 中的 mysql 数据库获取 Spring Boot 应用程序中的数据

Spring boot获取getBean