2016-08-15 10 views
0

PostgreSQLに問題があります。psql.exeは、パスワードとして書いたものを無視します。私はこれまで何PostgreSQLのpsql.exeがパスワードの有効性を確認しない

私はPostgreを開始するための簡単な(PowerShellの)スクリプトを実行します。

:その実行している

Start-Process -FilePath "C:\Program Files\PostgreSQL\pg95\bin\pg_ctl.exe" ` 
    'start -D "C:\Program Files\PostgreSQL\data\pg95"'' 

を、私は今、このようなものを使用してデータベースにアクセスすることができます

& "C:\Program Files\PostgreSQL\pg95\bin\psql.exe" ` 
    --dbname=$databaseName --host=$dbHost --username=$userName -c $sqlString 

しかし、ほとんどの場合、端末はパスワードを入力しないでください

.. 
-W, --password: force password prompt (should happen automatically) 

しかし、それはない:psql.exe --helpはラインを与えるため、

これは、奇数です。 -Wを適用しようとすると、プロンプトが表示されますが、書き込むものは無視され、データベースにアクセスできます。

解決策は、パスワードが%appdata%\Postgresql\pgpass.confに設定されている可能性がありますが、それは空です。 もう一つの解決策は、環境変数PGPASSWORDが設定されていますが、どこにも設定されていません。私はGet-ChildItem Env: Powershellで、set cmdで試しましたが、どちらも設定していません。

どのような提案も歓迎されます。

+1

は – Abelisto

答えて

2

私が今まで見た中で最も短かったが、最も役立つ答え、@abelisto。 c:\Program Files\PostgreSQL\data\pg95\の下にあります私のpg_hba.conf

は、言った:

は無条件に接続を許可する:

# TYPE DATABASE  USER   CIDR-ADDRESS   METHOD 

# IPv4 local & remote connections: 
host all    all    127.0.0.1/32   trust 
host all    all    0.0.0.0/0    md5 
# IPv6 local connections: 
host all    all    ::1/128     trust 

From Abelisto's linktrustは次のように定義されます。この方法では、PostgreSQLデータベースサーバに接続できる人は誰でも、パスワードやその他の認証を必要とせずに、任意のPostgreSQLユーザとしてログインできます。 md5にそれらを切り替える

は、より良い結果を与えた:

は、認証のための二重MD5ハッシュパスワードを提供することをクライアントに要求します。

+1

あなたの混乱が不当ではない[ 'pg_hba.conf'](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html)詳細については、こちらをご覧ください。あなたはユーザーが「パスワードあり」を作成することができ、ログインにパスワードを使用する必要はなく、パスワードなしでユーザーを作成することができますサイレントログインが必要です)。 'password'または' md5'認証方式が 'pg_hba.conf'で使われている場合にのみパスワードが使われることに気付くと意味があります。 * 1つが必要です。しかし、スーパーユーザーフレンドリーではありません。 –

関連する問題