এখানে কিছু আকর্ষণীয় বিষয় বিবেচনা করুন: mysql
ডাটাবেস ব্যাকআপ করা আপনাকে যথেষ্ট পরিমাণে সীমাবদ্ধ করে দেয় যে আপনি কেবল এমন ডেটাবেসকে মাইএসকিএলের একই সংস্করণে পুনরুদ্ধার করতে পারবেন যেখান থেকে আপনি ব্যাকআপটি চালিয়ে গিয়েছিলেন। এখানে কেন:
এখানে MySQL 5.0.45 থেকে mysql.user রয়েছে
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | | |
| x509_issuer | blob | NO | | | |
| x509_subject | blob | NO | | | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.01 sec)
এখানে MySQL 5.1.32 থেকে mysql.user রয়েছে
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
39 rows in set (0.00 sec)
মাইএসকিউএল 5.5.12 থেকে mysql.user এখানে রয়েছে
mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.01 sec)
আপনি যদি মাইএসকিউএল এর কোনও সংস্করণে mysql.user টি পুনরুদ্ধার করার চেষ্টা করেন তবে এটি এর জন্য নয়, এটি এলোমেলো অনুমতি সমস্যা তৈরি করবে। সংস্করণ-অজোনস্টিক উপায়ে মাইএসকিএল ব্যবহারকারীর অনুমতিগুলি ব্যাকআপ করার উপায়টি হল এসকিউএল-তে ব্যবহারকারী অনুদানগুলি ডাম্প করা। এইভাবে, ব্যবহারকারী অনুদানগুলি সম্পূর্ণ পোর্টেবল। এটি সম্পাদন করার দুটি উপায় রয়েছে:
বিকল্প # 1: MAATKIT ব্যবহার করা
এমকে-শো-অনুদানগুলি এসএসকিউএল তৈরি করবে যা আপনি মাইএসকিএল দৃষ্টান্তের সাথে সংযুক্ত করেন needed (মনে রাখবেন যে MAATKIT পার্কোনা টুলকিটে স্থানান্তরিত হচ্ছে This সম্ভবত এই সরঞ্জামটিকে পিটি-শো-অনুদান হিসাবে ডাকা হবে)।
বিকল্প # 2: এসকিউএল অনুদানের ডাম্পিং স্ক্রিপ্ট করুন
আমি এমকে-শো-অনুদানের নিজস্ব অনুকরণ লিখেছি। এটি অনামী ব্যবহারকারীদের ছেড়ে চলে যাবে। দেখে মনে হচ্ছে:
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
এই বিকল্পগুলির মধ্যে যে কোনও একটি ব্যবহার করে ব্যবহারকারী অনুদানগুলির আরও স্থিতিশীল ব্যাকআপ তৈরি করবে।
একটি পৃথক নোটে
এখন আপনি যদি এই লগ-আউটপুট বিকল্পটি ব্যবহার করেন
[mysqld]
log-output=TABLE
মাইএসকিএল ডাটাবেসটি কোনও পাঠ্য ফাইলের চেয়ে মাইএসকিএল স্কিমায় স্লো লগটি (যদি সক্ষম করা থাকে) মাইএসকিএল টেবিল হিসাবে পপুলেট করবে। সুতরাং, শারীরিক ব্যাকআপগুলি করা যেমন মাইএসকিএল টেবিল-ভিত্তিক লগগুলি অন্তর্ভুক্ত করবে। বিশ্বাস করুন, সাধারণ লগ এবং স্লো ক্যোয়ারী লগটি সক্রিয় করা হয় এবং মাইএসকিএল স্কিমাতে পাইলিং করা থাকলে ডিস্কস্পেসের পক্ষে মূল্য নেই। কেবল মাইএসকিউএল গ্রান্টস ডাম্প বিকল্পের সাথে লেগে থাকুন।
আপডেট ২০১১-০৯-১-19 15:54 ইডিটি
এসকিউএল অনুদানের মাধ্যমে মাইএসকিউএল অনুমতিগুলির ব্যাকআপগুলি বজায় রাখার জন্য খুব গুরুত্বপূর্ণ একটি বিষয় রয়েছে:
প্রতিটি ব্যবহারকারীর কিছু পরিবর্তিত MD5 ফর্ম্যাটে তাদের পাসওয়ার্ড নিয়ে আসে। Mysql 4.0 এবং পিছনে, এটি একটি 16-অক্ষরের হেক্সাডেসিমাল স্ট্রিং। Mysql 4.1+ এর জন্য এটি 41 টি অক্ষর (একটি অক্ষরেখার পরে 40-অক্ষরের হেক্সাডেসিমাল স্ট্রিং)।
আপনি কোনও এসকিউএল অনুদানের ডাম্প পুনরুদ্ধার করার আগে, কোনও 16-অক্ষরের হেক্সাডেসিমেল পাসওয়ার্ডের জন্য এসকিউএল অনুদানের ডাম্প ফাইলটি পরীক্ষা করে দেখুন। আপনি যদি একটিটি দেখতে পান তবে আপনাকে মাইএসকিএল সার্ভারে নিম্নলিখিতটি /etc/my.cnf (অথবা উইন্ডোজের জন্য my.ini) যুক্ত করতে হবে যা আপনি পুনরুদ্ধার করবেন:
[mysqld]
old_password=1
Old_password নির্দেশ সহাবস্থান প্রয়োজন এবং সঠিকভাবে একই চলমান মাইএসকিউএল ইনস্ট্যান্সের মধ্যে প্রমাণীকরণ 16 গৃহস্থালির কাজ এবং 41 গৃহস্থালির কাজ পাসওয়ার্ডগুলি অনুমতি দেয়। এগিয়ে যাওয়া যে কোনও পাসওয়ার্ড 16-অক্ষরের হবে।
মাইএসকিউএল পুনরায় চালু করার প্রয়োজন নেই। শুধু এটি চালান:
SET GLOBAL old_password = 1;