Java PSQLException:服务器请求基于密码的身份验证,但未提供密码
我有一个SpringBoot项目,我正在尝试连接到本地PostgreSQL数据库。正在从DataSourceBuilder实例化数据源。在本例中,我对数据库用户名、密码和数据库URL进行了硬编码(它们将通过属性文件传递),这是实现的样子: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
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();
}
}