3

当我尝试使用类似这样的代码(以“用户名”运行 python)通过 psycopg2 连接到我的 postgres 服务器时:

psycopg2.connect(database="apis_master")

我收到一个错误

psycopg2.OperationalError: FATAL:  Ident authentication failed for user "username"

但是当我像这样直接从命令行(作为用户“用户名”)运行 psql 时:

psql -d apis_master

我连接没有问题。

我看不出这两种连接方法有什么不同。我是否缺少 psycopg2 的一些配置选项?

4

2 回答 2

2

你的命令行用户和你的 python 用户不同的。当您实例化 psycopg2 对象时,传递用户凭据:

db = psycopg2.connect(
                     host = 192.168.0.1, # example IP, use 'localhost' if local, otherwise the IP of the server where Postgre is located.
                     database = 'apis_master'
                     user = 'my_db_user',
                     password = 'my_db_password'
                     )

这应该可以解决您的连接问题。

于 2013-03-28T21:37:20.310 回答
0

问题是这个系统上运行了两个 PGSQL 实例。一个是 8.4 并且未配置为与我的用户名相同,另一个是 9.1 并且具有我的用户名。命令行 psql 自动选择在非标准端口上运行的 9.1,而 psycopg2 使用默认端口。在 psycopg2 连接行中指定端口解决了这个问题。

于 2013-03-28T22:06:47.327 回答