EC2 মাইএসকিউএল থেকে অ্যামাজন আরডিএসে স্থানান্তরিত করার প্রথম প্রচেষ্টাটি ভাল হচ্ছে না - সুপার সুবিধা privile


11

আমি ইসি 2 এ চলমান মাইএসকিউএল থেকে একটি নতুন ডিবিতে নতুন অ্যামাজন আরডিএস ইনস্ট্যান্সে স্থানান্তরিত করার চেষ্টা করছি (আমরা পরীক্ষা চালিয়ে যেতে পারি কিনা তা দেখার জন্য একটি পরীক্ষা)। এখনও পর্যন্ত, এটি ভাল চলছে না। প্রতিলিপি স্থাপনের আগে আমি প্রাথমিক আমদানিতে আটকে আছি ( এখানে নির্দেশাবলী )।

আমি বর্ণিত হিসাবে আরডিএস উদাহরণ প্রস্তুত করেছি এবং এটি ইসি 2 এসএনএসএল থেকে মাইএসকিএল ব্যবহার করে সংযোগ করতে পারি। আমি mysqldump কমান্ডটি চালিয়েছি:

mysqldump --master-data --databases db1 db2 > dump.sql

তারপরে এটি আরডিএসে আপলোড করার চেষ্টা করেছে:

mysql -h RDSHost -P 3306 -u rdsuser --password=rdspassword < dump.sql

প্রথম সমস্যাটি ডাম্পের 22 তম লাইনে ছিল:

মাস্টার থেকে MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 106 পরিবর্তন করুন;

এই লাইনটি ত্রুটি সৃষ্টি করেছিল ERROR 1227 (42000) at line 22: Access denied; you need (at least one of) the SUPER privilege(s) for this operation। কোনও সমস্যা নেই, কেবলমাত্র সেই লাইনটি মন্তব্য করেছে এবং আশা করি এটি mysql.rds_set_external_master () এর মাধ্যমে পরে সংশোধন করবে। আপলোড আবার পুনঃচেষ্টা, এবং একটি অনুরূপ ত্রুটিটি পেয়েছিলেন: ERROR 1227 (42000) at line 7844: Access denied; you need (at least one of) the SUPER privilege(s) for this operation। 44 line৪৪ রেখার চারপাশের অংশটি এরকম দেখাচ্ছে:

/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`dev`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `jos_contributor_ids_view` AS select `jos_resource_contributors_view`.`uidNumber` AS `uidNumber` from `jos_resource_contributors_view` union select `jos_wiki_contributors_view`.`uidNumber` AS `uidNumber` from `jos_wiki_contributors_view` */;

প্রথম 2 টি লাইন মন্তব্য করে এবং তৃতীয়টিতে একটি 'তৈরি' যুক্ত করে আমি এইটি পেরিয়ে যেতে সক্ষম হয়েছি। তবে এখানে অনেকগুলি বিভাগ রয়েছে। সমস্ত সম্পাদনা ছাড়াই এই উপায় আছে? mysqldumpসুপারের সুবিধাগুলি প্রয়োজন এমন কোনও উত্পাদন না করার বিকল্পের মতো ?

এটি দেখে মনে হচ্ছে মানুষের প্রচুর চালানোর থাকার মত, একই ধরণের সমস্যা ছিল sedmysqldump / mysqlbinlog আউটপুট বিরুদ্ধে! আমি এডাব্লুএস ফোরামেও পোস্ট করতে যাচ্ছি - সত্যই আমি মনে করি আরডিএসের মাইএসকিल्डম্প থেকে আমদানির আরও সহনশীল উপায় থাকা উচিত, বা একটি নির্দিষ্ট সরঞ্জাম যা একটি বিদ্যমান ডিবির বিরুদ্ধে চালানো যেতে পারে যা আরডিএস সুরক্ষার অভিযোগ রয়েছে complaint কারও কাছে এমন অন্য কোনও রেসিপি বা কৌশল রয়েছে যা এখানে সহায়তা করতে পারে তা কেবলই অবাক হয়েছি।

ধন্যবাদ,

ডেভ


দুঃখিত - এটি বলতে ভুলে গেছি যে আমি log_bin_trust_function_creatorsপ্যারামিটারটি 1-এ পরিবর্তন করার চেষ্টা করেছি , তবে এখনও 44 7844৪ লাইনে একই ত্রুটি পেয়েছি।
dsl101

পুরানো পোস্ট, তবে প্রথম ত্রুটিটি আপনি বলে এড়াতে পারবেন --masterdata=2। লাইনটি তখন ডাম্পের মধ্যে মন্তব্য করা হবে।
হাফগ্গার

উত্তর:


26

আপনার log_bin_trust_function_creatorsআরডিএসে সম্ভবত = 1 দরকার তবে এটি এখানে সমস্যা নয়।

আপনি DEFINER যদি আপনার SUPER অধিকার থেকে থাকে তবে আপনি নিজের অ্যাকাউন্ট ছাড়া অন্য কোনও মান নির্দিষ্ট  করতে পারেন  ।

- http://dev.mysql.com/doc/refman/5.6/en/stored-program-security.html

যখন কোনও সঞ্চিত প্রোগ্রাম (proc, ফাংশন, ইভেন্ট, বা ট্রিগার) চলমান থাকে, তখন এটির যাবতীয় ব্যবহারকারীর অনুমতি রয়েছে যারা এটি সংজ্ঞায়িত করেছেন বা ব্যবহারকারীর স্পষ্টভাবে বিবৃতি দিয়ে বলেছেন DEFINER। এটি স্ট্রাকড প্রোগ্রামগুলির জন্য অন্যান্য ব্যবহারকারীদের মধ্যে, অন্য ব্যবহারকারীদের ডেটাগুলিতে জিনিস করার অনুমতি দেয়, যতক্ষণ না তাদের কাছে সঞ্চিত প্রোগ্রামটি ব্যবহারের অনুমতি রয়েছে।

এটি তখন মারাত্মক দুর্বলতা হতে পারে, যদি কোনও অ- SUPERব্যবহারকারী স্বেচ্ছাসেবক সুনির্দিষ্ট সাথে কোনও প্রক্রিয়া তৈরি করতে পারে, কারণ ব্যবহারকারী নিজের ইচ্ছায় তার সুযোগসুবিধি বাড়িয়ে তুলতে পারে।

এটি দৃশ্যের ক্ষেত্রেও সত্য, অবশ্যই যখন সুনির্দিষ্ট সুরক্ষা প্রসঙ্গ ব্যবহৃত হয়, যেমন আপনি পোস্ট করেছেন posted

আরডিএসের সাথে আমার সবচেয়ে বড় অভিযোগ হ'ল আপনার থাকতে পারে না SUPER... এবং এখন এটি আপনার অন্যতম হতে পারে :) কারণ এই সমস্যাটিই আপনার সমস্যার কারণ।

অবশ্যই, যদি আমি একটি পরিচালিত মাইএসকিউএল পরিষেবা চালাচ্ছিলাম, তবে আমি কাউকেই দেব না SUPER, তাই তাদের সুরক্ষা মডেলটি বোধগম্য হয়, যদিও এটি কখনও কখনও অনর্থকও হয়।

যদি আপনার সমস্ত বস্তুর একইরূপ নির্ধারণ থাকে তবে আপনি এখন যে অ্যাকাউন্টটি ব্যবহার করছেন তার পরিবর্তে সেই অ্যাকাউন্টটি ব্যবহার করে ডাম্পটি পুনঃস্থাপন করার জন্য একটি কার্যপ্রণালী হবে, তবে এটি অসম্ভব বলে মনে হচ্ছে।

DEFINERঘোষণার সাথে কেবল লাইনটি মুছে ফেলা হলে ডাম্পফাইলে এমন একটি ক্ষেত্রে কাজ করা উচিত যেখানে এটি নিজেই কোনও লাইনে উপস্থিত হয়, বা আপনি ফাইলটি সংশোধন করার জন্য সেড বা পার্ল ব্যবহার করতে পারেন ... এমন ধারণা যা আমি ইতিমধ্যে জানি যে আপনি পছন্দ করেন না, তবে এটি মাইএসকিউএল সম্পর্কে একটি দুর্দান্ত বিষয় যে এই ধরণের হ্যাকারিটি বেশ বৈধ এবং সত্যিই আমি ডিবিএ হিসাবে কোনও অ-আরডিএস এনভায়রনোমেণ্টে ডিবিএ হিসাবে যে ধরণের জিনিসগুলি করতে হয় তা থেকে দূরে নয়।

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

... সম্ভবত আপনি যে উত্তরটির প্রত্যাশা করেছিলেন তা সম্ভবত নয়, তবে আপনি এটি আপনার ডাম্পফিলের বিরুদ্ধে চালাতে পারেন এবং কিছুটা ব্যবহারযোগ্য ফাইলের সাথে শেষ হওয়া উচিত।


বিস্তৃত জবাবের জন্য এবং সেড / পার্লকে একমাত্র সমাধান হিসাবে আমি কী ভেবেছি তা নিশ্চিত করার জন্য অনেক ধন্যবাদ। আমি যে অ্যাপ্লিকেশনটি ব্যবহার করছি এটি জুমলা অত্যন্ত কাস্টমাইজ করা হয়েছে এবং ওপেন-সোর্স হিসাবে আমি আরডিএসে ভালভাবে চলে যেতে পারি কিনা তা বিশ্লেষণ করার সময় / দক্ষতা আমার নেই। আমার চিন্তা ছিল 'এটি চেষ্টা করে দেখুন' - তবে মনে হচ্ছে প্রথম পদক্ষেপটি সবচেয়ে শক্ত - অ্যামাজনের অপ্রতুল (আমার মতে) মাইগ্রেশন সরঞ্জামগুলির কারণে কোনও অংশেই কম নয়। আমি সুরক্ষা মডেলটির সাথে একমত, তবে যদি মাইএসকিএলডামের ডিফল্ট আউটপুট এতগুলি সমস্যা তৈরি করে, তবে কেন তাদের আরও ভাল সমাধান হবে না? আমি তাদেরও এটি জিজ্ঞাসা করব।
dsl101

1
অসাধারণ. পার্ল স্ক্রিপ্টের জন্য আপনাকে অনেক ধন্যবাদ। আমার ব্যাকআপটি 4+ গিগাবাইট ছিল এবং এটি খোলার পক্ষে একটি চ্যালেঞ্জ ছিল। এটা আমার দিন বাঁচিয়েছে।
এমিল বাইজেল

1
দুর্দান্ত ব্যাখ্যা, দুর্দান্ত উত্তর, এবং দুর্দান্ত সমাধান! বোকা নির্ধারক।
rkaregaran

4
আপনার পার্ল ওয়ান লাইনারের জন্য অনেক ধন্যবাদ। এটিই কেবলমাত্র আমি খুঁজে পেতে সক্ষম হয়েছি যা আসলে কাজ করে। এই বোর্ডগুলিতে থাকা অনেকেই সহজভাবে তা করেন না। আমি যদি আবার পারতাম তবে উপভোগ করব।
lucian303

1

আমার ক্ষেত্রে ডাম্পের "চেস্টার মাস্টার টু মাস্তিটল্লো_এফাইল = ..." লাইনটি আমাকে ত্রুটি দিচ্ছিল। এই লাইনটি মাইএসকিএলডাম্পের "- মাস্টার-ডেটা" বিকল্প দ্বারা যুক্ত করা হয়েছিল। আমাজন ডেস্কটপ AWS আপনি "mysql.rds_set_external_master" পদ্ধতি মাস্টার বিবরণ সেট করে রেপ্লিকেশন শুরু করতে পরিবর্তে পড়তে এখানে

সুতরাং আমি কেবল সেই লাইনটি "হেড 22 ব্যাকআপ.ডাম্প" নোটগুলি টোক করেছিলাম যেখানে 22 লাইনটি ত্রুটিতে রিপোর্ট করেছে। তারপরে আমদানির আগে এটি অপসারণ করুন, আমার বড় ফাইলের জন্য আমি ব্যবহার করি: "সেড '22 ডি' ব্যাকআপ d ডাম্প> ব্যাকআপ_ক্লান.ডম্প"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.