2014-01-12 67 views
10

我正在尝试使用JDBC Driver从Java连接到Postgresql数据库,并且想要使用pgpass进行身份验证。Postgresql JDBC驱动程序是否支持Pgpass身份验证?

我的Postgresql服务器正确设置了密码验证,我有一个本地.pgpass文件;我可以连接使用psql而不必提供用户的密码。然而,当我尝试打开Java中的连接,我收到以下错误:

org.postgresql.util.PSQLException: The server requested password-based authentication, but no password was provided. 

我使用下面的代码:

String url = "jdbc:postgresql://localhost/test"; 
Properties props = new Properties(); 
props.setProperty("user","my_user"); 
Connection conn = DriverManager.getConnection(url, props); 

我的问题则是:做Postgres的JDBC驱动程序支持pgpass?

我能找到的唯一线索就是在SO中,似乎表明since the driver does not use libpq, then it cannot use pgpass。尽管如此,我似乎无法找到授权答案。

回答

9

不,PgJDBC不会读取.pgpass

$ cd projects/pgjdbc 
$ git grep pgpass 
$ 

Java程序需要打开并解析.pgpass然后做适当的匹配进行连接。

如果您编写一个类来读取和解析.pgpass并匹配给定的一组连接参数,请将其提交以包含在PgJDBC驱动程序中,它将在org.postgresql.util包的下面。

您可能会发现更容易,而不是直接修改JDBC驱动程序,如果在连接参数没有指定任何一次JDBC驱动程序已解析的JDBC URL到主机,端口等

查找密码
相关问题