मेरा जवाब ServerFault.com पर इसी के समान है ।
रूढ़िवादी होने के लिए
यदि आप "सभी विशेषाधिकार" देने की तुलना में अधिक रूढ़िवादी होना चाहते हैं, तो आप इन जैसे कुछ और प्रयास करना चाह सकते हैं।
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO some_user_;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO some_user_;
public
वहाँ का उपयोग हर नए डेटाबेस / कैटलॉग के लिए बनाए गए डिफ़ॉल्ट स्कीमा के नाम को संदर्भित करता है। यदि आपने स्कीमा बनाया है तो अपने नाम से बदलें।
स्कीम तक पहुंच
किसी भी कार्रवाई के लिए एक स्कीमा का उपयोग करने के लिए, उपयोगकर्ता को "उपयोग" अधिकार प्रदान किया जाना चाहिए। उपयोगकर्ता द्वारा चयन करने, सम्मिलित करने, अद्यतन करने या हटाने से पहले, उपयोगकर्ता को पहले एक स्कीमा के लिए "उपयोग" दिया जाना चाहिए।
Postgres का उपयोग करते समय आप इस आवश्यकता पर ध्यान नहीं देंगे। डिफ़ॉल्ट रूप से हर डेटाबेस में पहले स्कीमा नाम होता है public
। और डिफ़ॉल्ट रूप से प्रत्येक उपयोगकर्ता को स्वचालित रूप से उस विशेष स्कीमा के "उपयोग" अधिकार दिए गए हैं। जब अतिरिक्त स्कीमा जोड़ते हैं, तो आपको उपयोग अधिकार स्पष्ट रूप से देना चाहिए।
GRANT USAGE ON SCHEMA some_schema_ TO some_user_ ;
Postgres doc से अंश :
स्कीमा के लिए, निर्दिष्ट स्कीमा में निहित वस्तुओं तक पहुंच की अनुमति देता है (यह मानते हुए कि वस्तुओं की अपनी विशेषाधिकार आवश्यकताओं को भी पूरा किया जाता है)। अनिवार्य रूप से यह अनुदानकर्ता को स्कीमा के भीतर वस्तुओं को "देखने" की अनुमति देता है। इस अनुमति के बिना, सिस्टम टेबल्स को क्वेरी करके ऑब्जेक्ट नामों को देखना संभव है। इसके अलावा, इस अनुमति को रद्द करने के बाद, मौजूदा बैकएंड में ऐसे कथन हो सकते हैं, जो पहले इस लुकअप का प्रदर्शन कर चुके हैं, इसलिए ऑब्जेक्ट एक्सेस को रोकने के लिए यह पूरी तरह से सुरक्षित तरीका नहीं है।
अधिक चर्चा के लिए, प्रश्न देखें कि SCHEMA का उपयोग क्या है? । Postgres विशेषज्ञ क्रेग रिंगर द्वारा उत्तर पर विशेष ध्यान दें ।
मौजूदा वस्तुओं बनाम भविष्य
ये आदेश केवल मौजूदा वस्तुओं को प्रभावित करते हैं। जब तक आप उन पंक्तियों को फिर से निष्पादित नहीं करते, तब तक भविष्य में आपके द्वारा बनाए गए टेबल्स और इस तरह से आप डिफ़ॉल्ट विशेषाधिकार प्राप्त करते हैं। Erwin Brandstetter द्वारा अन्य उत्तर देखें, जिससे भविष्य की वस्तुओं को प्रभावित करने वाली चूक को बदला जा सके।