डेटाबेस के सभी तालिकाओं तक पहुंच प्रदान करें


13

मैं हाल ही में एक सर्वर के एक उपयोगकर्ता के साथ नियमित रूप से एक्सेस अधिकारों को साझा करना चाहता था और मुझे एहसास हुआ कि एक साधारण CREATE USERऔर GRANT ALL ON DATABASEकमांड ने उसे SELECTडेटा पर एक साधारण चलाने नहीं दिया ।

मैं किसी दिए गए डेटाबेस से एक निर्दिष्ट उपयोगकर्ता के लिए सभी तालिकाओं को अधिकार देना चाहूंगा, लेकिन मुझे यकीन नहीं है कि अगर उसे पूरे स्कीमा तक पहुंच प्रदान करना सबसे अच्छा विचार है, publicक्योंकि मुझे नहीं पता कि यह किसी तरह का विशेषाधिकार होगा। वृद्धि। क्या कोई और तरीका है?


तुम सिर्फ क्यों नहीं कर सकते GRANT SELECT ON TableName TO [Domain\User]? मैं आमतौर पर उपयोगकर्ताओं को केवल db_datareaderभूमिका के लिए असाइन करता हूं यदि उन्हें ज़रूरत होती है तो सभी तालिकाओं तक पहुंच पढ़ी जाती है लेकिन मुझे यकीन नहीं है कि आप कितने दानेदार होना चाहते हैं।
क्रिश ग्रुटेमेयर

मैं डेटाबेस में सभी तालिकाओं को सभी CRUD देना चाहता हूं। इसके अलावा, इस डेटाबेस के अंदर DROPping और सृजन भी उपयोगी साबित हो सकता है।
d33tah

जवाबों:


19

DATABASEकेवल डेटाबेस पर सामान्य कनेक्शन अधिकारों को विशेषाधिकार देता है और अधिक नहीं। केवल उस विशेषाधिकार वाले उपयोगकर्ता केवल वही देख सकते हैं जिसे आम जनता को देखने की अनुमति है।

सभी तालिकाओं तक पढ़ने की पहुंच प्रदान करने के लिए , आपको सभी स्कीमाओं और तालिकाओं पर विशेषाधिकारों की आवश्यकता है:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

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

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

लेकिन आपको वास्तव में पहले पूरी अवधारणा को समझने की आवश्यकता है ।
और यह लगभग हमेशा समूह भूमिकाओं में विशेषाधिकारों को बंडल करने के लिए बेहतर होता है और फिर उपयोगकर्ता भूमिकाओं से / तक समूह भूमिका को अनुदान / निरस्त कर देता है। सम्बंधित:


है myusrलिखने में कोई त्रुटि? यह नहीं होना चाहिए myuser?
एटमोस

1
@attomos: यह उदाहरण में एक अलग उपयोगकर्ता माना जाता है। मैंने स्पष्ट किया।
इरविन ब्रान्डेसटेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.