"GRANT USAGE" पहली बार मैंने उपयोगकर्ता विशेषाधिकार प्रदान करने के लिए क्यों बनाया है?


102

मैं DBMS के व्यवस्थापक पक्ष के लिए नया हूँ और जब मैंने इस पर ध्यान दिया तो आज रात एक नया डेटाबेस स्थापित कर रहा था (MySQL का उपयोग करके)। किसी उपयोगकर्ता को पहली बार विशेषाधिकार प्रदान करने के बाद, एक और अनुदान बनाया जाता है जो दिखता है

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password

प्रलेखन का कहना है कि USAGEविशेषाधिकार का अर्थ है "कोई विशेषाधिकार नहीं है", इसलिए मैं मानार्थ अनुदानों का पदानुक्रम से काम कर रहा हूं और शायद एक उपयोगकर्ता को सभी डेटाबेस के लिए किसी प्रकार का विशेषाधिकार होना चाहिए, इसलिए यह सभी को पकड़ने के रूप में कार्य करता है?

मुझे यह भी समझ में नहीं आता है कि IDENTIFIED BYजब मैंने जो अनुदान बनाया है, उसमें इस पंक्ति का कोई खंड क्यों नहीं है (ज्यादातर इसलिए कि मैं नहीं समझता कि IDENTIFIED BYखंड क्या उद्देश्य है )।

संपादित करें: यह मूल रूप से नहीं बताने के लिए क्षमा करें, अनुदान थे

GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user

क्या आप हमें वह अनुदान बता सकते हैं जो आपने चलाया है
Pentium10

जवाबों:


145

जैसा कि आपने कहा, MySQL USAGEमें "कोई विशेषाधिकार नहीं" का पर्याय है। से MySQL संदर्भ मैनुअल :

उपयोग विशेषाधिकार विशेषाधिकार "कोई विशेषाधिकार नहीं" के लिए खड़ा है। इसका उपयोग वैश्विक स्तर पर मौजूदा खाता विशेषाधिकारों को प्रभावित किए बिना संसाधन सीमाओं या SSL विशेषताओं जैसी खाता विशेषताओं को संशोधित करने के लिए GRANT के साथ किया जाता है।

USAGEMySQL को बताने का एक तरीका है कि उस खाते में कोई वास्तविक विशेषाधिकार प्रदान किए बिना एक खाता मौजूद है। उनके पास केवल MySQL सर्वर का उपयोग करने की अनुमति है , इसलिए USAGE। यह `mysql`.`user`तालिका में एक पंक्ति से मेल खाता है जिसमें कोई विशेषाधिकार सेट नहीं है।

IDENTIFIED BYखंड इंगित करता है कि एक पासवर्ड है कि उपयोगकर्ता के लिए निर्धारित है। हम कैसे जानते हैं कि एक उपयोगकर्ता है जो वे कहते हैं कि वे हैं? वे अपने खाते के लिए सही पासवर्ड भेजकर खुद की पहचान करते हैं।

एक उपयोगकर्ता का पासवर्ड उन वैश्विक स्तर की खाता विशेषताओं में से एक है जो किसी विशिष्ट डेटाबेस या तालिका से बंधा नहीं है। यह `mysql`.`user`तालिका में भी रहता है । यदि उपयोगकर्ता के पास कोई अन्य विशेषाधिकार नहीं हैं ON *.*, तो उन्हें अनुमति दी जाती है USAGE ON *.*और उनका पासवर्ड हैश प्रदर्शित किया जाता है। यह अक्सर एक CREATE USERबयान का एक पक्ष प्रभाव होता है । जब कोई उपयोगकर्ता इस तरह से बनाया जाता है, तो शुरू में उनके पास कोई विशेषाधिकार नहीं होते हैं इसलिए उन्हें केवल प्रदान किया जाता है USAGE


10
मुझे लगता है कि यह इसलिए है क्योंकि उन्हें प्रमाणित करने की अनुमति है। यदि आप किसी गलत उपयोगकर्ता या / और पासवर्ड के साथ प्रयास करते हैं, तो आप प्रमाणित नहीं कर सकते। USAGE विशेषाधिकार वाला उपयोगकर्ता कुछ चुनिंदा SQL कमांड चला सकता है, जैसे 'select 1 + 1' और 'शो प्रोसेसलिस्ट'।
Mircea Vutcovici

11

मैं इसका अर्थ खोजने की कोशिश कर रहा था GRANT USAGE on *.* TOऔर यहां पाया गया। GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD passwordजब आप उपयोगकर्ता को निम्नलिखित कमांड के साथ बनाते हैं तो मैं स्पष्ट कर सकता हूं CREATE:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; 

जब आप विशेषाधिकार प्रदान करते हैं GRANT, तो इसके ऊपर नए विशेषाधिकार जोड़े जाएंगे।


3

इसके अलावा mysql पासवर्ड जब IDENTIFIED BYक्लॉज का उपयोग नहीं करते हैं, तो वे रिक्त मान हो सकते हैं, यदि गैर-रिक्त हैं, तो उन्हें एन्क्रिप्ट किया जा सकता है। लेकिन हां USAGEका उपयोग साधारण संसाधन सीमाएं प्रदान करके किसी खाते को संशोधित करने के लिए किया जाता है MAX_QUERIES_PER_HOUR, जैसे कि इसके साथ फिर से क्लॉज का उपयोग करके भी निर्दिष्ट किया जा सकता है, GRANT USAGE(कोई विशेषाधिकार नहीं जोड़ा गया है) या GRANT ALL, आप GRANT USAGEवैश्विक स्तर पर, डेटाबेस स्तर पर भी निर्दिष्ट कर सकते हैं , टेबल का स्तर, आदि…।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.