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等类进行调用,完成数据源的自动配置。

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

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

SpringBoot连接mysql密码正确但SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第2张图片
密码改变:(yaml配置文件中为0101,DataSourceProperties属性类中为65)
SpringBoot连接mysql密码正确但SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第3张图片
SpringBoot连接mysql密码正确但SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第4张图片
密码不变:(yaml配置文件中为123456,DataSourceProperties属性类中为123456)
SpringBoot连接mysql密码正确但SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第5张图片

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

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

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

总结:

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

你可能感兴趣的:(Java之路)