読み続けてください。最良のオプションは最後に来ます。しかし、最初にいくつかのことを明確にしましょう。
パスワード要求のみを沈黙させる
問題がパスワード プロンプトのみの場合は、サイレントにすることができます。ここでマニュアルを引用します:
-w
--no-password
パスワード プロンプトを発行しないでください。サーバーがパスワード認証を要求し、.pgpass
ファイルなどの他の手段でパスワードを使用できない場合、接続試行は失敗します。このオプションは、パスワードを入力するユーザーが存在しないバッチ ジョブやスクリプトで役立ちます。(...)
おそらくパスワードは必要ありません
通常、これは不要です。通常、デフォルトのデータベース スーパーpostgres
ユーザーは、同じ名前のシステム ユーザーに対応します。認証方法またはがファイルに設定されている場合、このアカウントからの実行psql
にパスワードは必要ありません。おそらく次のような行があります。peer
ident
pg_hba.conf
local all postgres peer
また、通常は次のことも行います。
local all all peer
これは、すべてのローカルユーザーがパスワードなしで同じ名前のデータベース ユーザーとしてすべてのデータベースにログインできることを意味します。
ただし、ここにはよくある誤解があります。再び引用:
このメソッドは、ローカル接続でのみサポートされています。
大胆強調鉱山。「ローカル」という単語が含まれていても、「ローカル接続」ではない に
接続しています。127.0.0.1 への TCP/IP 接続です。ローカルホストのウィキペディア:localhost
最新のコンピューター システムでは、ホスト名が(ループバック) ネット ブロック (通常は、またはIPv6 )localhost
の IPv4 アドレスに変換されるためです。127.0.0.0/8
127.0.0.1
::1
ローカル接続のためのシンプルなソリューション
呼び出し-h
からパラメーターを省略します。もう一度マニュアルをpsql
引用します:psql
ホスト名を省略すると、psql は Unix ドメイン ソケット経由でローカル ホスト上のサーバーに接続するか
、TCP/IP 経由でlocalhost
Unix ドメイン ソケットを持たないマシンに接続します。
ウィンドウズ
... には Unix ドメイン ソケットがありません。でpg_hba.conf
始まる行local
は Windows には適用されません。Windows ではlocalhost
、デフォルトで経由して接続するため、最初に戻ります。
セキュリティ要件が緩い場合は、次の方法ですべての接続を信頼できますlocalhost
。
host all all 127.0.0.1/32 trust
リモート接続をオフにしてデバッグする場合にのみ、これを行います。セキュリティを強化するために、Windows でSSPI 認証を使用できます。pg_hba.conf
「ローカル」接続の場合は、次の行を追加します。
host all all 127.0.0.1/32 sspi
実際にパスワードが必要な場合
環境変数を設定することもできますが、特に Windows では推奨されません。マニュアル:
PGPASSWORD
password接続パラメーターと同じように動作します。一部のオペレーティング システムでは、root 以外のユーザーが ps を介してプロセス環境変数を参照できるため、この環境変数の使用はセキュリティ上の理由からお勧めしません。代わりに、~/.pgpass
ファイルの使用を検討してください (セクション 32.15を参照)。
のマニュアルpsql
:
接続パラメーターを指定するconninfo
代わりに文字列を使用できます。
$ psql "user=myuser password=secret_pw host=localhost port=5432 sslmode=require"
または、データベース名の代わりに使用されるURI :
$ psql postgresql://myuser:secret_pw@localhost:5432/mydb?sslmode=require
パスワードファイル
ただし、通常は、パスワードをスクリプト ファイルに入れるよりも、.pgpass
ファイルを設定する方が望ましいです。マニュアルの短い章を注意深く
読んでください。特に、ここに注意してください...
のホスト名は、ローカル マシンからのlocalhost
TCP (ホスト名localhost
) および Unix ドメイン ソケット (空または既定のソケット ディレクトリ) 接続の両方に一致します。pghost
正確なパスはシステムによって異なります。このファイルは、ロールとポート (DB クラスター) の複数の組み合わせのパスワードを保存できます。
localhost:5432:*:myadmin:myadminPasswd
localhost:5434:*:myadmin:myadminPasswd
localhost:5437:*:myadmin:myadminPasswd
...
Windowsマシンでは、次のファイルを探します。
%APPDATA%\postgresql\pgpass.conf
%APPDATA%
通常、次のように解決されますC:\Documents and Settings\My_Windows_User_Name\Application Data\
。