terhubung ke server PostgreSQL: FATAL: tidak ada entri pg_hba.conf untuk host

178

Halo Saya mencoba menjalankan situs web yang dikirim kepada saya tetapi setelah melakukannya kesalahan ini muncul

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

setelah Googling dikatakan bahwa saya hanya perlu menambahkan entri dalam file pg_hba.conf untuk pengguna tertentu. ini file pg_hba.conf saya.

# 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

tetapi setelah melakukannya, kesalahan masih tetap ada. Saya memulai ulang server XAMPP saya beberapa kali tetapi tidak ada perubahan yang muncul. Terima kasih sebelumnya

Jin
sumber
Apakah Anda me-restart PostgreSQL sendiri, bukan hanya server web? Coba SELECT pg_reload_conf().
Craig Ringer

Jawaban:

220

Tambahkan atau edit baris berikut di Anda postgresql.conf:

listen_addresses = '*'

Tambahkan baris berikut sebagai baris pertama pg_hba.conf. Ini memungkinkan akses ke semua database untuk semua pengguna dengan kata sandi terenkripsi:

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

Restart Postgresql setelah menambahkan ini dengan service postgresql restartatau perintah yang setara untuk pengaturan Anda.

Jérôme Radix
sumber
5
Perhatikan bahwa untuk bekerja, password harus telah ditetapkan untuk pengguna : sudo -u <username> psql postgres, kemudian \passworddi sql cepat dihasilkan akan meminta untuk pengaturan satu.
ijoseph
2
Jangan lupa untuk me-restart postgresql setelah menambahkan ini: service postgresql restart
ammills01
Jika Anda ingin sedikit keamanan tambahan yang membatasi koneksi ke domain pribadi (seperti di dalam kantor, dan bukan di Internet), Anda dapat mengubah nomor pertama menjadi 10, 172 atau 192 untuk mencocokkan jaringan Anda: misalnya 172.0. 0,0 / 0 bukannya 0,0.0.0/0
Nate Wanner
22

Solusi ini berfungsi untuk IPv4 / IPv6

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

tambahkan pada akhirnya

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

dan kemudian restart layanan postgresql

/etc/init.d/postgresql restart
Jose Nobile
sumber
12

Cara saya memecahkan ini adalah:

Menambahkan baris seperti di bawah ini di pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

dan ini diubah postgresql.conf, seperti yang ditunjukkan:

listen_addresses = '*'  

Saya memiliki instance ini berjalan pada Centos 7.3 dan Postgres 9.5 di VM di Azure , mengingat ini adalah POC (bukti konsep) Anda tidak akan ingin terhubung tanpa SSL di lingkungan prod aktual Anda.

Untuk terhubung ke instance saya menggunakan pgAdmin 4 di macOS Sierra .

Roberto Lopez
sumber
4
Tidak hanya SSL ... pada apa pun yang bukan merupakan bukti konsep dan dapat diakses jaringan, Anda tidak akan mempercayai koneksi, Anda akan memerlukan beberapa otentikasi .
joanolo
5

Instal Postgres 9.5 Baru, Ubuntu.

Kuncinya adalah jenis koneksi lokal , karena psql menggunakan koneksi soket domain.

pg_hba.conf

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

Saya memiliki kesalahan yang sama ketika saya mencoba terhubung ke database lokal menggunakan terowongan SSH. Saya menyelesaikannya dengan mengubah nama host dari localhostmenjadi 127.0.0.1.

Kemahiran
sumber
3
  1. Tambahkan baris berikut di bagian bawah pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. Tambahkan / ubah baris di postgresql.conf:

    listen_addresses = '*'

  3. PASTIKAN BAHWA pengguna yang terhubung memiliki kata sandi: (Contoh menghubungkan nama pengguna postgres)

    Sebuah. Jalankan psqlperintah berikut dengan postgresakun pengguna:

    sudo -u postgres psql postgres

    b. Setel kata sandi:

    # \password postgres

masukkan deskripsi gambar di sini

nguyên
sumber
1
Jangan gunakan kepercayaan untuk koneksi jarak jauh
eckes
2

Temukan file konfigurasi yang benar:

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

Tambahkan berikut ini di akhir file:

local all all peer

Kemudian restart aplikasi PostgreSQL Anda:

/bin/systemctl restart postgresql*.service
Feriman
sumber
1

Dalam kasus saya, saya harus menambahkan baris persis seperti yang disarankan oleh informasi kesalahan. Tidak dapat mem-bypassnya dengan menambahkan "semua" pengguna dengan semua IP sebagai aturan. Sekarang seperti:

PosgreSQL 10.5 pada CentOS 7.

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

Ini di bawah ini berfungsi untuk saya: (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

kepercayaan

Biarkan koneksi tanpa syarat. Metode ini memungkinkan siapa saja yang dapat terhubung ke server database PostgreSQL untuk masuk sebagai pengguna PostgreSQL apa pun yang mereka inginkan, tanpa perlu kata sandi atau otentikasi lainnya.

md5

Memerlukan klien untuk menyediakan kata sandi hash MD5 ganda untuk otentikasi.

lihat lebih lanjut di sini

Ravistm
sumber
0

Instruksi untuk pengguna Debian.

Login sebagai pengguna posgres:

$ sudo su - postgres

Dapatkan lokasi pg_hba.conf dengan quering basis data:

$ psql -c "SHOW hba_file;"

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

Buka pg_hba.conf:

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

Tambahkan konfigurasi yang berbunyi "Letakkan konfigurasi Anda yang sebenarnya di sini":

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

Logout ke pengguna Anda:

$ exit
logout

Mulai ulang server postgres Anda agar perubahan diterapkan:

$ sudo systemctl restart postgresql
Eugene Kulabuhov
sumber
-1

Ini berfungsi untuk saya hanya menambahkan konfigurasi di bawah ini:

# 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
navjyot verma
sumber
-4

Cukup tulis urutan berikut dalam file konfigurasi:

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

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

Ini semua File tersebut db-configberisi data spesifikasi host, pengguna, kata sandi, dan basis data. Dengan perubahan kecil ini berfungsi dengan baik baik secara lokal maupun dalam layanan pass (Heroku). Sepenuhnya diuji.

Jose Arredondo
sumber
Apa (dan dimana) ini db-config? Apakah ini file konfigurasi XAMPP?
ypercubeᵀᴹ