2012-03-29 11 views
10

क्या डेटाबेस बनाने के लिए रूट के अलावा किसी अन्य उपयोगकर्ता के लिए यह संभव है?किसी MySQL उपयोगकर्ता को डेटाबेस बनाने के लिए किस अनुमति की आवश्यकता है?

GRANT SELECT, CREATE ON *.* TO 'myguy'@'thatmachine' IDENTIFIED BY PASSWORD '*12057DFA2BFBD8760D4788735B1C3E26889D7ECE' | 
GRANT ALL PRIVILEGES ON `db1`.* TO 'myguy'@'thatmachine' 
GRANT ALL PRIVILEGES ON `db2`.* TO 'myguy'@'thatmachine' 

मुझे आश्चर्य है कि यहां क्या विशेषाधिकार गुम है? इसके अलावा, पहली पंक्ति में पासवर्ड क्यों जुड़ा हुआ है?

अद्यतन

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

डेटाबेस mysqldump'ed .sql फ़ाइलों के रूप में हैं, जो स्रोत से लक्ष्य तक sftp'd हैं। लक्ष्य उपयोगकर्ता, रूट नहीं, फिर प्रत्येक .sql फ़ाइल से स्थानीय रूप से डेटाबेस को पुन: बनाना चाहिए, कुछ क्रियाएं करें, फिर डेटाबेस ड्रॉप करें।

मुझे इन विशेषाधिकारों को लक्षित उपयोगकर्ता को *.* पर वैश्विक विशेषाधिकार दिए बिना देने का कोई तरीका नहीं मिल रहा है, जो प्रभावी रूप से उस उपयोगकर्ता को रूट के रूप में खतरनाक बनाता है।

+1

दिलचस्प। ठीक है, यहाँ एक विचार है। लक्ष्य मशीन पर mysql का उपयोग करने के बजाय, विशेष रूप से इस लेनदेन के लिए वैकल्पिक डेटाबेस का उपयोग करें। SQLite, या उन पंक्तियों के साथ कुछ। इस तरह, उनकी अनुमतियों के पास किसी भी पूरी तरह से परिचालन डेटाबेस से कोई लेना देना नहीं है, इनका उपयोग केवल अस्थायी डेटाबेस और कार्यों के साथ किया जा सकता है। आपको कुछ स्क्रिप्ट बदलना पड़ सकता है, या क्या नहीं, लेकिन आप इस तरह से अधिक सुरक्षित रहेंगे। इस विशिष्ट उपलब्धि के लिए, नियंत्रण की एक छोटी जेब बनाएं, और उसके बाद इसे खत्म कर दें। कुछ अतिरिक्त काम हो सकता है - लेकिन यह समस्या को ठीक करेगा। –

उत्तर

7

बिल्कुल आप कर सकते हैं। http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_create

+4

घटनाओं की वास्तव में दुर्भाग्यपूर्ण श्रृंखला में, उपयोगकर्ता 'myguy' को वास्तव में डेटाबेस बनाने की अनुमति है। वह सिर्फ उन्हें नष्ट नहीं कर सकता है। और फिर भी, मैं नहीं चाहता कि वह उपयोगकर्ता डेटाबेस को नष्ट करने में सक्षम हो, जिसे उसने नहीं बनाया था, तो मैं उसे क्या विशेषाधिकार देता हूं? यह इतना मुश्किल क्यों है? – AKWF

+0

@AKWF: एचएमएचएच। यह वास्तव में ... दुर्भाग्यपूर्ण है। आप विशेष रूप से उन्हें बनाए गए डेटाबेस के लिए 'डीआरओपी' विशेषाधिकार देना चाहते हैं, ठीक उसी समय उन्हें बनाने के बाद; AFAIK स्वचालित रूप से MySQL में करना संभव नहीं है। क्या वह एक स्क्रिप्ट के माध्यम से डेटाबेस बना रहा है, या क्या आपके कार्यों पर आपका कोई नियंत्रण नहीं है? – Piskvor

+0

आपको क्या करना है यह तय करना है कि आप वास्तव में यह विशेष उपयोगकर्ता क्या करने में सक्षम होना चाहते हैं, फिर उन्हें उन अनुमतियां दें। उदाहरण के लिए, इसके अनुसार, उसके पास डीबी 1 और डीबी 2 पर सभी विशेषाधिकार हैं और वह सभी डेटाबेस चुन सकते हैं और बना सकते हैं, लेकिन स्पष्ट रूप से अद्यतन या सम्मिलित नहीं कर सकते हैं ... अजीब सेटअप मैं कहूंगा। लेकिन अगर आप सिर्फ उसे पढ़ना और अपडेट करना चाहते हैं, तो आप ऐसा कुछ करेंगे: अनुदान चुनें, अपडेट करें * * * 'myguy' @ 'thatmachine' पासवर्ड द्वारा मान्य '* 12057DFA2BFBD8760D4788735B1C3E26889D7ECE' –

0

पासवर्ड फ़ील्ड वह है जो उस विशेष उपयोगकर्ता का पासवर्ड है जो MySQL में लॉग इन करते समय होता है। मुझे बिल्कुल यकीन नहीं है कि जब आप कहते हैं कि आप क्या सोचते हैं कि विशेषाधिकार क्या हैं, तो आपका क्या मतलब है। वास्तव में आप क्या करने की कोशिश कर रहे हैं?

+0

मेरे पास एक उपयोगकर्ता है जो .sql db डंप डाउनलोड करना और उन्हें पुनर्स्थापित करना होगा एक स्थानीय प्रणाली पर। मुझे नहीं पता कि उन डेटाबेस के नाम अग्रिम होने जा रहे हैं, इसलिए मुझे उपयोगकर्ता को "* पर * * * देना था। मैंने सोचा कि यह सामान्य ज्ञान होगा कि एक उपयोगकर्ता जिसने डेटाबेस बनाया है उसे छोड़ने में सक्षम होगा, लेकिन ऐसी कोई किस्मत नहीं है। मैं उपयोगकर्ता को "ड्रॉप * * * छोड़ने की हिम्मत नहीं करता हूं, यह पीट के लिए एक वेब एप्लिकेशन है। मैं बस इस डेटाबेस उपयोगकर्ता को सुरक्षित करना चाहता हूं और उन्हें कुछ चीजें करने में सक्षम बनाना चाहता हूं, लेकिन अगर उपयोगकर्ता को कभी अपहृत किया गया तो किसी भी संभावित क्षति को सीमित करें। – AKWF

+0

वेब ऐप्स के लिए, किसी भी चीज को सृजन करने या छोड़ने की अनुमति न देने का अच्छा अभ्यास है जब तक कि आप नहीं जानते कि वह व्यक्ति जानता है कि वे क्या कर रहे हैं - उदाहरण के लिए, PHPMyAdmin के उपयोग में। इसके अलावा, आप एक डेटाबेस योजना पर विचार करना चाह सकते हैं जिसमें पूरे डेटाबेस का निर्माण आवश्यक नहीं है। मुझे बहुत कम उदाहरण दिखाई देते हैं जहां एक अंतिम उपयोगकर्ता को एक संपूर्ण डेटाबेस बनाने में सक्षम होना चाहिए। –

+0

यहां तक ​​कि - वास्तव में ... आपको कभी भी कुछ भी छोड़ना/हटाना नहीं चाहिए, बस एक बूलियन 'हटाए गए' फ़ील्ड का उपयोग करें। –

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