PgAdmin3 का उपयोग करके उबंटू के रिमोट पोस्टग्रेक्यूएल डेटाबेस से कैसे जुड़ें?


22

मैं एक Ubuntu मशीन पर एक PostgreSQL डेटाबेस सेटअप करने की कोशिश कर रहा हूँ। मैं एक दूरस्थ मशीन से pgAdmin3 का उपयोग करके इसे एक्सेस करने में सक्षम होना चाहूंगा। मैं इसे कैसे सेटअप करूं?

मैंने Ubuntu पर PostgreSQL डेटाबेस का उपयोग करके स्थापित किया है:

sudo apt-get install postgresql

मेरे /etc/postgresql/9.1/main/pg_hba.confपास मेरी यह पंक्ति है:

host    all    all    all    password

इसलिए इसे सभी IPv4- पतों से कनेक्शन स्वीकार करना चाहिए और पासवर्ड स्पष्ट पाठ में भेजे जाने चाहिए (यह विकास कारणों से है)।

यदि मैं यह देखने के लिए कि कौन सी सेवा चल रही है, यह कमांड चलाता है:

sudo netstat -tulpn

मैं इन पंक्तियों को देख सकता हूं, जो दिखा रहा है कि PostgreSQL डिफ़ॉल्ट पोर्ट पर कनेक्शन स्वीकार कर रहा है:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

जब मैं उसी स्थानीय नेटवर्क पर दूरस्थ कंप्यूटर से इस PostgreSQL सर्वर से कनेक्ट करने का प्रयास करता हूं तो मुझे यह त्रुटि संदेश मिलता है:

सर्वर नहीं सुनता

सर्वर कनेक्शन स्वीकार नहीं करता है: कनेक्शन लाइब्रेरी रिपोर्ट करता है

सर्वर से कनेक्ट नहीं हो सका: कनेक्शन अस्वीकार कर दिया गया है क्या सर्वर "10.0.1.7" होस्ट पर चल रहा है और पोर्ट 5432 पर टीसीपी / आईपी कनेक्शन स्वीकार कर रहा है?

मैंने postgresउपयोगकर्ता नाम और कोई पासवर्ड नहीं इस्तेमाल किया । लेकिन मैंने postgresपासवर्ड के रूप में भी कोशिश की है । स्थानीय सर्वर पर मैं का उपयोग कर लॉगिन कर सकते हैं:

sudo -u postgres psql postgres

मैं pgAdmin3 का उपयोग करके दूरस्थ मशीन से उबंटू पर चल रहे पोस्टग्रेसीक्यूएल डेटाबेस से कैसे जुड़ सकता हूं?

जवाबों:


25

आपके netstat रिपोर्ट की लाइन यह दर्शाती है कि आने वाले tpp कनेक्शन के लिए डेटाबेस केवल लोकलहोस्ट: 5432 (127.0.0.1) को सुन रहा है।

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

इसलिए यह केवल स्थानीय tcp कनेक्शनों को स्वीकार कर सकता है, भले ही आपने pg_hba.conf में किन अनुमतियों को निर्दिष्ट किया हो। pg_hba.conf केवल अनुमत कनेक्शन निर्दिष्ट करता है, लेकिन यह निर्दिष्ट नहीं करता है कि आपकी सेवा किस इंटरफेस को सुनेगी।

सर्वर जिस पते पर सुनता है वह postgresql.conf में Listen_addresses GUC के साथ निर्दिष्ट होता है । यदि आप चाहते हैं कि सर्वर दूरस्थ कनेक्शनों के लिए सुने, तो आपको वह IP निर्दिष्ट करना चाहिए जिसे आप *होस्ट पर उपलब्ध सभी इंटरफेसों पर सुनना या सुनना चाहते हैं ।

अपने पोस्टग्रैक्स्ल सर्वर को होस्ट पर सभी इंटरफेस पर सुनने के लिए, आपके पास पोस्टग्रैसक्.कॉन में निम्न पंक्ति होनी चाहिए:

listen_addresses = '*'

लेकिन मैंने पहले ही फ़ाइल allमें निर्दिष्ट कर दिया pg_hba.confहै ... इसलिए इसे सभी आईपी-पतों से प्राप्तियों को स्वीकार करना चाहिए।
जोनास

शायद मैं इसे और अधिक स्पष्ट रूप से कह सकता था। pg_hba यह निर्दिष्ट नहीं करता है कि डेटाबेस क्या सुनता है, केवल प्रोटोकॉल / db / उपयोगकर्ता / रिमोट-ऐड कनेक्शन को अनुमति दी जाती है।
debhur

ठीक है, तो मैं इसे कैसे ठीक करूं? क्या तुम्हारे पास कोई सुझाव है?
जोनास

1
आप इसे listen_addresses = '*'postgresql.conf में एक पंक्ति डालकर और अपने सर्वर को पुनः आरंभ करके ठीक करते हैं।
debhur

धन्यवाद, इससे यह समस्या हल हो गई। अब मुझे बस डिफ़ॉल्ट पासवर्ड के साथ समस्याएँ
जोनास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.