আমি কীভাবে মাইএসকিএলডাম্প ব্যাকআপের জন্য পঠিত মাইএসকিউএল ব্যবহারকারী তৈরি করব?


14

আমি automysqlbackupআমার মাইএসকিএল ডাটাবেসগুলি ডাম্প করতে স্ক্রিপ্টটি ব্যবহার করছি , তবে আমি এটির জন্য একটি পঠনযোগ্য ব্যবহারকারী থাকতে চাই যাতে আমি আমার রুট ডাটাবেসের পাসওয়ার্ডটি একটি সরলখাতু ফাইলটিতে সংরক্ষণ করি না।

আমি এর মতো একটি ব্যবহারকারী তৈরি করেছি:

grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';

যখন আমি দৌড়ব mysqldump( automysqlbackupসরাসরি বা সরাসরি) আমি নিম্নলিখিত সতর্কতাটি পাই:

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES

আমি কি এটা ভুল করছি? আমার পঠনদায়ক ব্যবহারকারীর জন্য কি আমার অতিরিক্ত অনুদানের দরকার? নাকি কেবল টেবিলটি rootলক করতে পারবেন information_schema? কি হচ্ছে?

সম্পাদনা:

গাহ এবং এখন এটি কাজ করে। আমি পূর্বে ফ্লুশ প্রাইভেলিজ চালাতে পারি নি।

সরু হিসাবে, স্বয়ংক্রিয়ভাবে এটি কতবার ঘটে?

সম্পাদনা:

না, এটি কাজ করে না। mysqldump -u username -p --all-databases > dump.sqlম্যানুয়ালি চালানো ত্রুটি উত্পন্ন করে না, তবে তথ্য_চেমাকে ডাম্প করে না। automysqlbackupএকটি ত্রুটি উত্থাপন করে।


ওহো ... এর জন্য ম্যান পৃষ্ঠা থেকে mysqldump: মাইএসকিএলডাম্প INFORMATION_SCHEMA ডেটাবেস ডাম্প করে না। আপনি যদি সেই ডাটাবেসটিকে কমান্ড লাইনে স্পষ্টভাবে নাম দিয়ে থাকেন, মাইএসকিলডম্প নীরবে এটিকে উপেক্ষা করে মনে হচ্ছে ম্যান পৃষ্ঠাটি পুরানো হয়ে গেছে (এবং এটি একটি সতর্কতা উত্থাপন করে), বা এর automysqlbackupজন্য ডাম্পে কিছু অতিরিক্ত চেক করছে information_schema। এটি কোনটি তা নিশ্চিত নয় তবে এটি ব্যবহারকারী অনুদানের সাথে সম্পর্কিত নয়।
স্টিকম্যাম্বম্বি

1
এটি কোনও দুর্দান্ত সমস্যা নয়। আপনাকে INFORMATION_SCHEMA ব্যাকআপ নেওয়ার দরকার নেই (দেখুন: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
স্মলক্ল্যাঞ্জার

1
স্মলক্ল্যাঞ্জার যা বলেছেন তাতে যুক্ত করতে, INFORMATION_SCHEMA একটি ভার্চুয়াল ডাটাবেস, মাইএসকিউএল পুনরায় চালু হওয়ার সাথে সাথে পুনর্নির্মাণ করা হয়, সুতরাং আপনি এটি আর পুনরুদ্ধার করতে পারবেন না বলে এটি ব্যাক আপ করার কোনও অর্থ নেই।
জন গার্ডেনিয়ার্স

উত্তর:


4

এই অনুমতিগুলি মাইএসক্ল্ড্প্পের জন্য প্রয়োজনীয় সমস্ত হওয়া উচিত।

যেহেতু আপনি লক ট্যাবলেটগুলি দিয়েছেন এবং এটি লক টেবিলে ত্রুটিযুক্ত রয়েছে তাই মনে হচ্ছে অনুমতিগুলি অসঙ্গত। আপনি একটি চালানো আছে FLUSH PRIVILEGES?


1

ওহো ... এর জন্য ম্যান পৃষ্ঠা থেকে mysqldump:

mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it

মনে হচ্ছে ম্যান পৃষ্ঠাটি পুরানো হয়ে গেছে (এবং এটি একটি সতর্কতা উত্থাপন করে), বা এর automysqlbackupজন্য ডাম্পে কিছু অতিরিক্ত চেক করছে information_schema

এটি কোনটি তা নিশ্চিত নয় তবে এটি ব্যবহারকারী অনুদানের সাথে সম্পর্কিত নয়।

সম্পাদন করা

হ্যাঁ, এটি automysqlbackupভার্সন 2.5.1 সংস্করণে একটি বাগ (উবুন্টু 10.04 এর অধীনে মাইএসকিউএল 5.1.41 ব্যবহার করে) - information_schemaযখন এটি করা উচিত নয় তখন এটি ব্যাকআপ নেওয়ার চেষ্টা করে ।

ফিক্স: যোগ information_schemaকরতে DBEXCLUDEস্ক্রিপ্ট লাইন 76 উপর।


এটি কোনও দুর্দান্ত সমস্যা নয়। আপনাকে INFORMATION_SCHEMA ব্যাকআপ নেওয়ার দরকার নেই (দেখুন: dev.mysql.com/doc/refman/5.0/en/information-schema.html )
স্মলক্ল্যাঞ্জার

স্মলক্ল্যাঞ্জার যা বলেছেন তাতে যুক্ত করতে, INFORMATION_SCHEMA একটি ভার্চুয়াল ডাটাবেস, মাইএসকিউএল পুনরায় চালু হওয়ার সাথে সাথে পুনর্নির্মাণ করা হয়, সুতরাং আপনি এটি আর পুনরুদ্ধার করতে পারবেন না বলে এটি ব্যাক আপ করার কোনও অর্থ নেই।
জন গার্ডেনিয়ার্স

0

ব্যবহারকারী তৈরি করুন

GRANT USAGE ON *.* TO 'dump'@'localhost' IDENTIFIED BY 'plaintext-pass';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost';

সুবিধাগুলি পরীক্ষা করুন

mysql> SHOW GRANTS FOR dump@'localhost';
+-----------------------------------------------------------------------------------------------+
| Grants for dump@localhost                                                                     |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dump'@'localhost'                                                      |
| GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost' |
+-----------------------------------------------------------------------------------------------+

ফাইল তৈরি করতে yor প্রিয় সম্পাদক ব্যবহার করুন ~/.my.cnfসঙ্গেchmod 400

[client]
user=dump
password=plaintext-pass

উদাহরণস্বরূপ, ডাম্পগুলির জন্য ফোল্ডার তৈরি করুন

mkdir ~/db-dumps

এটি কাজ করে কিনা পরীক্ষা করে দেখুন

mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/manual-my-db-dump-`date +%F`.sql.gz

Ptionচ্ছিকভাবে আপনি ডাম্পগুলি তৈরি করতে পারেন dailyএবং তারপরে মাসের weeklyসমস্ত dailyপুরানো মুছে ফেলতে পারেন

#m h  dom mon dow   command
0  3  *   *   0,2-6 /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/daily-my-db-dump-`date +%F`.sql.gz;
0  3  *   *   1     /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/weekly-my-db-dump-`date +%F`.sql.gz;
0  4  *   *   *     /usr/bin/find ~/db-dumps/ -name "daily-*" -type f -mtime +30 -exec rm -f {} \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.