Postgresql
Postgres:在非互動式腳本中以 postgres 使用者身份進行身份驗證
我正在編寫一個需要執行 postgres 命令的非互動式腳本。該腳本只能由
root
或具有sudo
權限的使用者執行,postgres 命令需要以postgres
postgresql 中的使用者身份執行。問題是 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>"