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