読み続けてください。最良の選択肢は最後に来る 。ただし、最初にいくつかのことを明確にしましょう。
パスワード要求のみを無音にします
問題がパスワードプロンプトのみである場合は、それを黙らせることができます。ここでマニュアルを引用します:
-w-パスワードなしコード>パスワードプロンプトを発行しないでください。サーバーがパスワード認証を必要とし、
.pgpassなどの他の手段でパスワードを使用できない場合 ファイルの場合、接続の試行は失敗します。このオプションは、パスワードを入力するユーザーがいないバッチジョブやスクリプトで役立ちます。 (...)
おそらくパスワードは必要ありません
通常、これは不要です。デフォルトのデータベーススーパーユーザーpostgres 通常、同じ名前のシステムユーザーに対応します。 psqlを実行しています 認証方法がpeer の場合、このアカウントからのパスワードは必要ありません またはident pg_hba.confで設定されます ファイル。おそらく次のような行があります:
local all postgres peer
そして通常も:
local all all peer
つまり、すべてのローカル ユーザーはすべてにログインできます パスワードなしの同じ名前のデータベースユーザーとしてのデータベース。
ただし 、ここにはよくある誤解があります。もう一度引用:
この方法は、ローカル接続でのみサポートされます 。
大胆な強調鉱山。
あなたはlocalhostに接続しています 、これは「ローカル接続」ではありません 、「ローカル」という単語が含まれている場合でも。これは、127.0.0.1へのTCP/IP接続です。ローカルホスト上のウィキペディア:
最新のコンピューターシステムでは、
localhostホスト名が127.0.0.0/8のIPv4アドレスに変換されるため (ループバック)ネットブロック、通常は127.0.0.1、または::1IPv6で。
ローカル接続のシンプルなソリューション
パラメータ-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パスワードconnectionparameterと同じように動作します。一部のオペレーティングシステムでは、非ルートユーザーがpsを介してプロセス環境変数を表示できるため、セキュリティ上の理由から、この環境変数の使用はお勧めしません。代わりに、〜/ .pgpassの使用を検討してください ファイル(セクション32.15を参照)。
psqlのマニュアル :
conninfo 文字列は、接続パラメータを指定するための代替手段です:
$ psql "user=myuser password=secret_pw host=localhost port=5432 sslmode=require"
またはURI 、データベース名の代わりに使用されます:
$ psql postgresql://myuser:example@sqldat.com: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 \ 。