psql要求输入密码,而不是从pgpass.conf中读取

时间:2017-10-08 11:58:52

标签: windows postgresql

我在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服务并重新运行命令。但它仍然要求密码。

如何让我的命令知道从哪里读取密码?

1 个答案:

答案 0 :(得分:0)

如果您不想设置PGPASSFILE环境变量,请按the documentation所述将密码文件放在标准位置%APPDATA%\postgresql\pgpass.conf