pg_config एक्सटेंशन और क्लाइंट प्रोग्राम को संकलित करने और पोस्टग्रेएसक्यूएल के खिलाफ लिंक करने में मदद करने के लिए अनुपालन जानकारी के लिए है । यह मशीन पर सक्रिय पोस्टग्रेएसक्यूएल इंस्टेंस(ओं) के बारे में कुछ भी नहीं जानता है, केवल बायनेरिज़ ।
pg_hba.conf पीजी कैसे स्थापित किया गया था, इसके आधार पर कई अन्य स्थानों पर दिखाई दे सकते हैं । मानक स्थान है pg_hba.conf के भीतर data_directory डेटाबेस का (जो अंदर हो सकता है /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/, आदि आदि) लेकिन उपयोगकर्ता और पैकेजर इसे जहां चाहें रख सकते हैं । दुर्भाग्य से ।
एकमात्र वैध तरीके खोजें pg_hba.conf एक चल रहे पोस्टग्रेस्क्ल उदाहरण से पूछना है जहां यह है pg_hba.conf है, या सिसडमिन से पूछें कि यह कहां है । आप यह पूछने पर भी भरोसा नहीं कर सकते कि डेटाडिर कहां है और पार्सिंग है postgresql.conf क्योंकि एक इनिट स्क्रिप्ट एक परम पारित कर सकती है जैसे -c hba_file=/some/other/path पीजी शुरू करते समय ।
आप क्या करना चाहते हैं पोस्टग्रेएसक्यूएल से पूछें:
SHOW hba_file;
यह आदेश एक सुपरयुसर सत्र पर चलाया जाना चाहिए, इसलिए शेल स्क्रिप्टिंग के लिए आप कुछ ऐसा लिख सकते हैं:
psql -t -P format=unaligned -c 'show hba_file';
और पर्यावरण चर सेट करें PGUSER, PGDATABASE, आदि यह सुनिश्चित करने के लिए कि कनेक्शन सही है ।
हां, यह कुछ हद तक चिकन-एंड-अंडे की समस्या है, जिसमें यदि उपयोगकर्ता कनेक्ट नहीं कर सकता है (कहें, संपादन को खराब करने के बाद pg_hba.conf) आप नहीं पा सकते pg_hba.conf ताकि इसे ठीक किया जा सके ।
एक अन्य विकल्प को देखना है ps कमांड का आउटपुट और देखें कि क्या पोस्टमास्टर डेटा निर्देशिका तर्क -D वहाँ दिखाई दे रहा है, उदा ।
ps aux | grep 'postgres *-D'
चूंकि pg_hba.conf डेटा निर्देशिका के अंदर होगा (जब तक कि आप डेबियन/उबंटू या कुछ व्युत्पन्न और उनके पैकेज का उपयोग न करें) ।
यदि आप विशेष रूप से उबंटू सिस्टम को डेबियन/उबंटू पैकेज से स्थापित पोस्टग्रेएसक्यूएल के साथ लक्षित कर रहे हैं तो यह थोड़ा आसान हो जाता है । आपको हाथ से संकलित-से-स्रोत पीजी से निपटना नहीं है जो किसी का है initdb'डी उनके घर डीआईआर के लिए एक डेटाडिर, या एक उद्यमी डीबी पीजी स्थापित /ऑप्ट, आदि । आप पूछ सकते हैं pg_wrapper, डेबियन / उबंटू मल्टी-वर्जन पीजी मैनेजर, जहां पोस्टग्रेएसक्यूएल उपयोग कर रहा है द pg_lsclusters आदेश से pg_wrapper.
यदि आप कनेक्ट नहीं कर सकते (पीजी नहीं चल रहा है, या आपको संपादित करने की आवश्यकता है pg_hba.conf कनेक्ट करने के लिए) आपको सिस्टम को खोजना होगा pg_hba.conf फ़ाइलें। मैक और लिनक्स पर कुछ इस तरह sudo find / -type f -name pg_hba.conf करेंगे। फिर जाँच करें PG_VERSION यदि आपके पास एक से अधिक हैं तो यह सुनिश्चित करने के लिए एक ही निर्देशिका में फ़ाइल करें कि यह सही पोस्टग्रेस्क्ल संस्करण है । (यदि pg_hba.conf में है /etc/ , इसे अनदेखा करें, यह इसके बजाय मूल निर्देशिका नाम है) । यदि आपके पास एक ही पोस्टग्रेएसक्यूएल संस्करण के लिए एक से अधिक डेटा निर्देशिका है, तो आपको डेटाबेस आकार देखना होगा, चल रहे पोस्टग्रेज की कमांड लाइन की जांच करें ps यह देखने के लिए कि क्या यह डेटा निर्देशिका है -D तर्क मेल खाता है जहां आप संपादन कर रहे हैं, आदि ।