सवाल मैं MySQL उपयोगकर्ता तालिका को एक सर्वर से दूसरे सर्वर में कैसे कॉपी कर सकता हूं? [डुप्लिकेट]


इस प्रश्न का उत्तर यहां दिया गया है:

मैं एक नया MySQL सर्वर स्थापित कर रहा हूं और मैं इसे मौजूदा सर्वर के रूप में उपयोगकर्ता नाम, अनुमति होस्ट और पासवर्ड को एक ही सेट देना चाहता हूं (जो दूर जा रहा है)।

क्या यह केवल उपयोगकर्ता तालिका का डंप करने के लिए काम करेगा और फिर इसे नए सर्वर पर लोड करेगा?

क्या इससे बेहतर तरीका है?


36
2017-07-06 21:54


मूल




जवाब:


oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

इसे करना चाहिए, जोड़ना याद रखें -u $USER तथा -p$PASSWORD जैसी ज़रूरत


35
2017-07-06 22:10



'Mysql' डीबी में केवल अनुदान की तुलना में बहुत अधिक उपयोग शामिल हैं। उपर्युक्त चरणों को करने से पहले सुनिश्चित करें कि आप इसे सभी स्थानांतरित करना चाहते हैं। - Martijn Heemels
मुझे त्रुटि मिल रही है You can't use locks with log tables। क्या इसके समाधान की कोई युक्ति है? - Despertar
यदि केवल उपयोगकर्ताओं की आवश्यकता है, तो मैं करूँगा mysqldump mysql user > mysql.sql - Minras
यह सही जवाब नहीं है। आपको पूरी mysql तालिका माइग्रेट नहीं करना चाहिए। उपयोग SHOW GRANTS FOR ... मौजूदा निजीकरण निकालने के लिए और फिर उन्हें नए मेजबान पर अनुदान दें। - caponica
@ एरिक की ओर से जिनके पास अभी तक टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं हैं: mysqldump का उपयोग किसी भी mysql स्कीमा टेबल के साथ न करें। इसका भयानक परिणाम हो सकते हैं। मैंने वास्तव में इस समस्या को स्वयं हल करने और हल करने के लिए स्वीकार्य उत्तर का उपयोग किया और मैं सभी प्रकार की त्रुटियों में भाग गया। मैं प्रभावी रूप से डेटाबेस से खुद को लॉक कर समाप्त कर दिया क्योंकि मेरा व्यवस्थापक खाता मेरे पासवर्ड को पहचान नहीं रहा था और मैं नए उपयोगकर्ता नहीं बना सका। यदि संस्करण समान हैं, तो आप mysqldump का उपयोग करने में सक्षम हो सकते हैं, लेकिन मुझे अभी भी इसका जोखिम नहीं होगा। - rrauenza


मैं एक नज़र डालेगा पेर्कोना टूलकिट। का विवरण pt-show-grants उपकरण यह सब कहते हैं ...

pt-show-grants निष्कर्ष, आदेश, और   फिर MySQL उपयोगकर्ता के लिए अनुदान प्रिंट करता है   हिसाब किताब।

आप यह क्यों चाहते हैं? वहां   कई कारण।

सबसे पहले उपयोगकर्ताओं को आसानी से दोहराना है   एक सर्वर से दूसरे तक; आप ऐसा कर सकते हैं   बस से अनुदान निकालें   पहला सर्वर और आउटपुट पाइप   सीधे दूसरे सर्वर में।

दूसरा उपयोग आपके अनुदान को रखना है   संस्करण नियंत्रण में ....


19
2017-07-09 02:07



क्या मैं आपको इस आदेश के लिए एक उदाहरण बनाने के लिए कह सकता हूं? - shgnInc
पीटी-शो-अनुदान - ऑसर रूट --स्क-पास - matheeeny


जबकि एक डंप mysql डेटाबेस शायद मेरे अनुभव में, सभी पहुंच को सही ढंग से दस्तावेज करने और इसे फिर से स्थापित करने के लिए काम करेगा GRANT बयान बहुत बेहतर है। ऐसा करने के लिए दो लाभ हैं:

  1. आप अपनी डेटाबेस सुरक्षा और इसे कैसे कार्यान्वित किया जाएगा समझेंगे।
  2. आपको उस एक्सेस को निकालना होगा जो अब आवश्यक नहीं है।

13
2017-07-06 23:03





यह पहले ही हल हो चुका है मैं MySQL से विशेषाधिकार कैसे निर्यात कर सकता हूं और फिर किसी नए सर्वर पर आयात कर सकता हूं?


10
2017-07-09 15:02





स्वीकृत उत्तर (mysqldump का उपयोग बैकअप mysql.user तालिका में) एक बहुत ही खतरनाक दृष्टिकोण है यदि आप किसी नए सर्वर संस्करण में माइग्रेट कर रहे हैं।

मैंने पहले ऐसा किया था (माइस्क्ल 4 से माइस्क्ल 5.1 तक माइग्रेट करने वाले उपयोगकर्ताओं), और बाद में मुझे अपने डेटाबेस उपयोगकर्ताओं को विशेषाधिकार देने या संशोधित करने की समस्याएं थीं।

ऐसा इसलिए होता है क्योंकि mysql.users तालिका संरचना mysql सर्वर संस्करणों के बीच भिन्न होती है, जैसा कि यहां बताया गया है:

https://dba.stackexchange.com/a/16441/18472 

तो, अगर आप अपने सर्वर संस्करण को अपग्रेड कर रहे हैं तो सावधानी बरतें। यहां कुछ और संकेत दिए गए हैं:

https://stackoverflow.com/a/13218162/710788


8
2018-01-17 18:10





mysqldump काम करेगा, लेकिन चूंकि MySQL डेटाबेस ISAM का उपयोग करता है, इसलिए आप निर्देशिका को नए सर्वर पर कॉपी कर सकते हैं। आपको इसे विभिन्न स्थानों पर मिल जाएगा, लेकिन mysql डेटाबेस के लिए सबसे आम स्थान / var / lib / mysql / mysql होगा। नए सर्वर पर mysql को रोकना सुनिश्चित करें, पुराने निर्देशिका को रास्ते से बाहर ले जाएं, निर्देशिका कॉपी करें और पुनरारंभ करें। रूट के रूप में मानक स्थानों का उपयोग कर एक उदाहरण:

# /etc/init.d/mysqld stop
# cd /var/lib/mysql
# mv mysql ../mysql.backup
# rsync -a root@oldserver:/var/lib/mysql/mysql .
# /etc/init.d/mysql start

4
2017-07-07 18:55



'Mysql' डीबी में केवल अनुदान की तुलना में बहुत अधिक उपयोग शामिल हैं। उपर्युक्त चरणों को करने से पहले सुनिश्चित करें कि आप इसे सभी स्थानांतरित करना चाहते हैं। - Martijn Heemels


अनुदान आदेश चलाने के लिए यह इतना आसान है। जैसे की

"पासवर्ड" द्वारा पहचाने गए "उपयोगकर्ता" @ "होस्ट" पर डेटाबेस.table पर सभी को अनुदान दें

इसलिए

डेटाबेस पर सभी को अनुदान दें। * "कुछ" द्वारा पहचाने गए "जैक" @ "लोकलहोस्ट"


1
2017-07-07 18:16