web-dev-qa-db-ja.com

スーパーユーザーpostgresでパスワードを要求するようにpsqlを取得するにはどうすればよいですか?

私はWindows 7でPostgreSQL 9.6.2を使用しています。コマンドプロンプトからpsqlを起動すると、次のようになります。

psql -U myusername 

それはうまくパスワードを要求してログインします。しかし私がする場合:

psql -U postgres

メインのデータベースにスーパーユーザー権限で直接ログインし、いかなるパスワードも要求しません。入力した場合:

psql -U postgres -W 

次に、ワンクリックインストール中に設定したsuパスワードを要求します。

私はpg_hba.confを確認しましたが、すべてのユーザー、すべてのデータベースでmd5に設定されています。私はパスワードをdbからpostgres=# ALTER USER postgres PASSWORD 'myPassword';で変更して、役に立たなかった。

問題は、通常のユーザーとしてログインするとパスワードを要求され、スーパーユーザーとしてログインしないのはなぜですか?どちらの場合でも自分のデータベースにアクセスできるので、それは大きな問題ではありませんが、まったく安全に思えないだけです。任意の回避策は非常に高く評価されます。

6
pazeltov

通常のユーザーとしてログインするときにパスワードを要求され、スーパーユーザーとしてログインしないのはなぜですか?

安全ではないようです。

あなたが欠けている小さなしかし重要な詳細はあなた(またはあなたのDBAチーム)以外誰も許可されるべきではないということです近くのどこでもデータベースサーバーそして絶対にすべきではない postgresを持っているアカウント資格情報。これらがないと、「パスワードの有無にかかわらず、postgresとしてログインする」という選択肢はありません。

覚えておいてください:DBAとして、他の人が作成する「混乱」をクリーンアップする必要があります。そのため、常に最大かつ最高のツールを自分で保管してください。

3
Phill W.

@a_horse_with_no_nameのコメントに従って、あなたの pgpass.conf.pgpass(Linuxの場合)ファイルがあれば、postgresユーザーのエントリがあるかどうかを確認します。

ユーザーのホームディレクトリにある.pgpassファイル、またはPGPASSFILEによって参照されるファイルには、接続にパスワードが必要な場合に使用するパスワードを含めることができます(他にパスワードが指定されていない場合)。 Microsoft Windowsでは、ファイルの名前は%APPDATA%\ postgresql\pgpass.confです(%APPDATA%はユーザーのプロファイルのApplication Dataサブディレクトリを指します)。