2010-12-17 37 views
5

DB:9.0的Postgres客戶 :Windows 7的 服務器的Windows 2008,64位Postgres的pgpass窗口 - 不工作

我試圖遠程連接到一個Postgres實例執行pg_dump的到我的本地機器的目的。

除了我需要在密碼提示處提供密碼之外,所有的東西都可以在我的客戶端機器上運行,而且我最終希望用腳本批處理。

我在這裏跟着指示:

http://www.postgresql.org/docs/current/static/libpq-pgpass.html

,但它不工作。

回顧一下,我在服務器上創建了一個文件:C:/Users/postgres/AppData/postgresql/pgpass.conf,其中postgresql是db用戶。

該文件具有與以下數據的一個行:

\*:5432:\*postgres:[mypassword] 

我也試着分別[localhost|myip][mydatabasename]代替每個*

從我的客戶端機器,我連接使用:

pg_dump -h <myip> -U postgres -w [mydbname] > [mylocaldumpfile] 

我假定我需要爲了提供-w開關忽略提示輸入密碼,此時它應該在AppData目錄上服務器。

它只是回來了:

連接數據庫失敗:fe_sendauth:沒有提供的密碼。

任何見解都值得讚賞。

作爲一種黑客解決方法,如果有辦法我可以告訴我的客戶端機器上的Windows批處理文件在postgres提示符下注入密碼,那也可以。

感謝。

+2

'-h'是供主機連接的,你的是空的。 'pgpass'文件中的前四個字段應該是文字值或*,你是一個混合。 'pgpass'文件應該駐留在發出'pg_dump'命令的用戶'AppData'文件夾中的客戶端機器上 - 你的服務器上。 – 2010-12-17 15:59:15

+0

空-h是一個錯字。我嘗試了所有'*',沒有'*'和兩者之間的所有組合。我也嘗試了一個本地的AppData文件,但同樣的問題。 – Scott 2010-12-17 17:16:55

+0

.pgpass文件的權限是什麼?它們只需要用戶可讀。 – 2010-12-17 21:17:18

回答

4

我已經解決了在pgpass和psql中使用ip地址的類似問題(僅在Linux中)。

.pgpass

127.0.0.1:5432:db:dbuser:123 

PSQL PARAMS

psql -d db -U dbuser -h 127.0.0.1 -w 

pg_hba的conf使用默認設置:

# IPv4 local connections: 
84 host all   all   127.0.0.1/32   md5 
+0

與Windows上的9.3一樣,確切的事情發生在我身上。將主機更改爲127.0.0.1修復了它。 – user1062589 2016-07-29 18:04:42

3

它爲我的作品:

使用命令行

cd %appdata% 
mkdir postgresql 
cd postgresql 
notepad pgpass.conf 

在pgpass裏面。conf粘貼您的連接字符串(*:5432:*postgres:[mypassword])並保存該文件。 要連接到Postgres的:

psql/pg_dump -U <username> -h <host> -w <other params you want to use> 
0

你可以使用的pgAdmin III存儲密碼(在服務器的屬性)。 該操作會自動創建一個正確的pgpass.conf文件。然後,您可以安排一個任務來運行一個簡單的批處理文件,內容如下:

"C:\path\to\pg_dump.exe" -U <user> -w <database> > C:\path\to\database.backup

0

我有,我沒能解決類似的問題 - 我不能讓腳本識別pgpass.conf文件。然而,我使用了在我使用的批處理文件(PostgreSQL 9.6)中設置PGPASSWORD環境變量的解決方法。

裏面一個批處理文件:

SET PGPASSWORD=<<password>> pg_dump.exe -h <<host>> -p <<port>> -U <<user>> -Fc -b -v -f <<output file path>> <<database>>

2

我得到它具有以下工作:

pgpass.conf:

127.0.0.1:5432:*:username:password 

不過,我已經在這裏存放:

C:\Users\<user>\AppData\Roaming\postgresql 

由於某種原因,在以前的Postgres迭代中,數據庫生成了pgpass文件並將其存儲在那裏。我碰到了你遇到的同一個問題,把它移到那個目錄,它就起作用了。我不知道爲什麼。

然後,所有你需要做的是:

pg_dump -h myip mydb > mylocaldumpfile 

...確保myippgpass.conf的IP是相同的。如果不是,它會提示您輸入密碼。