私が書いている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)を使用してパスワードファイルを使用できます。
これらの機能のドキュメントをご覧ください。