我有一个 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(使用前将#替换为@)