2010-04-19 13 views
29

मैं एक उपयोगकर्ता 'प्रोजेक्ट ए' बनाना चाहता हूं जिसमें 'projectA_%' नामक प्रत्येक डेटाबेस के लिए समान अनुमतियां हैंMySQL में डेटाबेस नाम वाइल्डकार्ड के साथ अनुदान?

मुझे यह पता है लेकिन MySQL को मेरे वाक्यविन्यास पसंद नहीं है:

grant all on 'projectA\_%'.* to 'projectA'@'%'; 

संदर्भ: http://dev.mysql.com/doc/refman/5.1/en/grant.html

उत्तर

56

अगर मैं वाक्य रचना में सिंगल कोट्स के बजाय वापस tics उपयोग करते हैं, तब भी वह अच्छे काम करने के लिए प्रकट होता है:

grant all on `projectA\_%`.* to `projectA`@`%`; 
+3

बैक tics केवल डेटाबेस नाम, नहीं उपयोगकर्ता – glarrain

+1

मेरे लिए काम करता है मैं जब का उपयोग यह नहीं' के लिए आवश्यक हैं '*' उदा। के बजाय विशिष्ट तालिका नाम ' '' प्रोजेक्ट ए% ''ome_table%' '' कुछ_user' @ '%' पर 'सभी को प्रदान करें;' ' –

10
GRANT ALL PRIVILEGES ON `projectA\_%`.* TO 'projectA'@'%' IDENTIFIED BY 'your_passwd'; 

डेटाबेस नाम

संपादित: अंडरस्कोर अब बच निकला है।

2

प्रति MySQL के GRANT प्रलेखन के रूप में:

"_" और "%" वाइल्डकार्ड जब GRANT बयान है कि वैश्विक या डेटाबेस स्तरों पर विशेषाधिकार देते हैं में डेटाबेस नाम निर्दिष्ट करने की अनुमति है। इसका मतलब है, उदाहरण के लिए, यदि आप किसी डेटाबेस नाम के हिस्से के रूप में "_" वर्ण का उपयोग करना चाहते हैं, तो आपको में "\ _" निर्दिष्ट करना चाहिए, ताकि उपयोगकर्ता तक पहुंचने में सक्षम हो सके। वाइल्डकार्ड पैटर्न से मेल खाते अतिरिक्त डेटाबेस; उदाहरण के लिए, GRANT ... `पर foo \ _bar`। * करने के लिए ....

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