PostgreSQL sunucusuna bağlan: FATAL: host için pg_hba.conf girişi yok


178

Merhaba bana gönderilen bir web sitesi çalıştırmaya çalışıyorum ama bunu yaptıktan sonra bu hata ortaya çıktı

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'den sonra sadece o kullanıcı için pg_hba.conf dosyasına bir girdi eklemem gerektiğini söylüyor. bu benim pg_hba.conf dosyam.

# 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

ancak bunu yaptıktan sonra hata devam ediyor. XAMPP sunucumu birkaç kez yeniden başlattım ancak hiçbir değişiklik görünmüyor. Şimdiden teşekkürler


Sadece web sunucusunu değil PostgreSQL'i de yeniden başlattınız mı? Dene SELECT pg_reload_conf().
Craig Ringer

Yanıtlar:


220

Aşağıdaki satırları şuraya ekle veya düzenle postgresql.conf:

listen_addresses = '*'

Aşağıdaki satırı, ilk satır olarak ekleyin pg_hba.conf. Şifreli bir şifre ile tüm kullanıcılar için tüm veritabanlarına erişim sağlar:

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

Bunun için service postgresql restartveya kurulumunuz için eşdeğer bir komut ekledikten sonra Postgresql'i yeniden başlatın .


5
Bunun çalışması için kullanıcı için bir parola ayarlanmış olması gerektiğini unutmayın : sudo -u <username> psql postgresdaha sonra \passwordsonuçta ortaya çıkan sql isteminde bir ayar istenir.
ijoseph

2
Bunu ekledikten sonra postgresql'i yeniden başlatmayı unutmayın: service postgresql restart
ammills01 24:18

Bağlantıları özel alanlara (örneğin bir ofis içi ve İnternet'in geri kalanı gibi) sınırlandırmak için biraz daha fazla güvenlik istiyorsanız, ilk numarayı ağınıza uyması için 10, 172 veya 192 olarak değiştirebilirsiniz: örneğin, 172.0. 0.0.0.0/0 yerine 0.0 / 0
Nate Wanner

22

Bu çözüm IPv4 / IPv6 için çalışıyor

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

finalde ekle

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

ve postgresql hizmetini yeniden başlatın

/etc/init.d/postgresql restart

12

Bunu çözme şeklim şuydu:

Aşağıdaki gibi satır eklendi pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

ve bu, postgresql.confgösterildiği gibi değiştirildi :

listen_addresses = '*'  

Ben üzerinde çalışan bu örneğini vardı CentOS 7.3 ve Postgres 9.5 bir VM Azure bu POC (kavram ispatı) Eğer gerçek prod ortamında SSL olmadan bağlamak istemeyecektir oldu verildi.

Örneğe bağlanmak için macOS Sierra'da pgAdmin 4 kullanıyordum .


4
Yalnızca SSL değil ... kavram kanıtı olmayan ve ağa erişilebilen herhangi bir şey için bağlantılara güvenmezsiniz , bazı kimlik doğrulamaları gerekir .
joanolo

5

Taze Postgres 9.5 kurulumu, Ubuntu.

Anahtar yerel bağlantı türüydü, çünkü psql alan soketi bağlantısını kullanıyor.

pg_hba.conf

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

3

SSH tüneli kullanarak yerel bir veritabanına bağlanmaya çalışırken de aynı hatayı yaşadım. Ben gelen ana bilgisayar adını değiştirerek çözmüş localhostiçin 127.0.0.1.


3
  1. Altına aşağıdaki satırı ekleyin pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. Şuradaki satırı ekle / değiştir postgresql.conf:

    listen_addresses = '*'

  3. Bağlanan kullanıcının bir şifresine sahip olduğundan emin olun: (Örnek connect user isimli postgres)

    a. Aşağıdaki psqlkomutu postgreskullanıcı hesabı ile çalıştırın :

    sudo -u postgres psql postgres

    b. Şifreyi ayarlayın:

    # \password postgres

görüntü tanımını buraya girin


1
Uzak bağlantılar için güven kullanmayın
Eckes

2

Doğru yapılandırma dosyasını bulun:

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

Dosyanın sonuna aşağıdakini ekleyin:

local all all peer

Ardından PostgreSQL uygulamanızı yeniden başlatın:

/bin/systemctl restart postgresql*.service

1

Benim durumumda, hata bilgilerinin önerdiği şekilde tam satırı eklemek zorunda kaldım. Kural olarak tüm IP'leri olan "tüm" kullanıcıları ekleyerek atlayamazsınız. Şimdi öyle:

CentOS 7'de 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

Bu aşağıda benim için çalıştı: (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

güven

Koşulsuz bağlantıya izin verin. Bu yöntem, PostgreSQL veritabanı sunucusuna bağlanabilen herkesin, şifre veya başka bir kimlik doğrulaması gerekmeden istediği herhangi bir PostgreSQL kullanıcısı olarak giriş yapmasını sağlar.

md5

İstemciden, kimlik doğrulama için çift MD5 karma bir şifre vermesini isteyin.

daha fazla bilgi için buraya bakın


0

Debian kullanıcıları için talimatlar.

Poscres kullanıcısı olarak giriş yapın:

$ sudo su - postgres

Veritabanını sorgulayarak pg_hba.conf dosyasının yerini alın:

$ psql -c "SHOW hba_file;"

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

Pg_hba.conf dosyasını açın:

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

"Gerçek yapılandırmanızı buraya yerleştirin" yazdığı yapılandırmayı ekleyin:

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

Kullanıcıya oturumu kapat:

$ exit
logout

Değişikliklerin geçerli olması için postgres sunucunuzu yeniden başlatın:

$ sudo systemctl restart postgresql

-1

Yalnızca aşağıdaki yapılandırmayı ekleyerek benim için çalışıyor:

# 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

Yapılandırma dosyasına aşağıdaki sırayı yazmanız yeterlidir:

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

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

Hepsi bu. Dosya db-config, ana bilgisayarın, kullanıcının, parolanın ve veritabanının teknik özelliklerini içerir. Bu küçük değişiklikle hem yerel olarak hem de pasaport servisinde (Heroku) mükemmel çalışıyor. Tamamen test edildi.


Bu nedir (ve nerede) db-config? Bir XAMPP yapılandırma dosyası mı?
ypercubeᵀᴹ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.