回答:
公式ドキュメントから:
定期的にパスワードを入力する必要がないようにするために〜/ .pgpassファイルがあると便利です。詳細は項30.13を参照してください。
...
このファイルには、次の形式の行が含まれている必要があります。
hostname:port:database:username:password
現在の接続パラメータと一致する最初の行のパスワードフィールドが使用されます。
chmod go-rwx .pgpass
psqlを呼び出す前に、スクリプト内にPGPASSWORD環境変数を設定します
PGPASSWORD=pass1234 psql -U MyUsername myDatabaseName
参考として、http://www.postgresql.org/docs/current/static/libpq-envars.htmlを参照してください。
編集する
Postgres 9.2以降、ユーザー名とパスワードを含むことができる接続文字列またはURIを指定するオプションもあります。
ps
他のユーザーが(Linux)、ProcessExplorer(Windows)などのツールを使用して実行中のプロセスのコマンドラインを見ると、パスワードがプレーンテキストで表示されるため、これを使用するとセキュリティリスクになります。
データベース管理者に関するこの質問も参照してください
space
は、コマンドラインで最初の文字の前にa を追加するだけです。コマンドはbash履歴に保存されません。ubuntu / bashで動作します。
docker run -e PGPASSWORD="$(pbpaste)" --rm postgres psql -h www.example.com dbname username -c 'SELECT * FROM table;'
一行で:
export PGPASSWORD='password'; psql -h 'server name' -U 'user name' -d 'base name' -c 'command'
コマンド SQLコマンドなど"select * from schema.table"
またはもっと読みやすい:
export PGPASSWORD='password'
psql -h 'server name' -U 'user name' -d 'base name' \
-c 'command' (eg. "select * from schema.table")
PGPASSWORD='password' psql ....
、次のようになります。これには、コマンドの実行後に変数にアクセスできないという利点もあります。
export PGPASSWORD=YourNewPassword
他のバリエーションよりも私のために働いた。
export PGPASSWORD
本当に悪い考えのように聞こえる
私はURLをpsqlに渡すことを好む傾向があります:
psql "postgresql://$DB_USER:$DB_PWD@$DB_SERVER/$DB_NAME"
これにより、環境変数に自由に名前を付けることができ、不要なファイルの作成を回避できます。
これにはが必要libpq
です。ドキュメントはここにあります。
Windowsの場合:
PGPASSWORDに値を割り当てます。 C:\>set PGPASSWORD=pass
コマンドを実行: C:\>psql -d database -U user
準備ができて
または一行で
set PGPASSWORD=pass&& psql -d database -U user
&&!の前にスペースがないことに注意してください。
-w
も渡す必要があります。
PGPASSWORD=xxxx psql -U username -d database -w -c "select * from foo;"
動作します。
これ.pgpass
は、(Linux)ユーザーのホームディレクトリにファイルを作成することで実行できます。
.pgpass
ファイル形式:
<databaseip>:<port>:<databasename>:<dbusername>:<password>
*
詳細の代わりにワイルドカードを使用することもできます。
tmp.sql
パスワードを要求せずに実行したいとします。
次のコードを使用すると、*。shファイルでできます
echo "192.168.1.1:*:*:postgres:postgrespwd" > $HOME/.pgpass
echo "` chmod 0600 $HOME/.pgpass `"
echo " ` psql -h 192.168.1.1 -p 5432 -U postgres postgres -f tmp.sql `
pg_env.shの内容を.bashrcに追加しました:
cat /opt/PostgreSQL/10/pg_env.sh
#!/bin/sh
# The script sets environment variables helpful for PostgreSQL
export PATH=/opt/PostgreSQL/10/bin:$PATH
export PGDATA=/opt/PostgreSQL/10/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5433
export PGLOCALEDIR=/opt/PostgreSQL/10/share/locale
export MANPATH=$MANPATH:/opt/PostgreSQL/10/share/man
追加(ユーザーごとの提案4653174)
export PGPASSWORD='password'