gpt4 book ai didi

python - 无法与 psycopg2 连接,但可以通过命令行连接

转载 作者:行者123 更新时间:2023-11-28 22:47:33 24 4
gpt4 key购买 nike

我正在尝试连接到远程 Postgres 数据库(在本例中为 Heroku Postgres 实例)。我有一个 Fabric 命令,它使用 psycopg2 对数据库执行一些操作。

我的 Postgres 连接是这样发生的:

# conf is a hash derived from the heroku config DATABASE_URL
self.conn = psycopg2.connect(
database=conf.get('database'), # supplied by heroku
user=conf.get('username'), # is the database username supplied by heroku
password=conf.get('password'), # supplied by heroku
host=conf.get('host'), # e.g ec2-00-000-00-00.compute-1.amazonaws.com
port=conf.get('port') # 5492
)

运行脚本出错:

psycopg2.OperationalError: FATAL:  password authentication failed for user "my-server-user"
FATAL: no pg_hba.conf entry for host "my-ip-address-here", user "my-server-user", database "database-name-here", SSL off

调查 pg_hba.conf,我临时引入了以下行:

host    all             all             trust

然后用

重新启动 Postgres
sudo /etc/init.d/postgresql-9.3 restart

但我仍然遇到这个问题。但是,我能够使用命令行客户端简单地连接(即使不更改 pg_hba 配置):

psql -h ec2-00-000-00-00.compute-1.amazonaws.com -p 5492 database-name -W

手动提供密码。

代码在我的 Mac 上本地运行,所以有些地方配置错误或被阻止。我只是不知道它可能是什么。欢迎提出任何建议。

(显然,真实世界的值已被上述示例中的占位符替换)

最佳答案

Heroku 要求您使用 SSL。

如果您要连接到 Heroku,则:

  • 修改本地主机上 PostgreSQL 服务器的 pg_hba.conf 的影响绝对为零,因为那不是您要连接的服务器;

  • 必须使用 SSL。将 sslmode='require' 选项传递给 psycopg2

关于python - 无法与 psycopg2 连接,但可以通过命令行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26146919/

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