ruby - 设置PostgreSQL连接时,PG Ruby Gem是否使用pgpass?

原文 标签 ruby postgresql database-connection psql

我正在编写一个ruby脚本,它使用pg gem建立数据库连接并发送文件。我对它进行了构造,以获取主机名、用户名、数据库名和端口的变量。在我编写的一个shell脚本中,我管理一些相关任务,我依赖于存储在~/.pgpass中的密码,而不是让用户为psql输入密码,因为有很多事务,有时输入密码可能会无缘无故地失败(输入20次会很糟糕)。
当没有显式地提供密码时,pg会访问同一个源吗?按照惯例,我已经在文件中包含了密码,但是由于这被推送到了一个内部可用的repo中,所以我不希望在我的文件中包含该信息。我现在正试着测试这个功能,但是想知道so社区中是否有人知道这个问题的答案。如果pg不访问.pgpass文件,是否有方法在不提示用户输入密码的情况下引用变量并将其写入文件?
提前谢谢你的帮助。

最佳答案

是的,它将像基于c postgresql客户端库的任何接口一样使用~/.pgpass
但是,不在文件中使用密码的一个好的替代方法是将其放在libpq环境变量中。如果在脚本中设置此值,则它将由它调用的每个程序继承。
PGPASSWORD设置后将用作任何连接的密码,这意味着大多数连接到PostgreSQL的程序。

相关文章:

ruby - 如何在Ruby中的命名空间类上调用命名空间方法

arrays - 在Ruby中使用Hash键和值创建新数组

mysql - DataStudio Mysql连接-用户被拒绝

postgresql - 插入触发器以使用PostgreSQL更新另一个表

javascript - 用 Cypress 连接到SQL DB

python - Python数据库连接关闭

ruby-on-rails - Sessions::CookieStore(默认)和Sessions::CacheStore有什么区别?

ruby - (Watir Webdriver)在OSX 10.9中使用多屏显示时如何将浏览器移至另一个屏幕

postgresql - Microsoft Hex日期

sql - 使用动态文件名将sql函数的输出保存到csv文件(COPY)