4

我正在编写一个使用 PG gem 来建立数据库连接和发送文件的 Ruby 脚本。我正在构建它以获取主机名、用户名、数据库名称和端口的变量。在我编写的用于管理一些伴随任务的 Shell 脚本中,我依靠存储的密码~/.pgpass而不是让用户输入密码,psql因为有很多事务,有时输入密码可能会无缘无故地失败(并且在 20 次中输入它很糟糕)。

如果没有明确提供密码,PG 会访问相同的源吗?按照惯例,我已将密码包含在文件中,但由于它被推送到内部可用的存储库,因此我不希望在我的文件中包含该信息。我现在正在尝试测试该功能,但想知道 SO 社区中是否有人知道这个问题的答案。如果 PG 不访问 .pgpass 文件,有没有办法引用变量并将其写入文件而不提示用户输入密码?

在此先感谢您的帮助。

4

1 回答 1

4

是的,它将~/.pgpass像任何基于libpqC PostgreSQL 客户端库的接口一样使用。

但是,在文件中没有密码的一个很好的替代方法是将它放在PGPASSWORD环境变量中。如果您在脚本中设置它,它将被它调用的每个程序继承。

PGPASSWORD当设置时将用作任何libpq连接的密码,这意味着大多数连接到 PostgreSQL 的程序。

于 2013-08-16T21:48:18.320 回答