【发布时间】:2011-06-01 12:56:50
【问题描述】:
我有一个在 linux 机器上运行的 PostgreSql 本地实例。当我从 shell 使用 psql 命令时,我成功登录,没有任何问题。我需要通过 JDBC 连接到 PostgreSql,但我不知道究竟应该将什么作为 url 参数传递给 DriverManager.getConnection()。
它应该以jdbc:postgresql: 开头,但接下来会发生什么?
系统组告诉我创建了一个类似于用户名的数据库。例如如果我的用户是jutky,则创建了一个名为jutky 的数据库,但是当我尝试打开与jdbc:postgresql:jutky 的连接时,我收到一个错误
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "jutky"
:(
附加信息
当我通过psql 登录时,系统不会提示我输入密码,因此当我尝试通过 JDBC 登录时,我传递了一个空字符串作为密码 - 是否正确,或者我应该传递 null 还是什么? ?
当我在 shell 中键入 psql --help 时,我会在其余部分中看到这一行:
Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")
所以我知道我通过socket directory 连接到 PostgreSql,这对 JDBC 中的 URL 字符串有影响吗?
编辑
首先感谢您的回答。
第二:这不是我第一次使用 JDBC,尤其不是我第一次从 JDBC 连接到 PostgreSql,所以我知道一般规则并且我已经阅读了文档。但是,在所描述的情况下,如果实例通过socket directory 运行,我不确定我应该如何构造连接字符串以及我应该提供什么密码。因为当我通过psql 登录时,根本不会提示我输入密码。
提前致谢。
【问题讨论】:
标签: java postgresql jdbc connection-string database-connection