我读到有一种更安全的方法,可以连接到postgresql db,而无需使用 http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html 在源代码中指定密码。但是不幸的是,我无法找到任何有关如何将其导入我的python程序以及如何使我的postgresql服务器使用此文件的示例。请帮忙。

最佳答案

您不会将其导入到Python程序中。 .pgpass的要点是,它是受系统文件许可权约束的常规文件,并且psycopg2之类的库用来连接到Postgres的libpq驱动程序将在该文件中查找密码,而不是要求密码在源中。代码或提示。

另外,这不是服务器端文件,而是客户端文件。因此,在* nix框上,您将拥有一个~/.pgpass文件,其中包含要建立的各种连接的凭据。

根据OP的评论进行编辑:

为了使psycopg2通过.pgpass正确进行身份验证,需要发生两个主要事情:

  • 不要在传递给psycopg2.connect的字符串中指定密码
  • 确保将正确的条目添加到了将通过psycopg2连接的用户的.pgpass文件中。

  • 例如,要使此操作适用于 localhost 端口 5432 上的特定用户的所有数据库,您可以在该用户的.pgpass文件中添加以下行:
    localhost:5432:*:<username>:<password>
    

    然后connect调用将具有以下形式:
    conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")
    

    然后,psycopg2使用的基础libpq驱动程序将利用.pgpass文件获取密码。

    10-06 05:52