読み続けてください。最良の選択肢は最後に来る 。ただし、最初にいくつかのことを明確にしましょう。
パスワード要求のみを無音にします
問題がパスワードプロンプトのみである場合は、それを黙らせることができます。ここでマニュアルを引用します:
-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
、または::1
IPv6で。
ローカル接続のシンプルなソリューション
パラメータ-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:[email protected]: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 \
。