2011-12-28 18 views
60

मैं एक MySQL उपयोगकर्ता डंप निम्नलिखित perms साथ कहा जाता है:एक पूर्ण स्कीमा डंप करने के लिए mysqldump द्वारा आवश्यक न्यूनतम अनुदान? (चलाता है याद कर रहे हैं !!)

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ... 
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%' 
GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%' 

मैं सभी डेटा (शामिल चलाता और प्रक्रिया) डंप उपयोगकर्ता का उपयोग कर डंप करना चाहते हैं। मैं निम्नलिखित तरीके से mysqldump फोन:

mysqldump -u dump -p --routines --triggers --quote-names --opt \ 
    --add-drop-database --databases myschema > myschema.sql 

सब कुछ छोड़कर चलाता के लिए, वे याद कर रहे हैं फेंक दिया फ़ाइल के साथ ठीक है !!

चलाता सही ढंग से फेंक दिया जाता है अगर मैं जड़ MySQL उपयोगकर्ता के साथ mysqldump का प्रयास करें:

mysqldump -u root -p --routines --triggers --quote-names --opt \ 
    --add-drop-database --databases myschema > myschema.sql 

तो, मुझे लगता है कि यह एक perms मुद्दा है ... अतिरिक्त अनुदान मेरी डंप MySQL क्या कर रहे हैं उपयोगकर्ता को पूर्ण डंप सही तरीके से करने की आवश्यकता है?

उत्तर

83

पूर्ण डम्प से मान लिया जाये कि आप भी मतलब VIEW और EVENT है, आप की आवश्यकता होगी:

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...; 
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'; 
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `myschema`.* TO 'dump'@'%'; 

और यदि आप VIEW कि एक समारोह निष्पादित है, तो दुर्भाग्य से आप भी EXECUTE की जरूरत है।

मेरी अपनी समस्या यह है: मुझे केवल SELECT क्यों चाहिए यदि मैं केवल नो-डेटा डंप बनाना चाहता हूं?

+1

5.5 और बाद के लिए, आपको वास्तव में ट्रिगर कोड डंप करने के लिए TRIGGER विशेषाधिकार की आवश्यकता नहीं है। – bluecollarcoder

+1

मैं 5.5 का उपयोग कर रहा हूं और ट्रिगर कोड को डंप करने के लिए TRIGGER विशेषाधिकार की आवश्यकता है। – heuri

+0

मेरे मामले में ऐसा लगता है कि मुझे डेटाबेस पर 'लॉक टैबलेट' की भी आवश्यकता है, मैं खुद को डंप करने की कोशिश कर रहा हूं ... '5.5.49-MariaDB' – 0xC0000022L

7

मुझे अतिरिक्त अनुदान की आवश्यकता है !! http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

TRIGGER विशेषाधिकार ट्रिगर आपरेशन सक्षम बनाता है:

GRANT TRIGGER ON `myschema`.* TO 'dump'@'%' 

यहाँ आप आधिकारिक दस्तावेज़ पर संदर्भ है। उस तालिका के लिए ट्रिगर बनाने, ड्रॉप करने या निष्पादित करने के लिए आपके पास तालिका के लिए यह विशेषाधिकार होना चाहिए।

+3

नाम वास्तव में TRIGGER, – thenickdude

+0

से चलाता नहीं है हालांकि इस लेखक समस्या का एक जवाब है, यह सवाल का जवाब नहीं है हो सकता है: "एक ऐसा करने के लिए कम से कम GRANT आवश्यकताएँ हैं क्या पूर्ण डंप "। एक के लिए: घटना और शो दृश्य गायब हैं। – Jannes

+0

5.5 और ऊपर के लिए, आपको वास्तव में ट्रिगर कोड डंप करने के लिए 'TRIGGER' विशेषाधिकार की आवश्यकता नहीं है। – bluecollarcoder

1

मुझे पता चला कि कभी-कभी अगर डिफिनर उपयोगकर्ता मौजूद नहीं है, तो डंप विफल हो जाता है।

यह बदलें, के रूप में वर्णित there

+0

का उपयोग करके यह सुनिश्चित नहीं है कि यह क्यों नीचे दिया गया था, मेरी समस्या हल हो गई। मैंने 'व्यक्ति @ लोकलहोस्ट' के बजाय 'व्यक्ति' के रूप में निश्चित निर्दिष्ट किया था। धन्यवाद! – stianlik