2012-07-22 15 views
44

मैं एक आरडीएस के लिए एक अमेज़न EC2 से मेरी mysql डेटाबेस नकल करने का प्रयास कर रहा हूँ:MySQL/अमेज़न आरडीएस त्रुटि: "आप सुपर विशेषाधिकार नहीं है ..."

मैं सफलतापूर्वक में मेरी डेटाबेस की एक mysqldump किया मेरी जड़ इस का उपयोग करते हुए फ़ोल्डर:

[email protected]:~# mysqldump my_database -u my_username -p > my_database.sql 

तब मैं अपने नए आरडीएस डेटाबेस को यह sql फ़ाइल हस्तांतरण करने की कोशिश की:

[email protected]:~# mysql my_database -u my_username -p -h 
my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql 

दुर्भाग्य से, मैं त्रुटि संदेश निम्नलिखित हो:

You do not have the SUPER privilege and binary logging is enabled 
(you *might* want to use the less safe log_bin_trust_function_creators variable) 

मैंने विभिन्न तरीकों से GRANT SUPER.. करने की कोशिश की लेकिन मुझे ऐसा करने का प्रयास करते समय त्रुटियां मिल रही हैं। टाइपिंग mysql > FLUSH privileges; या तो काम नहीं करता है।

मैं एक mysql शुरुआत करने वाला हूं, इसलिए इस तरह के एक आसान सवाल के लिए खेद है। विचार?

+5

आप नहीं 'आरडीएस पर GRANT SUPER' कर सकते हैं। आरडीएस सुपर विशेषाधिकार प्राप्त करने का कोई तरीका नहीं प्रदान करता है। – ceejayoz

+0

@ceejayoz, धन्यवाद अब मुझे पता है। क्या आप आरडीएस क्ली को काम करने में नीचे दिए गए मेरे मुद्दे पर सहायता कर सकते हैं? –

+0

डंप बनाने और इसे बहाल करने के लिए एक ही MySQL उपयोगकर्ता नाम का उपयोग करें (डंप में कनेक्शन और डिफिनर कीवर्ड के लिए)। Log_bin_trust_function_creators बदलना वांछित समाधान नहीं है। सबसे खराब बात यह है कि इस मामले में -12 पैरामीटर का उपयोग करना है – ad4s

उत्तर

40

प्रति http://getasysadmin.com/2011/06/amazon-rds-super-privileges/, आपको log_bin_trust_function_creators में AWS console में 1 को त्रुटियों के बिना अपनी डंप फ़ाइल लोड करने की आवश्यकता है।

आप इन त्रुटियों को अनदेखा, और डंप फ़ाइल के बाकी लोड करना चाहते हैं, तो आप -f विकल्प का उपयोग कर सकते हैं:

mysql -f my_database -u my_username -p -h 
my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql 

-f त्रुटि रिपोर्ट करेंगे, लेकिन डंप के शेष संसाधित करना जारी रखेंगे फ़ाइल।

+0

hi @Ross, इसके लिए धन्यवाद। दुर्भाग्य से, '-f' का उपयोग करने में मदद नहीं मिली। मुझे भी यही त्रुटि मिली। अपने लिंक का उपयोग करके, मुझे आरडीएस क्ली टूल्स सिंटैक्स के साथ परेशानी हो रही है। मतलब, जब मैं विशेषाधिकारों को बदलने के लिए जाता हूं तो मुझे निम्न त्रुटि मिलती है: 'आरडीएस-संशोधित-डीबी-पैरामीटर-समूह: विकृत इनपुट-अपरिचित विकल्प: --parameters = name = log_bin_trust_function_creators, उपयोग: आरडीएस-संशोधित-डीबी -परमीटर समूह डीबी पैरामीटर समूह समूह - पैरामीटर "नाम = मूल्य, मूल्य = मान, विधि = मान" [--parameters "नाम = मान, मूल्य = मान, विधि = मान" ...] [सामान्य विकल्प] ' –

+0

यहां मेरा आदेश है जो मुझे उपर्युक्त त्रुटि देता है:' ./rds-modify-db-parameter- समूह mygroup --parameters "name = log_bin_trust_function_creators, value = on, method = तत्काल" -I = "accesskeyxxxxxx" -S = "secretkeyxxxxxxxx" मुझे पता है कि इसे उद्धरण या डबल-डैश मुद्दा होना चाहिए, लेकिन इनमें से कोई भी बदलाव अब तक काम नहीं कर रहा है, उह! –

+2

'-f' विकल्प त्रुटियों को दूर नहीं करेगा, यह फाइल को संसाधित करने के लिए गैर-अपमानजनक SQL कथनों को अनुमति देगा। मैंने जो पढ़ा है, उससे आरडीएस डंप फ़ाइल में संग्रहित प्रक्रियाओं पर चकित कर रहा है। स्टोर प्रक्रियाओं के बिना डंप फ़ाइल बनाने का प्रयास करें और देखें कि क्या यह ठीक है: 'mysqldump --routines = 0 --triggers = 0 --events = 0 my_database -u my_username -p' –

20

डंप फ़ाइल में ट्रिगर्स और संग्रहीत प्रक्रियाओं के साथ समस्या यह है कि इन परिभाषाओं में उपयोगकर्ता शामिल है जो संग्रहीत प्रक्रिया को डिफिनर द्वारा बनाया जाना चाहिए। उपयोगकर्ता संभवतः आरडीएस में मौजूद नहीं है, इसलिए एक त्रुटि तब उठाई जाती है। डंप फ़ाइल लोड करने में सक्षम होने के लिए आप डेफिनर को sed या Perl का उपयोग करके हटा सकते हैं और आयात करने वाले उपयोगकर्ता के साथ संग्रहीत प्रक्रिया/ट्रिगर बना सकते हैं।

perl -pe 's/\sDEFINER=`[^`]+`@`[^`]+`//' <mysqldump.sql> mysqldump.fixed.sql 

अब आप तय डंप फ़ाइल

mysql my_database -u my_username -p -h rds_host < mysqldump.fixed.sql 

जैसा कि पहले जवाब में कहा लोड करने के लिए सक्षम होना चाहिए, आप स्थापित करना चाहिए डीबी पैरामीटर:

log_bin_trust_function_creators = 1 
+1

निश्चित सफाई करने वालों को भी sed के साथ पूरा किया जा सकता है: sed -i/DEFINER = 'OldDefiner' @' localhost'/DEFINER = 'NewDefiner' @' localhost'/g './TargetSqlFile.sql – siliconrockstar

+0

धन्यवाद एंडर्स, काम किया पूरी तरह से। – Jafo

+0

हां, इसने चाल बनाई! – ThomasSquall

52
  1. ओपन आरडीएस वेब कंसोल
  2. "पैरामीटर समूह" टैब खोलें।
  3. नया पैरामीटर समूह बनाएं। संवाद पर, MySQL परिवार को अपने MySQL डेटाबेस संस्करण के अनुकूल संगत चुनें, इसे एक नाम दें और पुष्टि करें। अभी बनाए गए पैरामीटर समूह का चयन करें और "पैरामीटर संपादित करें" जारी करें।
  4. पैरामीटर 'log_bin_trust_function_creators' के लिए देखो और इसका मान '1' पर सेट करें।
  5. परिवर्तनों को सहेजें।
  6. "इंस्टेंस" टैब खोलें। अपने MySQL इंस्टेंस का विस्तार करें और "संशोधित करें" नामक "इंस्टेंस एक्शन" जारी करें।
  7. अभी बनाए गए पैरामीटर समूह का चयन करें और "तुरंत लागू करें" सक्षम करें।
  8. "जारी रखें" पर क्लिक करें और परिवर्तनों की पुष्टि करें।
  9. फिर से, "इंस्टेंस" टैब खोलें। अपने MySQL इंस्टेंस का विस्तार करें और "संशोधित करें" नामक "इंस्टेंस एक्शन" जारी करें।
  10. न भूलें: "इंस्टेंस" टैब खोलें। अपने MySQL इंस्टेंस का विस्तार करें और "रीबूट" नामक "इंस्टेंस एक्शन" जारी करें।
+1

इसने स्थानीय परीक्षण डीबी को आरडीएस में माइग्रेट करने की मेरी समस्या हल की और अब तक का सबसे आसान तरीका है। –

+0

बिंदु 9 क्या करता है? – Sushil

2

जैसा कि एडब्लूएस प्रलेखन ट्रिगर्स, प्रक्रियाओं और कार्यों में परिभाषित किया गया है डिफ़ॉल्ट रूप से अक्षम हैं क्योंकि बाइनरी लॉगिंग डिफ़ॉल्ट रूप से सक्षम है। मूल रूप से अक्षम करने से आपका डीबी अधिक सुरक्षित हो जाता है, लेकिन यदि आपने नेटवर्क के माध्यम से ठीक से सुरक्षित किया है तो इससे कोई फर्क नहीं पड़ता।

इन चरणों का पालन करें और अपनी समस्या https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

ठीक किया जाएगा इसके अलावा, आप जब प्रक्रियाओं बनाने definers उपयोग नहीं करना चाहिए। एक साधारण sed कमांड इसे हटा सकता है।

2

इसके अलावा संपादन

log_bin_trust_function_creators = 1

से आप अपने डंप फ़ाइल से सभी Definer दूर करने के लिए, एसईडी आदेश अपने एसक्यूएल डंप फ़ाइल की सफाई में मदद कर सकते के लिए नीचे दिए गए लिंक की जाँच की जरूरत है।

https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243

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