当我尝试通过psycopg2连接到我的postgres服务器时,使用一些像这样的代码(运行python作为“用户名”):
psycopg2.connect(database="apis_master")
我收到错误
psycopg2.OperationalError: FATAL: Ident authentication failed for user "username"
但是当我直接从命令行运行psql时(作为用户“username”),如下所示:
psql -d apis_master
我连接没问题。
我看不出这两种连接方法有什么不同。我错过了psycopg2的一些配置选项吗?
答案 0 :(得分: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'
)
这可以解决您的连接问题。
答案 1 :(得分:0)
问题是在这个系统上运行了两个PGSQL实例。一个是8.4,没有配置为使用我的用户名识别,另一个是9.1并且有我的用户名。当psycopg2使用默认端口时,命令行psql自动选择在非标准端口上运行9.1。在psycopg2连接行中指定端口可以解决问题。