GNU/Linux >> Linux の 問題 >  >> Linux

Postgres は localhost を許可していませんが、127.0.0.1 で動作します

問題

Postgres は IPv6 を使用する可能性があります -h localhost指定時 上記の pg_hba.conf が与えられた ident を指定します 、パスワード プロンプトが返されます。

ただし、 -h 127.0.0.1 の場合 が指定されている場合、Postgres に IPv4 の使用を強制します trust に設定されています 上記の構成で、パスワードなしでアクセスできます。

答え

したがって、答えは pg_hba.conf の IPv6 ホスト行を変更することです trust を使用する :

# IPv6 local connections:
host    all         all         ::1/128               trust

構成を変更した後、忘れずに Postgres サービスを再起動してください。


pg_hba.conf で、最初の一致 数えます。マニュアル:

<ブロック引用>

一致する接続タイプ、クライアント アドレス、要求されたデータベース、およびユーザー名を持つ最初のレコードが認証の実行に使用されます。「フォールスルー」または「バックアップ」はありません。1 つのレコードが選択され、認証が失敗した場合、後続のレコードは認証されません。考慮。一致するレコードがない場合、アクセスは拒否されます。

逆順に注意してください :

host    all         all         127.0.0.1/32          trust
host    all         all         127.0.0.1/32          ident

ただし:

host    all         all        localhost             ident
host    all         all        localhost             trust

リロードすることを忘れないでください pg_hba.conf への変更を保存した後 . (再起動は必要ありません。) マニュアル:

<ブロック引用>

pg_hba.conf ファイルは、起動時およびメイン サーバー プロセスが SIGHUP を受信したときに読み取られます。 信号。アクティブなシステムでファイルを編集する場合は、ポストマスターに通知する必要があります (pg_ctl reload を使用) 、SQL 関数 pg_reload_conf() を呼び出す 、または kill -HUP を使用 ) を実行して、ファイルを再読み込みします。

あなたが書いたように本当に「追加」すれば、何の効果もありません。しかし、交換すると

最初のケースでは、trust を取得します。 オープンドアポリシーである認証方法。マニュアル:

<ブロック引用>

PostgreSQL は、サーバーに接続できる人は誰でも、指定したデータベース ユーザー名 (スーパーユーザー名も含む) を使用してデータベースにアクセスすることを許可されていると想定しています

しかし、2 番目のケースでは、ident を取得します。 この認証方法は、正しく機能するように設定する必要があります。

さらに、Cas が後で指摘したように、localhost 127.0.0.1/32 ながら、IPv4 と IPv6 の両方をカバー IPv4 にのみ適用されます。

古いバージョンの 8.4 を実際に使用している場合は、8.4 の古いマニュアルを参照してください。 8.4 が 2014 年に EOL になり、サポートされなくなったことをご存知ですか?現在のバージョンへのアップグレードを検討してください。

Postgres 9.1 以降では、代わりに peer を使用します ident より .

詳細:

  • パスワードなしで psql コマンドを使用してバッチ ファイルを実行する

Linux
  1. スクリプトは実行可能であるが読み取り可能ではありませんか?

  2. Bashscriptはターミナルからは機能しますが、Crontabからは機能しませんか?

  3. Busybox ping IP は機能するが、ホスト名 nslookup が不正なアドレスで失敗する

  1. 「ntpq -pn」コマンドで「名前またはサービスが不明です」というエラーが返される

  2. -i オプションを指定した sed コマンドは Mac では失敗するが、Linux では機能する

  3. rc.local でスクリプトを実行します:スクリプトは機能しますが、起動時には機能しません

  1. Wget で保存せずにファイルを要求するにはどうすればよいですか?

  2. Tomcat がポート 8080 で動作するのに 80 で動作しないのはなぜですか?

  3. Pycharm tensorflow ImportError ですが、ターミナルでは正常に動作します