एक पूर्ण स्कीमा डंप करने के लिए mysqldump द्वारा आवश्यक न्यूनतम अनुदान? (ट्राइगर गायब हैं !!)


79

मेरे पास एक MySQL उपयोगकर्ता है जिसे निम्नलिखित परमिट के साथ डंप कहा जाता है :

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

ट्रिगर के अलावा डंप की गई फ़ाइल के साथ सब कुछ ठीक है, वे गायब हैं !!

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

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

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

जवाबों:


111

पूर्ण डंप के अनुसार आप भी 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अगर मुझे केवल एक डेटा-डंप बनाने की आवश्यकता है तो मुझे इसकी आवश्यकता क्यों है ?


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

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

मेरे मामले में यह प्रतीत होता है कि मुझे LOCK TABLESउस डेटाबेस पर भी ज़रूरत है जिसे मैं खुद को डंप करने की कोशिश कर रहा हूं ... का उपयोग करते हुए5.5.49-MariaDB
0xC0000022L

1
@ 0xC0000022L की टिप्पणी के बारे में, टेबल पर ताला लगा या नहीं, mysqldump के लिए वैकल्पिक है अपने mysqldump मापदंडों के आधार पर (प्रासंगिक मापदंड हैं --opt, --lock-tables, --lock-all-tables, --single-transactionऔर संबंधित --skip-*वेरिएंट।
टॉर्क

8

मैं अतिरिक्त जरूरत है मुझे मिल गया !!

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

यहाँ आपके पास आधिकारिक डॉक पर संदर्भ है: http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

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


3
नाम वास्तव में TRIGGER है, TRIGGERS नहीं है
Julick

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

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

5
मैं 5.5 का उपयोग करता हूं और मुझे वास्तव में इसकी आवश्यकता है
एमिलियो निकोलस

1

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

इसे बदल दें, जैसा कि वहां वर्णित है


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

1

Jannes जवाब के अलावा , mysqldump का उपयोग करते समय --tab विकल्प के साथ (प्रत्येक डंप किए गए टेबल के लिए एक टैब-अलग पाठ फ़ाइल का उत्पादन करता है), आपके MySQL उपयोगकर्ता कोFILE विशेषाधिकार भी प्रदान किया जाना चाहिए :

GRANT FILE ON *.* TO 'dump'@'%';

आधिकारिक डॉक्स संदर्भ: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_tab

इस खंड में उल्लेख किया गया है:

इस विकल्प का उपयोग केवल तब किया जाना चाहिए जब mysqldump उसी मशीन पर mysqld सर्वर के रूप में चलाया जाता है। क्योंकि सर्वर आपके द्वारा निर्दिष्ट निर्देशिका में * .txt फाइलें बनाता है, निर्देशिका को सर्वर और MySQL खाते द्वारा लिखने योग्य होना चाहिए जो आप उपयोग करते हैं, उसके पास फ़ाइल विशेषाधिकार होना चाहिए। क्योंकि mysqldump एक ही डायरेक्टरी में * .sql बनाता है, इसलिए इसे आपके सिस्टम लॉगिन अकाउंट द्वारा राइट किया जाना चाहिए।

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