2

這PSQL語句在PowerShell中提示密碼:PSQL不是在PowerShell中

.\psql --% -h localhost -p 5000 -U postgres -d mydatabase -c ` 
(SELECT * ...... do something); 

作品 - 而不會提示輸入密碼。

.\psql.exe --help 

指定-w開關不需要密碼。

爲什麼此命令在沒有密碼的情況下工作?數據庫有一個密碼。

只有在PowerShell中,該命令才能在沒有密碼驗證的PSQL交互式shell中運行。

回答

3

-w不需要「無密碼」重讀它說什麼,從我man psql

-w--no-password從不發出密碼提示。 如果服務器需要密碼驗證,並且通過其他方式(如.pgpass文件)無法使用密碼,則連接嘗試將失敗。此選項在沒有用戶輸入密碼的批處理作業和腳本中很有用。請注意,該選項將保持整個會話的設置,因此它會影響元命令\ connect的使用以及初始連接嘗試。

-w是爲了當你運行psql腳本和輸入密碼是不可能的,就像在無頭會話中一樣。

這個命令爲什麼沒有輸入密碼?數據庫有一個密碼。

即使數據庫密碼,如果你的pg_hba.conf文件有信任將不需要密碼。要進一步調試,我們需要看到您的pg_hba.conf

+0

此行在IPv4本地連接的pg_hba.conf中:主機所有的所有x.x.x.x密碼可能是原因。由於數據庫設置爲'全部'。謝謝你的幫助。 – Jelphy