Springboot集成Durid远程连接数据库一直报ERROR 1045 (28000): Access denied for user

1.问题

Springboot集成Durid远程连接数据库时,发现一直报ERROR 1045 (28000): Access denied for user,显示密码错误,但在本地通过Navicat和使用jdbc都可以远程连接数据库,而不显示密码错误或者没有权限。

2.办法

尝试了网上的在yml配置文件中对密码加单引号双引号,或者修改url,password字段,除去空格等都没有用,仍然出现ERROR 1045 (28000)Access denied for user异常。
怀疑是自己durid配置错误,导致无法连接,修改druid配置文件,发现果然是自己配置问题,但不清楚问题所在。

3.解决

解决办法,相关代码如图

1.application.yml

在这里插入图片描述

mst:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://....?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver

2.DruidConfig.java

从application.yml中获取参数

@Configuration
public class MyDruidConfig {

    @Value("${mst.datasource.url}")
    private String url;

    @Value("${mst.datasource.username}")
    private String username;

    @Value("${mst.datasource.password}")
    private String password;

    @Value("${mst.datasource.driver-class-name}")
    private String driverClassName;
    
    @Bean("mstDataSource")
    @Primary
    public DataSource mstDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName(driverClassName);
        return dataSource;
    }
}

4.结论

druid可以使用默认配置,目前不太清楚为什么之前无法配置,并且显示ERROR 1045 (28000): Access denied for user,在网上也没有找到合适的解决办法,现在在这记录一下。


版权声明:本文为weixin_45910779原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。