Java PSQLException:服务器请求基于密码的身份验证,但未提供密码

Java PSQLException:服务器请求基于密码的身份验证,但未提供密码,java,spring,postgresql,Java,Spring,Postgresql,我有一个SpringBoot项目,我正在尝试连接到本地PostgreSQL数据库。正在从DataSourceBuilder实例化数据源。在本例中,我对数据库用户名、密码和数据库URL进行了硬编码(它们将通过属性文件传递),这是实现的样子: String url = "jdbc:postgresql://localhost:5433/<TABLENAME>"; String username = <USERNAME>; String password = <PASS

我有一个SpringBoot项目,我正在尝试连接到本地PostgreSQL数据库。正在从DataSourceBuilder实例化数据源。在本例中,我对数据库用户名、密码和数据库URL进行了硬编码(它们将通过属性文件传递),这是实现的样子:

String url = "jdbc:postgresql://localhost:5433/<TABLENAME>";

String username = <USERNAME>;
String password = <PASSWORD>;

return DataSourceBuilder
            .create()
            .driverClassName("org.postgresql.Driver")
            .url(url)
            .username(username)
            .password(password)
            .build();

我试着用
sudo passwd postgres
更改了几次postgres的用户密码,但似乎都不起作用。有什么想法吗?

我猜您没有在Spring容器中注入bean,所以请使用以下方法:

@Bean
public DataSource dataSource() {
    String url = "jdbc:postgresql://localhost:5433/<DATABASE_NAME>";

    String username = <USERNAME>;
    String password = <PASSWORD>;

    return DataSourceBuilder
            .create()
            .driverClassName("org.postgresql.Driver")
            .url(url)
            .username(username)
            .password(password)
            .build();
}
@Configuration
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public class DatabaseConfig extends HikariConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource(this);
    }
}
并使用以下属性:

spring.datasource.hikari.jdbcUrl=jdbc:postgresql://localhost:5433/blog
spring.datasource.hikari.username=user
spring.datasource.hikari.password=user
spring.datasource.hikari.driverClassName=org.postgresql.Driver
您可以在此处查看我的一个工作示例:

问题可能是由扫描bean引起的

我有同样的问题,但日志没有指出

尝试:


如果您使用SpringBoot,请转到使用SpringBootApplication runner打包或手动定义扫描

为什么您还没有在属性中配置这些值,并让自动配置为您执行此操作?
spring.datasource.hikari.jdbcUrl=jdbc:postgresql://localhost:5433/blog
spring.datasource.hikari.username=user
spring.datasource.hikari.password=user
spring.datasource.hikari.driverClassName=org.postgresql.Driver
@Configuration
public class DataSourceConfig {
    @Value("${spring.datasource.driver-class-name}")
    private String driverClass;
    @Value("${spring.datasource.data-username}")
    private String url;
    @Value("${spring.datasource.data-username}")
    private String userName;
    @Value("${spring.datasource.data-password}")
    private String password;

    @Bean
    public DataSource getDataSource() {
        return DataSourceBuilder.create()
                .driverClassName(driverClass)
                .url(url)
                .username(userName)
                .password(password)
                .build();
    }
}