gpt4 book ai didi

java - Postgresql JDBC 驱动程序是否支持 Pgpass 身份验证?

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:18 24 4
gpt4 key购买 nike

我正在尝试使用 JDBC Driver 从 Java 连接到 Postgresql 数据库并想使用 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 Driver 是否支持 pgpass?

我能找到的唯一线索是在 SO 中,似乎表明 since the driver does not use libpq, then it cannot use pgpass .不过,我似乎无法在任何地方找到权威的答案。

最佳答案

不,PgJDBC 不读取 .pgpass

$ cd projects/pgjdbc
$ git grep pgpass
$

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

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

您可能会发现直接修改 JDBC 驱动程序更容易,如果 JDBC 驱动程序已经将 JDBC URL 解析为主机、端口等,如果在连接参数中未指定密码,则查找密码。

关于java - Postgresql JDBC 驱动程序是否支持 Pgpass 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21074299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com