2017-10-08 191 views
1

我在Windows服務器環境中安裝了Postgresql數據庫。我想沒有要求輸入密碼才能計劃使用Windows任務調度運行,每天晚上,所以我需要運行下面的命令作業:psql要求輸入密碼並且不能從pgpass.conf中讀取

psql -U myUserName-d myDBName -c "select MyFunctionName()" 

當我在cmd shell中運行上面的查詢,它問我密碼。當我手動輸入密碼時,該功能正確運行。

所以我的解決方案是從pgpass.conf文件讀取,所以不需要密碼。

這裏是我做了實現這一目標的事情:

我在我的%appdata%創建(AppData\Roaming\postgresql要準確)的目錄中創建的文件pgpass.conf

下面是這個文件的內容:

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

@a_horse_with_no_name我嘗試了使用和不使用它。但它似乎沒有什麼區別。 – Disasterkid

+1

您是否嘗試在cmd提示符下首先設置PGPASSFILE? –

回答

0

如果您不想設置PGPASSFILE環境變量,請將密碼文件放在標準位置%APPDATA%\postgresql\pgpass.conf中,如the documentation所述。

+0

這就是我所做的。但它沒有奏效。這就是爲什麼我在bash腳本中添加'SET PGPASSFILE = [PATH_TO_pgpass.conf]'的原因,但我希望它能從env vars自動讀取。 – Disasterkid

+0

你的問題聽起來像是在別的地方。當你打開一個DOS框並運行'TYPE%APPDATA%\ postgresql \ pgpass.conf'時,你會得到正確的文件嗎? –