Linux

如何在維護腳本中包含使用者“postgres”的密碼?

  • June 24, 2016

我正在設置一個 cron 作業來為 postgresql 數據庫做一些日常維護。腳本如下:

#!/bin/sh

dbname="dbname"
username="postgres"
psql -d $dbname -U $username << EOF
delete from links_link where submitted_on > now() - interval'4 days';
EOF

但是,當通過 crontab 執行時,這會失敗,因為我沒有為使用者提供密碼postgres

我的問題是:如何在 shell 腳本中包含使用者 postgres 的密碼?這將使我快速啟動並執行。其次,如何通過不必在腳本中顯式添加密碼來提高安全性?如果有人以前設置過這種東西,他們的經驗是最受歡迎的。提前致謝。

您可能想要切換到(或允許)身份驗證,然後創建一個具有相同名稱的本地系統使用者。然後,您可以以該使用者身份執行該腳本,它會使用該使用者登錄到 postgres。

https://www.postgresql.org/docs/9.0/static/auth-methods.html
https://www.postgresql.org/docs/9.0/static/auth-pg-hba-conf.html

所以在 pg_hba.conf 中是這樣的:

本地數據庫名 someuser ident

然後重新啟動 postgres,你可以 su - someuser 並執行腳本。這比“本地所有信任”更安全,這是預設設置,將允許所有本地使用者無條件地連接到任何數據庫。

引用自:https://serverfault.com/questions/786057