Postgresql
如何使用腳本為 PostgreSQL 數據庫設置密碼?
在我正在編寫的 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)並使用密碼文件。您可以查看這些功能的文件: