Postgresql

如何使用腳本為 PostgreSQL 數據庫設置密碼?

  • October 23, 2017

在我正在編寫的 bash 腳本中,我需要創建一個數據庫並設置一個由我的腳本自動生成的密碼。

問題是我找不到在沒有使用者互動的情況下設置密碼的方法。

我需要這樣的東西:

$ createdb mydb -p $(cat password_file)

有任何想法嗎?

文件中:

createdb是 SQL 命令的包裝器CREATE DATABASE。通過此實用程序創建數據庫與通過其他訪問伺服器的方法創建數據庫之間沒有有效的區別。

這意味著您可以編寫一個腳本來發出類似的命令

psql -f createdb.sql -v passwd=$passwd -v user=$user

其中createdb.sql包含類似的東西

CREATE ROLE :user WITH LOGIN PASSWORD :passwd;
CREATE DATABASE mydb OWNER :user;
GRANT {some privileges on the newly created database and/or its objects};

這意味著您將為創建的每個數據庫都有一個使用者。

(同時我有點懷疑你的問題是 riouj 回答的。)

為了連接到您的 PostgreSQL 實例並執行createdb作為客戶端的腳本,您可以使用密碼文件。該文件通常位於~/.pgpass並且必須包含這些資訊:

hostname:port:database:username:password

如果要為密碼文件使用不同的路徑,可以設置PGPASSFILE環境變數。

出於安全考慮,您可以更改其權限:

chmod 600 ~/.pgpass

如果您不想createdb提示您輸入任何密碼,您可以使用 -w 開關(或 –no-password)並使用密碼文件。

您可以查看這些功能的文件:

引用自:https://dba.stackexchange.com/questions/44678