इसका कारण यह है कि किसी दृश्य या तालिका तक पहुँचने के लिए आपको अतिरिक्त विशेषाधिकारों की आवश्यकता होती है। डेटाबेस पर विशेषाधिकार इसमें सभी वस्तुओं तक पहुंच को कवर नहीं करते हैं।
यह कार्यों के साथ अलग है:EXECUTE
विशेषाधिकार public
. को दिया जाता है डिफ़ॉल्ट रूप से। लेकिन फ़ंक्शन को वर्तमान उपयोगकर्ता के विशेषाधिकारों के साथ निष्पादित किया जाता है। आपको SECURITY DEFINER
में रुचि हो सकती है CREATE FUNCTION
. के लिए संशोधक . लेकिन आम तौर पर यह SELECT
grant देने के लिए पर्याप्त है शामिल टेबल पर।
डिफ़ॉल्ट विशेषाधिकारों के बारे में प्रति दस्तावेज़:
<ब्लॉकक्वॉट>
ऑब्जेक्ट के प्रकार के आधार पर, प्रारंभिक डिफ़ॉल्ट विशेषाधिकारों में public
को कुछ विशेषाधिकार देना शामिल हो सकता है . टेबल, कॉलम, स्कीमा और टेबलस्पेस के लिए डिफ़ॉल्ट कोई सार्वजनिक एक्सेस नहीं है; CONNECT
विशेषाधिकार और TEMP
डेटाबेस के लिए तालिका निर्माण विशेषाधिकार; EXECUTE
कार्यों के लिए विशेषाधिकार; और USAGE
भाषाओं के लिए विशेषाधिकार।
आपकी इस डीडीएल कमांड में रुचि हो सकती है (पोस्टग्रेज की आवश्यकता है 9.0 या बाद में):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
प्रश्न में डेटाबेस से कनेक्ट होने पर, निश्चित रूप से (नीचे @ मार्सेल की टिप्पणी देखें), और पर्याप्त विशेषाधिकार वाले उपयोगकर्ता के रूप में। आपको DEFAULT PRIVILEGES
. सेटिंग में भी रुचि हो सकती है :
- डीबी में एक विशिष्ट स्कीमा पर सभी को पोस्टग्रेएसक्यूएल में एक समूह भूमिका के लिए अनुदान दें
विशेषाधिकारों को प्रबंधित करने के तरीके के बारे में अधिक विस्तृत उत्तर:
- डेटाबेस बनाम स्कीमा पर उपयोगकर्ताओं के लिए डिफ़ॉल्ट विशेषाधिकार कैसे प्रबंधित करें?
pgAdmin में अधिक परिष्कृत बल्क संचालन के लिए एक विशेषता है:
या आप बल्क ग्रांटिंग/निरसन के लिए डीडीएल स्टेटमेंट बनाने के लिए सिस्टम कैटलॉग को क्वेरी कर सकते हैं ...