मैं पीजी_एचबीए का रास्ता कैसे खोजूं । खोल से आत्मविश्वास?

मैं पीजी_एचबीए का रास्ता प्राप्त करना चाहूंगा । खोल से आत्मविश्वास । पथ पोस्टग्रेएसक्यूएल के संस्करणों के बीच भिन्न होता है । उदाहरण के लिए, 8.4 और 9.1 के लिए:

/etc/postgresql/8.4/main/pg_hba.conf/etc/postgresql/9.1/main/pg_hba.conf

मैंने कोशिश की है pg_config कमांड, लेकिन इसमें यह जानकारी शामिल नहीं लगती है ।

ऐसा इसलिए है ताकि मैं खोलने के लिए एक समान कमांड का उपयोग कर सकूं pg_hba.conf और संपादन के लिए अन्य पोस्टग्रेएसक्यूएल कॉन्फ़िगरेशन फाइलें ।

मैं बैश का उपयोग कर रहा हूं ।

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 तर्क मेल खाता है जहां आप संपादन कर रहे हैं, आदि ।

इस तरह मैं इसे करता हूं:

john@host:~$ ls /etc/postgresql9.1john@host:~$ sudo vim /etc/postgresql/9.1/main/pg_hba.conf

चूंकि रास्ता इस तरह है: /etc/postgresql/[VERSION]/main/pg_hba.conf

मैं कॉन्फ़िगरेशन फ़ाइलों का पता लगाने के लिए निम्नलिखित का उपयोग कर रहा हूं:

$(ls /etc/postgresql/*/main/pg_hba.conf)$(ls /etc/postgresql/*/main/postgresql.conf)

कमांड लाइन का उपयोग करके, अपने डेटाबेस से पूछें:

$ psql -U postgrespostgres=# SHOW config_file;

सही संपादन pg_hba.conf अपने डिफ़ॉल्ट दृश्य संपादक (विम, एमएसीएस, नैनो, जो, आदि) के साथ । ) जितना आसान है:

$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf

बस पोस्टग्रेएसक्यूएल से पूछें ।

प्रिंट पीजी_एचबीए।कॉन्फिडेंस फाइल लोकेशन:

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

प्रिंट पोस्टग्रेएसक्यूएल।कॉन्फिडेंस फाइल लोकेशन:

su - postgres -c "psql -t -P format=unaligned -c 'SHOW config_file';"

यह जानने के लिए कि फ़ाइल कहाँ हैबस टाइप करें:

pg_lsclusters

पीजी_एचबीए का पता लगाने के बारे में कैसे । कॉन्फिडेंस ?

प्रमोद वहां मौजूद थे। यदि आप जानना चाहते हैं कि उनमें से कौन सा पोस्टग्रेज द्वारा उपयोग किया जा रहा है ।

@ ब्लीडिंग फिंगर्स आपके सेटअप के आधार पर, आप शायद एक्सेस टाइम द्वारा फ़िल्टर कर सकते हैं । 'खोजें / - नाम पीजी_एचबीए।कॉन्फ-अमीन -5(यदि सर्वर को अंतिम 5 मिनट में पुनरारंभ किया गया है; इसे-एटाइममें बदलने के लिए काफी आसान है यदि इसे अंतिम बार लंबे समय पहले पुनरारंभ किया गया था) । या आप परिवर्तन समय की तुलना में नए समय तक पहुंच सकते हैं या अन्य समय-आधारित विकल्पों में से एक को ढूंढ सकते हैं । .. (हालांकिएलएसओएफ | ग्रेप पीजी_एचबीए द्वारा फ़िल्टरिंग । कॉन्फ ’ जबकि एक सर्वर चल रहा है काम नहीं करता है) ।