我正在编写一个Ruby脚本,它使用PG gem来建立数据库连接并发送文件。我正在构建它以获取主机名,用户名,数据库名称和端口的变量。在我编写的Shell脚本中,为了管理一些配套任务,我依靠~/.pgpass
中存储的密码而不是让用户输入psql
的密码,因为有很多交易,有时会进入密码可能会因为没有明显的原因而失败(并且它很难进入20次)。
如果未明确提供密码,PG是否会访问相同的来源?按照惯例,我已将密码包含在文件中,但由于这是推送到内部可用的repo,我宁愿不在我的文件中包含该信息。我现在正在尝试测试功能,但是想知道SO社区中是否有人知道这个问题的答案。如果PG没有访问.pgpass文件,有没有办法引用变量并将其写入文件而不提示用户输入密码?
提前感谢您的帮助。
答案 0 :(得分:4)
是的,它将使用~/.pgpass
,就像任何基于libpq
的C PostgreSQL客户端库的接口一样。
但是,在文件中没有密码的好方法是将其放在PGPASSWORD
环境变量中。如果在脚本中设置它,它将被它调用的每个程序继承。
PGPASSWORD
将用作任何libpq
连接的密码,这意味着大多数程序连接到PostgreSQL。