我在Windows服务器环境中安装了Postgresql数据库。我想安排一个使用 Windows任务计划程序的工作每晚运行,所以我需要运行以下命令而不要求输入密码:
psql -U myUserName-d myDBName -c "select MyFunctionName()"
当我在cmd
shell中运行上述查询时,它会要求我输入密码。当我手动输入密码时,该功能正确运行。
所以我的解决方案是从pgpass.conf
文件中读取,因此不需要密码。
以下是我为实现这一目标所做的一切:
我在pgpass.conf
创建的目录中创建了%appdata%
文件(准确地说是AppData\Roaming\postgresql
)。
以下是此文件的内容:
localhost:5432:myDBName:myUserName:myPassword
我也尝试使用值127.0.0.1
代替上面的localhost
。
然后,我添加了一个名为PGPASSFILE
的环境变量(在管理员列表的用户变量中),并为其提供了pgpass.conf
位置。
;C:\Users\administrator\AppData\Roaming\postgresql\pgpass.conf
最后,我停止并重新启动了Windows服务上的Postgres服务并重新运行命令。但它仍然要求密码。
如何让我的命令知道从哪里读取密码?
答案 0 :(得分:0)
如果您不想设置PGPASSFILE
环境变量,请按the documentation所述将密码文件放在标准位置%APPDATA%\postgresql\pgpass.conf
。