विशेष डेटाबेस "पोस्टग्रेज" किसके लिए है?


18

मेरे पास एक PostgreSQL सर्वर है जिस पर कई डेटाबेस चल रहे हैं। डेटाबेस में से एक को बुलाया जाता है postgres, और यह शुरुआत से ही सही था। मुझे कोई तालिका अंदर नहीं दिखाई दी और मैंने इसे स्पष्ट रूप से उपयोग नहीं किया है, लेकिन मैंने देखा, कि किसी भी उपयोगकर्ता को डेटाबेस के भीतर तालिकाओं को बनाने की अनुमति है (यह वह नहीं है जो मैं चाहता हूं - मुझे कोई उपयोगकर्ता नहीं चाहिए सिवाय व्यवस्थापक बनाने के लिए किसी भी मेज कहीं भी)।

मुझे लगता है कि यह एक विशेष डेटाबेस का कुछ प्रकार है जो सर्वर के सामान्य संचालन के लिए आवश्यक है, लेकिन वास्तव में इसका उद्देश्य क्या है? किस प्रकार का डेटा (या हो सकता है) अंदर संग्रहीत किया जाता है? क्या यह अन्य डेटाबेस (जैसे information_schema?) के बारे में मेटाडेटा रखता है । क्या कुछ बुरा हो सकता है, अगर मैं connectसार्वजनिक रूप से इस डेटाबेस से विशेषाधिकार रद्द कर दूं ? या अगर मैं इसे छोड़ भी दूं?

मैं आधे घंटे के लिए चला गया, लेकिन हमेशा पूरी तरह से असंबंधित सामान मिला, क्योंकि शब्द postgresका उपयोग उपयोगकर्ता postgresऔर डीबीएमएस के लिए भी किया जाता है।

जवाबों:


31

इसके बारे में कुछ खास नहीं है। जैसा कि PostgreSQL प्रलेखन में वर्णित है, एक डेटाबेस बनाना , आपको एक डेटाबेस बनाने की आवश्यकता है, ताकि एक और एक बनाया जा सके:

चूंकि CREATE DATABASEकमांड को निष्पादित करने के लिए आपको डेटाबेस सर्वर से जुड़ा होना चाहिए , इसलिए यह सवाल बना हुआ है कि किसी भी साइट पर पहला डेटाबेस कैसे बनाया जा सकता है। initdbडेटा स्टोरेज एरिया इनिशियलाइज़ होने पर पहला डेटाबेस हमेशा कमांड द्वारा बनाया जाता है। (धारा 17.2 देखें।) इस डेटाबेस को कहा जाता है postgresतो पहले "साधारण" डेटाबेस बनाने के लिए आप से कनेक्ट कर सकते हैं postgres

और टेम्पलेट डेटाबेस में :

नोट: template1 और template0इस तथ्य से परे कोई विशेष स्थिति नहीं है कि नाम template1डिफ़ॉल्ट स्रोत डेटाबेस का नाम है CREATE DATABASE। उदाहरण के लिए, कोई template1इसे template0बिना किसी दुष्प्रभाव के गिरा सकता है और पुन: बना सकता है । कार्रवाई के इस पाठ्यक्रम की सलाह दी जा सकती है अगर किसी ने लापरवाही से कबाड़ का एक गुच्छा जोड़ा है template1। (हटाने के लिए template1, यह होना चाहिए pg_database.datistemplate = false)

postgresडेटाबेस जब एक डेटाबेस क्लस्टर आरंभ नहीं हो जाता भी बनाया जाता है। यह डेटाबेस उपयोगकर्ताओं और एप्लिकेशन से कनेक्ट करने के लिए एक डिफ़ॉल्ट डेटाबेस के रूप में है। यह बस की एक प्रति है template1और यदि आवश्यक हो तो गिराया और फिर से बनाया जा सकता है।


3
हां। व्यवहार में आपको आम तौर पर इसे खाली छोड़ देना चाहिए और कनेक्ट करने के लिए एक आसान जगह के रूप में अपरिवर्तित होना चाहिए। यह वास्तव में PostgreSQL में एक मस्सा है, इस तथ्य का एक परिणाम है कि PostgreSQL आपको अन्य DBMSes की तरह "विशेष रूप से कोई डेटाबेस" से कनेक्ट नहीं होने देता है।
क्रेग रिंगर

1
बहुत बहुत धन्यवाद, यह एक अच्छा जवाब है! मैंने सार्वजनिक उपयोगकर्ताओं की पहुंच को अस्वीकार कर दिया postgresऔर अभी भी सब कुछ काम कर रहा है, सिवाय एक बात के: pgAdmin III तब तक कनेक्ट नहीं होता है जब तक कि मैं Maintenance DBक्षेत्र में टारगेटेड डेटाबेस निर्दिष्ट नहीं करता । ऐसा लगता है कि यह postgresपहले डेटाबेस से कनेक्ट करता था।
R Kiselev

@Riseise हाँ, यह उस तरह काम करता है। जैसे ypercube ने लिखा, यह कनेक्ट करने के लिए डिफ़ॉल्ट डेटाबेस है।
मार्सिन एस।

1
Pgadmin के पास "रखरखाव डेटाबेस" संपत्ति है। बस इसे अपने डीबी में बदल दें जिसे आप कनेक्ट करना चाहते हैं
सहप असि जूल

@Riselev: pgAdmin और उसके "रखरखाव डेटाबेस" के बारे में: pgAdmin द्वारा रखरखाव रखरखाव DB क्या पूछा जाता है?
एरविन ब्रान्डसेट्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.