Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या MySQL विश्वसनीय रूप से उन बैकअप को पुनर्स्थापित कर सकता है जिनमें दृश्य हैं या नहीं?

यह प्रश्न थोड़ा पुराना है, लेकिन मैंने ठीक उसी मुद्दे को हल करने की कोशिश में कुछ घंटे बर्बाद कर दिए हैं, इसलिए मुझे लगता है कि भविष्य में किसी के लिए एक स्पष्ट स्पष्टीकरण काम आ सकता है...

पीछा करने के लिए कटौती करने के लिए:समस्या आपके MySQL डंप में DEFINER फ़ील्ड में है। यह कुछ ऐसा दिखता है:

/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */

समस्या यह है कि यह *[email protected] है। * हमेशा उस उपयोगकर्ता खाते में हार्डकोड किया जाएगा जिसका उपयोग मूल डीबी में दृश्य बनाने के लिए किया गया था और नहीं उपयोगकर्ता जिसे आपने डेटाबेस को निर्यात या आयात करने के लिए उपयोग किया है जैसा कि कोई उम्मीद करेगा (या कम से कम मैंने किया)। और बाद में, आयात के दौरान, इस उपयोगकर्ता का उपयोग दृश्य को फिर से बनाने के लिए किया जाएगा।

तो आप रूट के रूप में निर्यात/आयात कर सकते हैं, लेकिन यदि मूल डीबी किसी अन्य उपयोगकर्ता के अधीन चल रहा है और उसके पास नए डेटाबेस में कोई दृश्य बनाने का अधिकार नहीं है, तो आयात विफल हो जाएगा।

आपके पास दो आसान उपाय हैं:

  1. सभी संदर्भ खोजें और बदलें some_user @localhost अपने नए उपयोगकर्ता के साथ अपनी डंप फ़ाइल में (जिसे आप डंप आयात करने के लिए उपयोग करते हैं, उदाहरण के लिए example@ sqldat.com )
  2. या आप नए डेटाबेस पर *some_user* उचित अधिकार प्रदान कर सकते हैं ताकि उसके खाते के तहत विचार बनाए जा सकें

किसी भी तरह से समस्या ठीक हो जाएगी, लेकिन मुझे लगता है कि पहला तरीका बेहतर और साफ-सुथरा है, क्योंकि आपको भविष्य में कई उपयोगकर्ताओं के बारे में चिंता करने की ज़रूरत नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रति पृष्ठ एक प्रश्नोत्तरी आइटम (php/mysql प्रश्नोत्तरी कार्यक्रम)

  2. अज्ञात भाषा के बहुभाषी डेटा को संग्रहीत करने के लिए MySQL संयोजन

  3. MySQL में केस स्टेटमेंट

  4. वास्तविक MySQL क्वेरी समय मापना

  5. SQL में टाइमस्टैम्प से, आज, कल, इस सप्ताह, इस महीने और दो तिथियों के बीच के रिकॉर्ड का चयन php mysql