2012-04-16 9 views
5

मेरे पास एक कॉलम वाला एक टेबल है जिसे मैं कुछ उपयोगकर्ताओं को देखने से रोकना चाहता हूं। मैं समझता हूं कि मुझे एक दृश्य का उपयोग करके ऐसा करने में सक्षम होना चाहिए, यानी एक ऐसा दृश्य है जिसमें विशेष कॉलम शामिल नहीं है, और तालिका तक पहुंच से इंकार कर दिया गया है लेकिन दृश्य तक पहुंच की अनुमति है (नोट, उपयोगकर्ताओं को तालिका को अपडेट करने में सक्षम होने की आवश्यकता नहीं है /राय)।MySQL: अन्यथा अक्षम कॉलम पर क्वेरी की अनुमति दें?

I हालांकि क्षेत्र के खिलाफ समानता क्वेरी को अनुमति देना चाहते हैं। जैसे:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value'; 

स्पष्ट करने के लिए:

  • यह hidden_field मूल्यों एक सामान्य क्वेरी में लौटा दी
  • यह एक बाधा के साथ एक क्वेरी चलाने के लिए संभव हो जाना चाहिए होना संभव नहीं होना चाहिए (अधिमानतः केवल एक समानता बाधा) hidden_field मूल्य

पर यह संभव है?

(संपादित करें: वहाँ Mysql के अलावा किसी अन्य डीबीएमएस में एक समाधान नहीं है, तो मुझे लगता है कि के बारे में भी सुनने के लिए खुशी होगी)।

उत्तर

4

आप एक संग्रहीत प्रक्रिया है जिससे सभी क्षेत्रों में आप इसे लौटने की अनुमति वापसी होगी बना सकते हैं, और फिर आप एक पैरामीटर के रूप hidden_value (छानने कसौटी) पारित कर सकते हैं।

मेज तक पहुँचने अपने डेटाबेस उपयोगकर्ताओं ना करे, लेकिन उन्हें संग्रहित प्रक्रियाओं कॉल करने के लिए अनुमति देते हैं।

तो जाहिर है, आप कई संग्रहित प्रक्रियाओं बनाने के लिए यदि आप तालिका के खिलाफ प्रश्नों के कई प्रकार पड़ता था। लेकिन कम से कम यह आपकी समस्या को अधिकारों के साथ हल करता है।

+0

धन्यवाद, यह एक अच्छा सुझाव है और संभवतः व्यवहार्य हो सकता है। – davmac

0

नहीं ऐसा नहीं है। उपयोगकर्ता को कॉलम hidden_value के साथ परिणामों को फ़िल्टर करने की संभावना देने का अर्थ है कि उनके पास अधिकार हैं, और इसका अर्थ यह भी है कि वे कॉलम देख सकते हैं, और इसलिए इसे चुनें। यहाँ http://dev.mysql.com/doc/refman/5.1/en/grant.html आप प्रदान कर सकते हैं या MySQL में उपयोगकर्ताओं के लिए प्रदान नहीं अधिकार की एक सूची है।

संबंधित मुद्दे