我正在尝试使用 bash 脚本开发一个 cli 来从PostgreSQL
数据库中检索报告。
我正在使用 psql 命令和 -F 参数来创建一个包含结果的 CSV。
因此命令是这样的:
psql -h myhost -p 5432 -U myuser -d mydatabase -W -A -F"," -c "<MY QUERY>" > $(date +%Y%m%d%H%M)_report.csv
当我执行此命令时,即使我使用 PGPASSWORD 变量在执行之前设置密码,也总是会提示输入密码。
如果我只尝试连接,它就会运行,但如果我添加 -W -A -F -c 并将其发送到特定文件,它就不起作用。
还有其他方法可以自动输入数据库密码吗?
答案1
总结:只需-W
从 psql 选项中删除即可。
“当我执行此命令时,即使我使用 PGPASSWORD 变量进行设置,也总是会提示密码请求”
“始终询问密码”是该-W
选项的用途。具体来说,在检查服务器是否需要密码之前,它会执行此操作,这取决于 中配置的规则pg_hba.conf
。
来自 psql 手册页:
-W, --password 强制 psql 在连接到数据库之前提示输入密码。
此选项从来都不是必需的,因为如果服务器要求密码验证,psql 将自动提示输入密码。但是,psql 将浪费一次连接尝试来发现服务器需要密码。在某些情况下,值得输入 -W 以避免额外的连接尝试。