2009-12-31 7 views
10

MySQL से आ रहा है और भूमिकाओं के बारे में जानते हुए भी नहीं पर आपके द्वारा बनाई मैं absentmindedly की कोशिश की इसअंतर टेबल-स्पेस

GRANT CREATE ON TABLESPACE pg_default TO username; 

यह वांछित प्रभाव नहीं था। जिस आदेश को मैं ढूंढ रहा था वह था:

ALTER ROLE username WITH CREATEDB; 

लेकिन वास्तव में क्या अंतर है? क्या किसी को CREATEDB भूमिका देकर उन्हें टेबलप्लेस पर तैयार करना है ...? क्या कोई टेबल है जहां मैं ये सब देख सकता हूं?

docs से, अनुदान पर टेबल-स्पेस का अर्थ है (मेरे जोर) बनाने:

टेबलस्पेस के लिए, टेबल, अनुक्रमित, और अस्थायी फ़ाइलों टेबल-स्पेस के भीतर बनाए जा सकते हैं, और को डेटाबेस की अनुमति देता है बनाया गया है जिसमें टेबलस्पेस उनके डिफ़ॉल्ट टेबलस्पेस के रूप में है। (ध्यान दें कि यह विशेषाधिकार को निरस्त करने की मौजूदा वस्तुओं की नियुक्ति में परिवर्तन नहीं होगा।)

उत्तर

11

वे पूरी तरह से अलग विशेषाधिकार हैं। CREATEDB का मतलब है कि भूमिका डेटाबेस बना सकती है। यदि आपकी भूमिका में ऐसा नहीं है, तो यह डेटाबेस, अवधि नहीं बना सकता है।

भूमिका के लिए एक टेबलस्पेस के लिए क्रिएटिंग का अर्थ है कि भूमिका डेटाबेस के लिए डिफ़ॉल्ट टेबलस्पेस के रूप में उस टेबल स्पेस का उपयोग करने में सक्षम होगी। तो CREATEDB की एक भूमिका डेटाबेस बनाने में सक्षम होगी; बस उस टेबल स्पेस पर नहीं। ध्यान दें कि हमेशा एक pg_default टेबलस्पेस होता है जिसे डेटाबेस के लिए डिफ़ॉल्ट टेबलस्पेस के रूप में उपयोग किया जाएगा जो अन्यथा डिफ़ॉल्ट टेबलस्पेस नहीं है।

1

ऐसा लगता है कि पहले बयान आप टेबलस्पेस बनाने की क्षमता देता है लग रहा है। यह भौतिक फाइलें (या आपके स्टोरेज डिवाइस पर रिक्त स्थान) हैं जो डेटाबेस के डेटा/इंडेक्स/... को पकड़ती हैं।

तो प्रभावी ढंग से आपने आदेशों के साथ दो अलग-अलग अधिकार दिए।