SpringBoot连接mysql密码正确但SQLException: Access denied for user 'root'@'localhost' (using password: YES)

SpringBoot mysql连接问题

在application.yaml文件中设置datasource配置如下,此时不加双引号,执行数据库连接,会出现异常java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)。但是输入的密码的确是正确的,是数据库连接的密码,但在SpringBoot工程使用mysql连接时却报错。

解决办法很简单,输入的密码加上双引号即可。以字符串形式输入。

调试工程可见,前缀为spring.datasource的配置都会在SpringBoot启动是自动装载到下面DataSourceProperties类中,接下来会由org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurationorg.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration等类进行调用,完成数据源的自动配置。

在这里插入图片描述

下面将断点设置为DataSourceProperties类中的setPassword方法,如下图,debug运行,可以看到配置在yaml文件中的0101在setPassword方法中变成了65。那将yaml配置文件中的密码改成123456后呢,debug运行,可以看到如下第四个截图,123456没有改变,密码还是123456,但当密码是以0开头的时候,就会被修改。

在这里插入图片描述
密码改变:(yaml配置文件中为0101,DataSourceProperties属性类中为65)
在这里插入图片描述
在这里插入图片描述
密码不变:(yaml配置文件中为123456,DataSourceProperties属性类中为123456)
在这里插入图片描述

当我们不加双引号输入,输入的值会被转换为其他类型,如下两图就被转换为Integer和Double,所以在yaml文件中密码选项需要加上双引号。而在properties中则不会出现这个问题。

在这里插入图片描述

在这里插入图片描述

总结:

在yaml配置文件中配置mysql密码是加上双引号。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值