2011-05-27 18 views
28

से पोस्टग्रेस से कनेक्ट नहीं हो सकता है मेरे पास डेटाबेस सर्वर (1 9 2.168.1.50) पोस्टग्रेस चल रहा है। मैंने "testdb" नामक डेटाबेस बनाया है और उपयोगकर्ता "testuserpw" पासवर्ड के साथ उपयोगकर्ता "testuser" बनाया है। जब मैं एक और मेजबान (192.168.1.60) से आदेश जारीरिमोट होस्ट

psql -d testdb -U testuser 

:
स्थानीय स्तर पर, मैं का उपयोग कर db से कनेक्ट कर सकते

psql: could not connect to server: Connection refused 
Is the server running on host "192.168.1.50" and accepting 
TCP/IP connections on port 5432? 
:

psql -h 192.168.1.50 -d testdb -U testuser 

मैं त्रुटि है

कोई विचार?

उत्तर

43

चेक अपने postgresql.conf फ़ाइल में listen_addresses की स्थापना। कई वितरण इसे 127.0.0.1 तक डिफ़ॉल्ट बनाते हैं, यानी स्थानीयहोस्ट से आने वाले कनेक्शनों को सुनें। सभी इंटरफेस पर कनेक्शन सुनने के लिए इसे '*' पर सेट किया जाना चाहिए।

आप अभी भी परेशानी हो रही है, क्या नेटवर्क सॉकेट postgres प्रक्रिया पर सुन रहा है देखने के लिए lsof का उपयोग करें।

+3

एक नोट के रूप में, वहाँ भी एक pg_hba.conf कॉन्फ़िग फ़ाइल जिसमें एक विशिष्ट मशीनों के लिए विश्वास गुण कॉन्फ़िगर कर सकते हैं है। – OleTraveler

+2

इसे '' * ''पर सेट किया जाना चाहिए।शायद यह किसी को एक या दो मिनट बचाएगा। – Kolyunya

3

फ़ायरवॉल कनेक्शन को दे रहा है? या, जांचें कि क्या pg_hba.conf स्थानीयहोस्ट के अलावा अन्य पते से कनेक्ट करने की अनुमति देता है।

5

उबंटू पर, मैंने देखा है कि कुछ बिंदु पर दूरदराज के उपयोग से काम कर रहा है (वर्तमान में 9.1.9 का प्रयोग करके) बंद कर दिया। कारण यह है कि पोस्टग्रेस अब -i स्विच [1] से शुरू नहीं हुआ है, इसलिए कोई फर्क नहीं पड़ता कि आप listen_addresses के लिए क्या कॉन्फ़िगर करते हैं, इसे अनदेखा कर दिया जाएगा।

सौभाग्य से, /etc/environment में निम्न पंक्ति जोड़कर फिर से बाहर और में लॉग इन करने के लिए (या रिबूट) के बाद समस्या का हल:

PGOPTIONS="-i" 

देखें [2] अधिक विकल्पों के लिए। ध्यान दें, यह /etc/postgresql/9.1/main/environment पर जोड़ने के लिए मेरे लिए काम नहीं किया।

अब, जब nmap ip-of-my-remote-server कर मैं अंत में यह फिर से मिलता है:

5432/tcp open postgresql 

आहा!

[1] http://www.postgresql.org/docs/9.1/static/runtime-config-short.html

[2] http://www.postgresql.org/docs/9.1/static/libpq-envars.html

+0

मैं उबंटू 13.04 पर भी 9.1.9 चला रहा हूं और यह कदम आवश्यक नहीं लगता है। –

+0

मैंने पाया कि मुझे सिंगल कोट्स के साथ डबल कोट्स को प्रतिस्थापित करना था और यह पोस्टग्रेस्क्ल विशिष्ट पर्यावरण फ़ाइल में ठीक काम करता था। साथ ही, जब आप इस परिवर्तन के बाद /etc/init.d/postgresql निष्पादित करते हैं तो आपको वास्तव में 'स्टॉप' और 'स्टार्ट' (एक साधारण रीलोड के विपरीत) का उपयोग करना होगा। – mdpatrick

1

postgresql.conf में listen_address configvar नहीं postgres गैर स्थानीय आईपी पते (या पते) पर सुनने को पाने के लिए एक ही रास्ता है।

उपयोग विकल्प "-ओ -h *" यदि आप pg_ctl से postgres शुरू, नहीं तो जोड़ सकता हूँ "-h" "*" postgres कमांड लाइन करने के लिए, जैसे जैसे

/usr/स्थानीय/pgSQL/bin/postgres डी/स्नातकोत्तर/डेटा "-h" "*"

बेशक

/स्नातकोत्तर/डेटा अपने वर्तमान datapath के लिए परिवर्तित किया जाना चाहिए।

यह विशेष रूप से उपयोगी है जब प्रयोग है।

संबंधित मुद्दे