PostgreSQL सर्वर से कनेक्ट करें: FATAL: होस्ट के लिए कोई pg_hba.conf प्रविष्टि नहीं


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

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 को फिर से शुरू किया है, न कि सिर्फ वेब सर्वर के जरिए? कोशिश करो SELECT pg_reload_conf()
क्रेग रिंगर

जवाबों:


220

अपने में निम्न पंक्ति जोड़ें या संपादित करें postgresql.conf:

listen_addresses = '*'

निम्नलिखित पंक्ति को पहली पंक्ति के रूप में जोड़ें pg_hba.conf। यह एक एन्क्रिप्टेड पासवर्ड के साथ सभी उपयोगकर्ताओं के लिए सभी डेटाबेस तक पहुंच की अनुमति देता है:

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

Postgresql service postgresql restartको अपने सेटअप के साथ या समतुल्य कमांड के साथ जोड़ने के बाद पुनः प्रारंभ करें।


5
ध्यान दें कि इस काम के लिए, उपयोगकर्ता के लिए एक पासवर्ड सेट किया जाना चाहिए : sudo -u <username> psql postgresतो \passwordपरिणामी sql प्रॉम्प्ट पर एक सेट करने के लिए संकेत देगा।
जोजफ

2
Postgresql को जोड़ने के बाद पुनः आरंभ करना न भूलें: सेवा postgresql पुनः आरंभ करें
ammills01

यदि आप निजी डोमेन (जैसे किसी कार्यालय के भीतर, और बाकी इंटरनेट पर नहीं) से कनेक्शन को सीमित करने के लिए थोड़ी अतिरिक्त सुरक्षा चाहते हैं, तो आप अपने नेटवर्क से मिलान करने के लिए पहले नंबर को 10, 172 या 192 में बदल सकते हैं: उदाहरण के लिए 172.0।
0.0.0.0/0 के

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 = '*'  

मैं इस उदाहरण एक पर चल रहा Centos 7.3 और Postgres 9.5 में एक वी एम में Azure दिया यह एक POC (अवधारणा का सबूत) आप अपने वास्तविक prod वातावरण में एसएसएल के बिना कनेक्ट करना चाहते हैं नहीं होंगे था।

उदाहरण के लिए कनेक्ट करने के लिए मैं macos Sierra पर pgAdmin 4 का उपयोग कर रहा था ।


4
एसएसएल ही नहीं ... ऐसी किसी भी चीज पर, जो अवधारणा का प्रमाण नहीं है और नेटवर्क एक्सेसेबल है, आप कनेक्शन पर भरोसा नहीं करेंगे , आपको कुछ प्रमाणीकरण की आवश्यकता होगी ।
जोनलो

5

ताजा पोस्टग्राउंड 9.5 स्थापित, उबंटू।

मुख्य स्थानीय कनेक्शन प्रकार था, क्योंकि psql डोमेन सॉकेट कनेक्शन का उपयोग करता है।

pg_hba.conf

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

3

जब एसएसएच सुरंग का उपयोग कर मैंने स्थानीय डेटाबेस से कनेक्ट करने का प्रयास किया तो मुझे वही त्रुटि हुई। मैंने इसे होस्ट नाम से बदलकर हल कर 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)

    ए। उपयोगकर्ता खाते के psqlसाथ निम्नलिखित कमांड चलाएँ postgres:

    sudo -u postgres psql postgres

    ख। पासवर्ड सेट करें:

    # \password postgres

यहां छवि विवरण दर्ज करें


1
दूरदराज के कनेक्शन के लिए विश्वास का उपयोग न करें
eckes

2

सही कॉन्फ़िगरेशन फ़ाइल ढूंढें:

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

फ़ाइल के अंत में निम्नलिखित जोड़ें:

local all all peer

फिर अपने PostgreSQL एप्लिकेशन को पुनः आरंभ करें:

/bin/systemctl restart postgresql*.service

1

मेरे मामले में, मुझे त्रुटि जानकारी द्वारा सुझाए गए सटीक रेखा को जोड़ना था। नियम के रूप में सभी आईपी के साथ "सभी" उपयोगकर्ताओं को जोड़कर इसे बायपास नहीं किया जा सकता है। अब यह इस प्रकार है:

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

विश्वास

बिना शर्त कनेक्शन की अनुमति दें। यह विधि किसी को भी अनुमति देता है जो कि पोस्टग्रेक्यूएल डेटाबेस सर्वर से जुड़ सकता है ताकि पासवर्ड या किसी अन्य प्रमाणीकरण की आवश्यकता के बिना किसी भी पोस्टग्रेक्यूएल उपयोगकर्ता के रूप में लॉगिन कर सकें।

md5

प्रमाणीकरण के लिए क्लाइंट को डबल-एमडी 5-हैशेड पासवर्ड की आपूर्ति करने की आवश्यकता होती है।

यहाँ और देखें


0

डेबियन उपयोगकर्ताओं के लिए निर्देश।

उपयोगकर्ता के रूप में लॉगिन करें:

$ 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

परिवर्तनों को प्रभावी करने के लिए अपने पोस्टग्रेज सर्वर को पुनरारंभ करें:

$ 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में होस्ट, उपयोगकर्ता, पासवर्ड और डेटाबेस के विनिर्देशन डेटा शामिल हैं। इस छोटे से बदलाव के साथ यह स्थानीय और पास सर्विस (हरोकू) दोनों में पूरी तरह से काम करता है। पूरी तरह से परीक्षण किया गया।


क्या और कहाँ) यह है db-config? क्या यह एक्सएएमपीपी कॉन्फिग फाइल है?
ypercube y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.