Spring Boot 返回错误:用户“XXX '@”localhost“的访问被拒绝(使用密码:否)

tpxzln5u  于 2022-11-05  发布在  Spring
关注(0)|答案(2)|浏览(206)

我在这里也发现了同样的问题,但是问也没有帮助,对我也没有帮助。所以三年后我又试了一次:)
我用MySQL数据库做了一个Sping Boot 应用程序。所有的CRUD操作都运行良好,它已经被Postman测试过了。当我添加www.example.com时Persistance.autoconfiguration.java,它会生成SQLException:拒绝用户'XXX'@'localhost'****的访问(使用密码:否).用户XXX是我得Windows用户配置文件.

Persistence.configuration.java位于config包中,它位于conferencedemo 2中,其中包含控制器、存储库等包。

package com.cg.conferencedemo2.config;

import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class PersistenceConfiguration {

    @Bean
    public DataSource dataSource(){
        DataSourceBuilder builder = DataSourceBuilder.create();
        builder.url("jdbc:mysql://localhost:3306/conference_demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
        System.out.println("My custom datasource hean has benn initialized and  set");
        return  builder.build();
    }
}

我试过做这个sql,但是没有效果。

CREATE USER 'XXX'@'localhost' IDENTIFIED BY 'password'     ---->    0 row(s) affected   
GRANT ALL PRIVILEGES ON conference_demo.* TO 'XXX'@'localhost'   ----->0 row(s) affected

应用程序.属性

spring.datasource.url=jdbc:mysql://localhost:3306/conference_demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
 spring.datasource.username=root
 spring.datasource.password=password
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

谢谢你的建议

n53p2ov0

n53p2ov01#

如果您配置了spring.datasource.*属性,Spring将自动为您注入一个DataSource,您不需要使用构建器的@Bean producer方法。

4uqofj5v

4uqofj5v2#

在我的例子中,我只是删除了spring.datasource.url中的端口:3306。
下面是参考的链接:数据源配置

spring.datasource.url=jdbc:mysql://localhost/test

相关问题