PostgreSQL भूमिकाएँ बनाम उपयोगकर्ता, अनुमतियाँ प्रदान करते हैं


27

वर्तमान में मैं PostgreSQL और MySQL के बीच के अंतरों को सीख रहा हूं क्योंकि मुझे एक नई परियोजना मिली है और मैं MySQL से PostgreSQL में अपने मौजूदा सॉफ़्टवेयर को स्थानांतरित करने का इरादा रखता हूं। मैंने वास्तव में दोनों के बीच कमांड (उपयोगकर्ताओं / डेटाबेस / कमांड प्रॉम्प्ट, आदि के लिए) की तुलना के साथ एक HTML तालिका बनाना शुरू कर दिया है। यहाँ एक उत्तर पढ़ने के बाद मैंने नोटिस roleकिया है कि एक समूह के रूप में उपयोग किया जा रहा है । MySQL के साथ मैं दो उपयोगकर्ताओं, मूल रूप से सार्वजनिक (है DELETE, INSERT, SELECTऔर UPDATEअनुमतियाँ) और एक जोड़ी अतिरिक्त अनुमतियों के साथ एक व्यवस्थापक उपयोगकर्ता।

तो मूल रूप से विंडोज 7 कमांड प्रॉम्प्ट (केवल स्थानीय विकास) में ...

  • क्या कोई उपयोगकर्ता, समूह या शिथिल रूप से प्रयुक्त शब्द PostgreSQL के लिए विशिष्ट है?
  • डेटाबेस में सभी तालिकाओं के लिए मैं किसी विशिष्ट उपयोगकर्ता को केवल विशिष्ट अनुमति कैसे दे सकता हूं ?
  • डेटाबेस में सभी तालिकाओं के लिए मैं किसी विशिष्ट उपयोगकर्ता को सभी अनुमतियां कैसे दे सकता हूं ?
  • कैसे, अगर सभी, एक उपयोगकर्ता की अनुमति के लिए GRANTया REVOKEउपयोगकर्ता की अनुमति के लिए एक भूमिका की तुलना करता है ?

जवाबों:


48

एक भूमिका एक इकाई है जो एक उपयोगकर्ता और / या एक समूह के रूप में कार्य कर सकती है। एक भूमिका WITH LOGINको एक उपयोगकर्ता के रूप में इस्तेमाल किया जा सकता है, अर्थात आप इसके साथ लॉग इन कर सकते हैं। कोई भी भूमिका समूह के रूप में कार्य कर सकती है, जिसमें भूमिकाएँ भी शामिल हैं जिन्हें आप लॉग इन भी कर सकते हैं। इसलिए "उपयोगकर्ता" और "समूह" अनिवार्य रूप से ऐसे शब्द हैं जो किसी भूमिका के इच्छित उपयोग को इंगित करते हैं , उनके बीच कोई वास्तविक अंतर नहीं है। यहां तक ​​कि SQL के PostgreSQL स्वाद में दोनों को पर्याय के रूप में कम या ज्यादा इस्तेमाल किया जाता है। उदाहरण के लिए, प्रलेखन CREATE USERकहता है:

क्रिएट USER अब CREATE ROLE के लिए एक अन्य नाम है।

सभी को प्रदान करना ... के लिए मैनुअल देखेंGRANT । आप संभवतः डेटाबेस में सभी तालिकाओं केALL TABLES IN SCHEMA public बजाय अधिकार देना चाहते हैं ।

कुछ अधिकार प्रदान करना ... एक ही बात है, लेकिन उदाहरण के लिए GRANT ALLउपयोग के बजाय GRANT SELECT, INSERT। फिर से, मैनुअल देखें।

एक भूमिका है एक उपयोगकर्ता एक समूह, और / या। आप केवल भूमिकाओं को अनुदान दे सकते हैं, क्योंकि भूमिकाएं वही हैं जो है।


महान व्याख्या!
शारदोव

तो ... स्कीमा जनता में सभी तालिकाओं को सभी अधिकार देने के लिए वाक्य रचना क्या है?
AlxVallejo

@AlxVallejo को यह मदद करनी चाहिए । शीर्ष लिंक का प्रयास करें, या GRANTप्रलेखन पृष्ठ पढ़ें जहां यह सूचीबद्ध हैALL TABLES IN SCHEMA
क्रेग रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.