Postgresql

Postgres:在非互動式腳本中以 postgres 使用者身份進行身份驗證

  • February 19, 2018

我正在編寫一個需要執行 postgres 命令的非互動式腳本。該腳本只能由root或具有sudo權限的使用者執行,postgres 命令需要以postgrespostgresql 中的使用者身份執行。問題是 postgresql 總是(據我所知)以互動方式提示輸入密碼(即pqsl -U postgres -W)或根本不接受密碼(即psql -U postgres -w)。我想在命令行上傳遞密碼,類似於 mysql 允許的方式mysql -u user -p password。我怎樣才能用 postgres 做到這一點?

有兩種方法可以做同樣的事情。

方法1:

.pgpass在使用者(執行腳本的使用者)的主目錄中添加一個文件:

$ cat /home/user/.pgpass
hostname:port:database:user:password
$ chmod 600 /home/user/.pgpass

添加上述內容後,您無需在使用的任何腳本中添加密碼。它將直接連接。

方法2:

在您的 shell 腳本中添加以下內容。但是,如果您送出到任何儲存庫,這將暴露您的密碼並成為問題。

export PGPASSWORD=password

使用PGPASSWORD環境變數。例如:

PGPASSWORD=<password> psql -U postgres -c "<postgresql query>"

來源

引用自:https://unix.stackexchange.com/questions/126005