web-dev-qa-db-ja.com

Windows PSQLコマンドライン:パスワードなしのログインを許可する方法はありますか?

私の目標は、パスワードの入力を求められることなくコマンドを実行できるようにすることです。 Windowsコマンドラインからこれを達成する方法はありますか? Linuxでは、標準入力などにパスワードを送信できると感じていますが、Windowsでこれを実行できるかどうかはわかりません。

ありがとう!

20

2つの方法があります。

  • 環境変数PGPASSWORDを設定します。 set PGPASSWORD=yoursecretpassword
  • パスワードファイルを使用%APPDATA%\postgresql\pgpass.confドキュメント で説明されている

パスワードファイル(私の場所はC:\ Users\Grzesiek\AppData\Roaming\postgresql\pgpass.conf)内でdoc形式で指定を使用します。たとえば、データベースpostgresをローカル5432サーバーのロールpostgresとして接続するには、次を追加します。

localhost:5432:postgres:postgres:12345

私はこれをチェックし、(私にとっては)うまく動作しますが、127.0.0.1を使用しないでください。

22

別の便利なオプション(特に、PGサーバーが独自のクライアントマシンで実行され、これがセキュリティ上の問題を引き起こさない場合)は、サーバーでのパスワードなしのログインを許可することです(「信頼」認証モード)。

たとえば、pg_hba.conf(DATAディレクトリ内の典型的な場所:C:\Program Files\PostgreSQL\9.0\data\)ローカルマシンからパスワードなしでアクセスを許可します。

Host     all     all     127.0.0.1/32    trust

次に、と接続します

  psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]
12
leonbloy

私はそれが古い質問であることを知っていますが、私のように見える人にとっては、Windowsの解決策を見つけるのは難しいです。これを.batファイルに貼り付けると動作します(少なくとも私にとっては動作しました)。ディレクターをpostresディレクトリに変更し、環境変数PHPASSWORDを設定して、csvファイルにcopyコマンドを実行し、環境変数をクリアしてから、ルートディレクトリに戻ります。

cd C:\Program Files\PostgreSQL\9.5\bin\

set PGPASSWORD=yourpassword


psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"

set PGPASSWORD=

cd c:\
2
klmbear

このリンク で動作する別の便利なソリューションが見つかりました。基本的に、コマンドの先頭にPGPASSWORDを次のように設定します。

PGPASSWORD=PASSWORD psql YOUR_CODE

手順:

最初の環境変数PGPASSWORD

C:\ Windows\system32> set PGPASSWORD = clave

psql -d basededatos -U usuario

準備ができて、

0
JAGJ jdfoxito

私はこの質問が少し古いことを知っていますが、Windowsでの安全でパスワードのないPostgreSQLログオンのためのより良い手段があると信じています- [〜#〜] sspi [〜#〜]

  1. 同じ名前でローカルまたはドメインユーザーアカウントとPostgreSQLログインを作成します。

  2. pg_ident.conf、マッピングを作成します。

    # MAPNAME   SYSTEM-USERNAME      PG-USERNAME
    SSPI        username@AUTHORITY   loginname
    

    usernameをWindowsユーザー名(これはドメインアカウントのsAMAccountName属性です)に置き換え、[〜#〜] authority [〜#〜]とコンピューター名または短いドメイン名。 [〜#〜] authority [〜#〜]に何を使用すべきかわからない場合は、PostgreSQLログファイルを確認してください。ローカルアカウントの場合、これはコンピューター名になります。ドメインアカウントの場合は、おそらく短いドメイン名です。最後に、loginnameをPostgreSQLログイン名に置き換えます(混乱を避けるため、両方に同じ名前を使用することをお勧めしますユーザー名およびログイン名)。

  3. pg_hba.conf、ログオンを許可します。例えば。:

    # TYPE   DATABASE   USER        ADDRESS        METHOD
    Host     all        loginname   127.0.0.1/32   sspi map=SSPI
    Host     all        loginname   ::1/128        sspi map=SSPI
    
  4. ドメインアカウントの場合、SPNを設定します。例えば。:

    setspn -S POSTGRES/serverfqdn username
    

これで、指定したユーザー名を使用してWindowsにログオンし、psql.exeなど。パスワードは必要ありません。

0
Bill_Stewart