`Mysql` ডাটাবেসটি প্রতিলিপি করা ঠিক আছে কি?


15

আমি যখন মূলত আমার মাস্টার-থেকে-মাস্টার প্রতিলিপি সেট আপ করি তখন আমি ব্যবহার করি:

binlog-ignore-db=mysql

এবং ব্যবহারকারী অ্যাকাউন্টগুলি এবং ম্যানুয়ালি মঞ্জুরিগুলি সিঙ্ক করে চলেছে। এই সময়ে আমি কীভাবে ব্যবহার করছিলাম তা কেবল এটিই হয়েছিল । তবে কেন এই কারণটি আছে যে আমার এই লাইনটি সরিয়ে না দেওয়া এবং mysqlডাটাবেসটিকে নিজেই অনুলিপি করার অনুমতি দেওয়া উচিত নয় ?

যদি তাই হয়: আমি পরিবর্তনটি করার আগে, উভয়ই (বা আরও ভালভাবে বলা হয়েছে যে পুরো মাইএসকিএল ডাটাবেসটি একরকম) সমস্ত গ্রান্ট একই রকম রয়েছে তা নিশ্চিত করার আগে, আমার আরও কি ডাবল-চেক করা বা সচেতন হওয়া উচিত?


গত ৪.৫ বছর ধরে আমি মাইএসকিএল আপগ্রেড করার সময় এমনকি ছোটখাট আপগ্রেড করার ক্ষেত্রেও প্রতিরক্ষার সমস্যার সাথে অবিচ্ছিন্নভাবে লড়াই করেছি। কারণটি হ'ল apt-get upgrade(প্রকৃতপক্ষে, mysql-server .deb পোস্টিনস্ট স্ক্রিপ্ট) এমন ALTER TABLE userপ্রতিবেদনগুলি কার্যকর করে যা প্রতিলিপি করা যায় না। আমি এ কাজ সমাধান পোস্ট serverfault.com/questions/686025/...
dlo

উত্তর:


12

এসকিউএল গ্রান্ট কমান্ড না জেনে নিজেকে মাইএসকিএল অনুমতি দেওয়া সম্পূর্ণভাবে সম্ভব ।

উদাহরণ: ক্লার্ককেন্টের পাসওয়ার্ড সহ সুপারডবা নামে যে কোনও জায়গা থেকে এসকিউএল গ্রান্ট ব্যবহার করে সম্পূর্ণ সুবিধাসহ আপনার নিজস্ব ব্যবহারকারী তৈরি করতে এখানে:

GRANT ALL PRIVILEGES ON *.* TO superdba@'%' IDENTIFIED BY 'ClarkKent' WITH GRANT OPTION; 

GRANT কমান্ড ব্যতীত আপনি এটি কীভাবে করতে পারেন তা এখানে:

প্রথমত, এখানে MySQL 5.1.51 এর জন্য 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)

এই এসকিউএল আদেশগুলি কেবল কার্যকর করুন:

INSERT INTO mysql.user SET
Host='%',User='superdba',Password=PASSWORD('ClarkKent'),
Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',
Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',
Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',
Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',
Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',
Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',
Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',
Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y';
FLUSH PRIVILEGES;

যে INSERT একটি আইনী এসকিউএল বিবৃতি যা বাইনারি লগ অবতরণ করতে পারে। আপনি কি চান যে কেউ এটি চালাবেন এবং নেটওয়ার্কের সাথে একটি দৃশ্যমান পাসওয়ার্ড ভ্রমণ করুন? মাস্টার বাইনারি লগ বসতে? রিলে লগে বসে দাস?

এই নির্দেশনা থাকার

binlog-ignore-db=mysql       

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

SET SQL_LOG_BIN=0;
GRANT ...

গ্রান্টদের মাস্টার থেকে দাসের পথে যেতে বাধা দেয়।


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

অনুদানগুলি কোনও রাস্তাঘাট ছাড়াই প্রয়োগ করা হয়। এজন্য আপনাকে অবশ্যই এসইটিকিউএল_এলজি_বিআইএন = 0 চালাতে হবে; কোনও GRANT কমান্ডগুলিকে বাইনারি লগগুলিতে প্রবেশ করা থেকে বিরত রাখতে mysql সেশনে।
RolandoMySQLDBA

অনুগ্রহকারীরা মাস্টার এবং স্লেভের কোনও রোড ব্লক ছাড়াই আবেদন করে। এজন্য আপনাকে অবশ্যই এসইটিকিউএল_এলজি_বিআইএন = 0 চালাতে হবে; কোনও GRANT কমান্ডগুলিকে বাইনারি লগগুলিতে প্রবেশ করা এবং দাসের রিলে লগগুলিতে প্রবেশ করা থেকে বিরত রাখতে mysql সেশনে।
RolandoMySQLDBA

1
ঠিক আছে. অন্যের কাছে পরিষ্কার হওয়ার জন্য, আমি বিশ্বাস করি যে আপনি আমাকে গ্রান্টস ট্রানজিটে পাসওয়ার্ড উন্মুক্ত করার বিষয়ে সতর্ক করে দিচ্ছেন (যা স্কট দ্বারা এসএসএলের পরামর্শের সাথে সম্বোধন করা যেতে পারে) এবং বিনলগে ক্লিয়ারটেক্সট সংরক্ষণ করা হবে। আপনি পরামর্শ দিচ্ছেন যে এগুলি যদি আমার জন্য উদ্বেগজনক হয় তবে আমার কাছে বিনলগ-উপেক্ষা-ডিবি = মাইএসকিএল এবং এসইটি এসকিউএল_এলজি_বিএন = 0; উভয়ই ব্যবহার করা উচিত। তবে আমি যদি এই শর্তগুলির সাথে ঠিক আছি তবে বিনলোগ-উপেক্ষা-ডিবি লাইনটি সরিয়ে গ্রান্টগুলি প্রতিলিপি করার ক্ষেত্রে কোনও বিশেষ সমস্যা নেই। যদি এটি একটি সঠিক সংক্ষিপ্তসার হয় তবে আমাকে সংশোধন করুন।
dlo

@ ডিএলও - সত্যিকারের !!!
রোল্যান্ডোমাইএসকিউএলডিবিএ

4

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

আপনি যদি মাঝের ব্যবধানে অতিরিক্ত মাত্রায় মানুষের সাথে উদ্বিগ্ন হন তবে সবসময় এসএসএল জুড়ে প্রতিলিপি পাঠানোর বিকল্প থাকে ।

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