PostgreSQLサーバーに接続します:FATAL:no pg_hba.conf entry for host


178

こんにちは私は私に送られたウェブサイトを実行しようとしていますが、そうするとこのエラーが表示されます

connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37

グーグル調べた後、その特定のユーザーのエントリをpg_hba.confファイルに追加するだけでいいと言われています。これはpg_hba.confファイルです。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

しかし、そのようにした後もエラーは続きます。XAMPPサーバーを数回再起動しましたが、変更は表示されません。前もって感謝します


Webサーバーだけでなく、PostgreSQLを再起動しましたか?試してみてくださいSELECT pg_reload_conf()
クレイグリンガー14

回答:


220

で次の行を追加または編集しますpostgresql.conf

listen_addresses = '*'

次の行をの最初の行として追加しますpg_hba.conf。暗号化されたパスワードを使用して、すべてのユーザーのすべてのデータベースにアクセスできます。

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

service postgresql restartセットアップまたはこれに相当するコマンドを追加した後、Postgresqlを再起動します。


5
これが機能するためには、ユーザーのパスワードが設定されている必要があることに注意してください:sudo -u <username> psql postgres\password結果のsqlプロンプトでパスワードの設定を求められます。
ijoseph

2
これを追加した後、postgresqlを再起動することを忘れないでください:service postgresql restart
ammills01

プライベートドメインへの接続を制限するセキュリティを少し強化したい場合(オフィス内であり、インターネットの残りの部分ではない場合)、ネットワークに合わせて最初の番号を10、172、または192に変更できます(172.0など)。 0.0.0.0/0ではなく0.0 / 0
Nate Wanner

22

このソリューションはIPv4 / IPv6で機能します

nano /var/lib/pgsql/data/pg_hba.conf

最終的に追加

host all all      ::1/128      md5
host all postgres 127.0.0.1/32 md5

その後、postgresqlサービスを再起動します

/etc/init.d/postgresql restart

12

私がこれを解決した方法は:

以下に行を追加しましたpg_hba.conf

hostnossl    all          all            0.0.0.0/0  trust        

これは、次のように変更されましたpostgresql.conf

listen_addresses = '*'  

Azureの VMのCentos 7.3およびPostgres 9.5でこのインスタンスを実行しましたが、これは実際のprod環境でSSLなしで接続したくないPOC(概念実証)でした。

インスタンスに接続するには、macOS SierraでpgAdmin 4を使用していました


4
だけでなく、SSL ...コンセプトの証明ではなく、ネットワークacessibleあるものの上に、あなたはないでしょう信頼の接続を、あなたには、いくつか必要になるの認証を
-joanolo

5

新鮮なPostgres 9.5インストール、Ubuntu。

psqlはドメインソケット接続を使用するため、キーはローカル接続タイプでした。

pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
host  all  all 0.0.0.0/0 md5

3

SSHトンネルを使用してローカルデータベースに接続しようとしたときに、同じエラーが発生しました。ホスト名をからlocalhostに変更して解決しました127.0.0.1


3
  1. の下部に次の行を追加しますpg_hba.conf

    hostnossl all all 0.0.0.0/0 md5

  2. 次の行を追加/変更しますpostgresql.conf

    listen_addresses = '*'

  3. 接続しているユーザーがパスワードを持っていることを確認してください:(接続ユーザー名の例postgres

    a。ユーザーアカウントで次のpsqlコマンドを実行しpostgresます。

    sudo -u postgres psql postgres

    b。パスワードを設定します。

    # \password postgres

ここに画像の説明を入力してください


1
リモート接続に信頼を使用しないでください
18年

2

正しい構成ファイルを見つけます。

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"

ファイルの最後に次を追加します。

local all all peer

次に、PostgreSQLアプリケーションを再起動します。

/bin/systemctl restart postgresql*.service

1

私の場合、エラー情報が示唆するとおりに正確な行を追加する必要がありました。ルールとして、すべてのIPを持つ「すべての」ユーザーを追加して、それをバイパスすることはできません。今のようです:

CentOS 7上のPosgreSQL 10.5

# IPv4 local connections:
host    all             all             127.0.0.1/32                    md5
host    <db_name>       postgres        <my_client_machine_ip>/32       md5

1

これは私のために働いた:(pg_hba.conf)

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only     
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0               trust

信頼

無条件で接続を許可します。この方法により、PostgreSQLデータベースサーバーに接続できるすべてのユーザーが、パスワードやその他の認証を必要とせずに、希望するPostgreSQLユーザーとしてログインできます。

md5

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

詳細はこちらをご覧ください


0

Debianユーザー向けの説明。

posgresユーザーとしてログインします。

$ sudo su - postgres

データベースを検索して、pg_hba.confの場所を取得します。

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)

pg_hba.confを開きます。

nano /etc/postgresql/11/main/pg_hba.conf

「実際の構成をここに入れてください」と表示されている場所に構成を追加します。

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

ユーザーへのログアウト:

$ exit
logout

postgresサーバーを再起動して、変更を有効にします。

$ sudo systemctl restart postgresql

-1

以下の設定を追加するだけで機能します:

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


-4

構成ファイルに次のシーケンスを書き込むだけです。

const 
  pg                = require('pg'),
config          = require('./db-config'),
    dbOption    = {
      host    : ,
      port    : ,
      user    : ,
      password  :,
      database  : 
    },

  pool          = new pg.Pool(dbOption)
  pg.defaults.ssl = true;

これですべてです。このファイルdb-configには、ホスト、ユーザー、パスワード、およびデータベースの仕様データが含まれています。この小さな変更により、ローカルおよびパスサービス(Heroku)の両方で完全に機能します。完全にテスト済み。


これは何(そしてどこ)db-configですか?XAMPP構成ファイルですか?
ypercubeᵀᴹ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.