如何使用 libpq 的 pgpass 连接到 postgresql,而不指定纯文本密码?

2024-01-10

Postgres 的 C 库libpq 文档 http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html讨论了一种更安全的方式来连接到数据库,而无需在源代码中指定密码。

我找不到任何如何做到这一点的例子。如何让我的 Postgre 服务器使用这个文件?请帮忙。


你没有将它导入到你的Python程序。要点是.pgpass是它是一个受系统文件权限限制的常规文件,并且libpq驱动程序包含哪些库,例如psycopg2用于连接到Postgres将在该文件中查找密码,而不是要求密码位于源代码中或提示输入密码。

另外,这不是服务器端文件,而是客户端文件。所以,在 *nix 盒子上,你会有一个~/.pgpass包含您希望能够建立的各种连接的凭据的文件。

编辑回应OP的评论:

为了实现这一目标,需要发生两件主要的事情psycopg2通过正确验证.pgpass:

  1. Do not在传递给的字符串中指定密码psycopg2.connect
  2. 确保将正确的条目添加到.pgpass将通过以下方式连接的用户的文件psycopg2.

例如,要使此功能适用于特定用户的所有数据库本地主机 port 5432,您将以下行添加到该用户的.pgpass file:

localhost:5432:*:<username>:<password>

然后是connect调用的形式如下:

conn = psycopg2.connect("host=localhost dbname=<dbname> user=<username>")

底层的libpq司机那个psycopg2然后使用将利用.pgpass文件来获取密码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 libpq 的 pgpass 连接到 postgresql,而不指定纯文本密码? 的相关文章

随机推荐