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

2024-01-10

我有一个 Spring Boot 项目,我正在尝试连接到本地 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();

当我运行 Spring 应用程序 main 方法时,抛出以下异常:

Caused by: org.postgresql.util.PSQLException: 
The server requested password-based authentication, but no password was provided.
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:534)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:141)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)

我尝试改变postgres用户密码多次使用sudo passwd postgres但这似乎不起作用。有任何想法吗?


我的猜测是,您没有将 bean 注入到 Spring 容器中,因此请使用如下内容:

@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();
}

顺便说一句,在 jdbcUrl 中,您需要使用 DatabaseName,而不是 TableName。

Note:我认为最好利用 Spring Boot 已经自动配置的所有内容,因此我建议您执行以下操作:

@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

您可以在这里查看我的工作示例之一:https://github.com/vladucuvoican/simple-blog/blob/master/src/main/resources/application.properties https://github.com/vladucuvoican/simple-blog/blob/master/src/main/resources/application.properties

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐