こんにちは私に送られたウェブサイトを実行しようとしていますが、そうした後、このエラーが表示されました
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
Googling の後、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サーバーを数回再起動しましたが、変更が表示されません。前もって感謝します
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を再起動します。
このソリューションは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
私がこれを解決した方法は:
以下の行をpg_hba.conf
に追加しました:
hostnossl all all 0.0.0.0/0 trust
これはpostgresql.conf
で次のように変更されました:
listen_addresses = '*'
このインスタンスをCentos 7.およびPostgres 9.5で実行しましたVM in Azureで、これが与えられます実際の製品環境ではSSLなしでは接続したくないPOC(概念実証)でした。
私が使用していたインスタンスに接続するには、pgAdmin 4 on macOS Sierraを使用しました。
新しいPostgres 9.5インストール、Ubuntu。
キーはlocal接続タイプでした。これは、psqlがドメインソケット接続を使用するためです。
pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all md5
Host all all 0.0.0.0/0 md5
SSHトンネルを使用してローカルデータベースに接続しようとしたときにも、同じエラーが発生しました。ホスト名をlocalhost
から127.0.0.1
に変更することで解決しました。
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
正しい構成ファイルを見つけます。
su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"
ファイルの最後に次を追加します。
local all all peer
次に、PostgreSQLアプリケーションを再起動します。
/bin/systemctl restart postgresql*.service
これは私のために働きました:(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ハッシュパスワードを提供するよう要求します。
詳細はこちら こちら
私の場合、エラー情報で提案されているとおりの正確な行を追加する必要がありました。ルールとしてすべての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