2012-11-25 9 views
27

मैं जॉन mysql उपयोगकर्ता के लिए लोड डेटा आदेश की अनुमति देना चाहता हूं। इसलिए मैं रूट के रूप में mysql टर्मिनल में लॉग इन किया और निम्नलिखित बयान जारी किया:केवल एक डेटाबेस पर अनुदान फ़ाइल

grant file on johndatabase.* to 'john'@'localhost'; 

लेकिन मैं निम्नलिखित त्रुटि मिली: यदि मैं *.* साथ johndatabase.* प्रतिस्थापित

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES 

, तो सब कुछ काम करता है। लेकिन *.* का मतलब सभी डेटाबेस नहीं है? मैं जॉन mysql उपयोगकर्ता को सिर्फ johndatabase तक सीमित करना चाहता हूं।

उत्तर

46

आप केवल एक ही डेटाबेस पर FILE विशेषाधिकार प्रदान नहीं कर सकते हैं। वह तार्किक रूप से कोई समझ नहीं आता है। पर विचार करें the docs क्या कहते हैं:

The FILE privilege gives you permission to read and write files on the server host using the LOAD DATA INFILE and SELECT ... INTO OUTFILE statements and the LOAD_FILE() function. A user who has the FILE privilege can read any file on the server host that is either world-readable or readable by the MySQL server. (This implies the user can read any file in any database directory, because the server can access any of those files.)

इस प्रकार, फ़ाइल विशेषाधिकार एक वैश्विक विशेषाधिकार है। यह सर्वर पर सभी फ़ाइलों को प्रभावित करता है और केवल वैश्विक आदेशों तक पहुंच की अनुमति देता है (उदा। LOAD DATA INFILE, आदि ...), किसी भी डेटाबेस पर स्कॉप्ड नहीं किया गया है। फ़ाइल विशेषाधिकार देने के लिए एक ही रास्ता सभी डेटाबेस चालू होने पर इस सिंटैक्स का उपयोग:

GRANT FILE ON *.* TO 'john'@'localhost'; 
+0

आप ग्रांट फ़ाइल क्वेरी सिंटैक्स का उपयोग क्यों करते हैं Ive पर इसका कोई उदाहरण कोड नहीं देखा गया है, इसका उपयोग यह समझाने के लिए किया जा रहा है कि इसे कैसे किया गया है, क्योंकि मुझे आउटफाइल उपयोग के लिए फ़ाइल प्रदान करने की आवश्यकता है। फिर आउटफाइल समाप्त होने के बाद मुझे फ़ाइल से इनकार करने की आवश्यकता है। – Sir

+0

स्पष्टीकरण के लिए, यह फ़ाइल डेटाबेस को FILE विशेषाधिकार को प्रतिबंधित करने के लिए _logical_ sense बनाता है। लेकिन इससे सुरक्षा की झूठी भावना होगी। केवल सबसे भरोसेमंद उपयोगकर्ताओं को यह मिलना चाहिए। –

0
फ़ाइल विशेषाधिकार के साथ

, आप फाइल सिस्टम mysql सर्वर तक पहुँच सकते हैं कि करने के लिए एक उपयोगकर्ता पहुँच दे। इस वजह से, इसे किसी विशिष्ट डेटाबेस तक सीमित करना बेकार है, क्योंकि उपयोगकर्ता फाइल सिस्टम स्तर पर सभी डेटाबेस तक पहुंच पाएगा। ऐसा इसलिए है क्योंकि इसे केवल पर सेट किया जा सकता है।

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