মাইএসকিউএল: কেবল পঠনযোগ্য বিকল্পগুলি অনুদান দেবে?


102

আমার একটি ব্যবহারকারী আছে, আমি একটি ডিবি স্কিমাতে সমস্ত READ অনুমতি দিতে চাই।

একটি উপায় হ'ল:

GRANT SELECT, SHOW_VIEW  ON test.* TO 'readuser'@'%';

অনুদানের মধ্যে সমস্ত পাঠ্য অপারেশনগুলিকে গ্রুপ করার কোনও উপায় আছে কি?


বিশেষাধিকারটি হ'ল SHOW VIEWনা SHOW_VIEW, তবে আপনি যদি না চান তবে আপনি এটির কোনও ব্যবহারকারীকে এটিকে মঞ্জুরি দেওয়ার দরকার নেই SHOW CREATE VIEW... তারা একমাত্র SELECTঅধিকার দিয়ে দর্শনগুলি থেকে নির্বাচন করতে পারেন । "গ্রুপে সব পড়ার কাজগুলি অনুদানের" দ্বারা আপনি কী বোঝাতে চান?
মাইকেল - স্কেলবট

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

উত্তর:


165

যদি কোনও একক সুযোগ থাকে যা ডাটাবেসে সমস্ত রিড অপারেশনগুলির জন্য দাঁড়িয়ে থাকে।

এটি কীভাবে আপনি "সমস্ত পড়ুন" সংজ্ঞায়িত করেন তার উপর নির্ভর করে।

সারণী এবং দর্শনগুলি থেকে "পড়া" SELECTসুবিধাজনক। যদি আপনি "সমস্ত পড়া" বলতে বোঝায় তবে হ্যাঁ:

GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';

যাইহোক, মনে হচ্ছে আপনার বোঝার ক্ষমতা "সবকিছু" দেখার "স্পর্শ নয় তবে" করার ক্ষমতা। সুতরাং, এখানে অন্যান্য ধরণের পাঠ মনে আসে:

ভিউ সংজ্ঞা "পড়া" SHOW VIEWসুবিধা হয়।

অন্যান্য ব্যবহারকারীদের দ্বারা বর্তমানে সম্পাদন করা প্রশ্নেরগুলির তালিকা "পড়া" PROCESSসুবিধাটি।

বর্তমানের প্রতিলিপি রাষ্ট্র "পড়া" REPLICATION CLIENTসুবিধাটি।

নোট করুন যে এগুলির যে কোনও বা সমস্ত আপনি প্রশ্নের মধ্যে থাকা প্রকৃতির উপর নির্ভর করে আপনার প্রকাশের অভিপ্রায় চেয়ে বেশি তথ্য প্রকাশ করতে পারে।

যদি আপনি যে পড়াটি করতে চান এটি যদি হয় তবে আপনি সেগুলির (বা উপলভ্য সুবিধাগুলির কোনও কোনও ) একক GRANTবিবৃতিতে সংযুক্ত করতে পারেন।

GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...

যাইহোক, এমন কোনও একক সুযোগ নেই যা অন্যান্য সুযোগ-সুবিধার কিছু উপসেটকে মঞ্জুর করে, যা আপনার কাছে জিজ্ঞাসা করছে এমনটি মনে হচ্ছে।

আপনি যদি ম্যানুয়ালি জিনিসগুলি করছেন এবং ব্যবহারকারীর নির্দিষ্ট শ্রেণীর জন্য সাধারণত যে অনুদানের জন্য সাধারণত অনুদানের প্রয়োজন তা মনে না করেই আপনি এটির সহজতর উপায় সন্ধান করছেন, আপনি তুলনীয় ব্যবহারকারীর অনুদানকে নতুন করে জেনারেট করার জন্য বিবৃতিটি সন্ধান করতে পারেন এবং এটিকে পরিবর্তন করতে পারেন অনুরূপ সুবিধাসহ নতুন ব্যবহারকারী তৈরি করতে:

mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost                                                                                                      |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

পাসওয়ার্ড সহ যে নতুন ব্যবহারকারীকে আপনি যুক্ত করতে চান তার সাথে মেলে 'not_leet' এবং 'লোকালহোস্ট' পরিবর্তন করার ফলে GRANTএকটি নতুন ব্যবহারকারী তৈরি করতে পুনরায় ব্যবহারযোগ্য স্টেটমেন্ট তৈরি হবে।

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

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


4
ধন্যবাদ দুর্দান্ত উত্তর ছাড়াও আমি আপনার পাসওয়ার্ডটি পছন্দ করেছি। :)
অজিত গঙ্গা

4
লক্ষণীয়: প্রসেস এবং রেপ্লিকেশন ক্লায়েন্ট হ'ল "গ্লোবাল" সুবিধার ধরণের, সুতরাং একটি "প্রতি ডাটাবেস" বর্জনের সাথে সংজ্ঞায়িত করলে বাক্য গঠনটি ব্যর্থ হয়। মাইডবিতে অনুদান প্রক্রিয়া। * অবৈধ হবে তবে * অনুদানের প্রক্রিয়াটি *। * ঠিক থাকবে would
মৌমাছি কে

ডিবি_নামে অনুদান নির্বাচন করুন GR ​​অনুদানের বিকল্পের সাথে 'ডেমো' @ '%' করতে;
মুসা

17
GRANT SELECT ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';

এটি SELECTভিউস সহ সমস্ত ডাটাবেসের সুবিধার অধিকারী একটি ব্যবহারকারী তৈরি করবে ।


12

আপনি কোনও ব্যবহারকারীকে মঞ্জুর করতে পারেন এমন বিভিন্ন অনুমতি

ALL PRIVILEGES- This would allow a MySQL user all access to a designated database (or if no database is selected, across the system)
CREATE- allows them to create new tables or databases
DROP- allows them to them to delete tables or databases
DELETE- allows them to delete rows from tables
INSERT- allows them to insert rows into tables
SELECT- allows them to use the Select command to read through databases
UPDATE- allow them to update table rows
GRANT OPTION- allows them to grant or remove other users' privileges

অনুমতি সহ একটি নির্দিষ্ট ব্যবহারকারী সরবরাহ করতে, আপনি এই কাঠামোটি ব্যবহার করতে পারেন:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;

আমি এই নিবন্ধটি খুব সহায়ক বলে মনে করেছি


3

আমি এখানে একটি ধাপে ধাপে গাইড পেয়েছি ।

মাইএসকিউএলের জন্য কেবল পঠনযোগ্য ডাটাবেস ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে

ইউএনআইএক্স প্রম্পটে মাইএসকিউএল কমান্ড-লাইন প্রোগ্রামটি চালান, এবং নিম্নলিখিত আদেশটি লিখে প্রশাসক হিসাবে লগ ইন করুন:

mysql -u root -p

রুট অ্যাকাউন্টের জন্য পাসওয়ার্ড টাইপ করুন। মাইএসকিএল প্রম্পটে, নিম্নলিখিত ধাপগুলির একটি করুন:

কোনও হোস্ট থেকে ব্যবহারকারীকে ডাটাবেসে অ্যাক্সেস দিতে, নিম্নলিখিত কমান্ডটি টাইপ করুন:

grant select on database_name.* to 'read-only_user_name'@'%' identified by 'password';

যদি সংগ্রাহক ডাটাবেসের মতো একই হোস্টে ইনস্টল করা হয় তবে নিম্নলিখিত কমান্ডটি টাইপ করুন:

grant select on database_name.* to 'read-only_user_name' identified by 'password';

এই কমান্ডটি কেবল স্থানীয় স্থানীয় হোস্ট থেকে ব্যবহারকারীকে কেবলমাত্র ডাটাবেসে পঠনযোগ্য অ্যাক্সেস দেয়। সংগ্রাহক ইনস্টল করা হবে এমন হোস্টের হোস্টের নাম বা আইপি ঠিকানাটি যদি আপনি জানেন তবে নিম্নলিখিত কমান্ডটি টাইপ করুন:

grant select on database_name.* to 'read-only_user_name'@'host_name or IP_address' identified by 'password';

হোস্টের নাম অবশ্যই ডিএনএস বা স্থানীয় হোস্ট ফাইলের মাধ্যমে সমাধানযোগ্য able মাইএসকিএল প্রম্পটে, নিম্নলিখিত কমান্ডটি টাইপ করুন:

flush privileges;

প্রকার quit

নীচে কমান্ড এবং নিশ্চিতকরণ বার্তাগুলির উদাহরণ রয়েছে:

mysql> grant select on dbname.* to 'readonlyuser'@'%' identified 
by 'pogo$23';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit

3

এমনকি ব্যবহারকারী উত্তর পেয়েছে এবং @ মিশেল - স্ক্লবট বেশিরভাগ পয়েন্ট তার পোস্টে খুব ভালভাবে কভার করেছে তবে একটি পয়েন্ট অনুপস্থিত, তাই কেবল এটি আবরণ করার চেষ্টা করা হচ্ছে।

আপনি যদি কোনও সাধারণ ব্যবহারকারীর পড়ার অনুমতি সরবরাহ করতে চান (অ্যাডমিন ধরণের নয়) -

GRANT SELECT, EXECUTE ON DB_NAME.* TO 'user'@'localhost' IDENTIFIED BY 'PASSWORD';

দ্রষ্টব্য: এখানে এক্সিকিউইটি প্রয়োজনীয়, যাতে কোনও স্টোরড পদ্ধতি রয়েছে যা একটি রিপোর্ট তৈরি করে (যদি কয়েকটি নির্বাচিত বিবৃতি থাকে) তবে ব্যবহারকারী তথ্য পড়তে পারবেন।

লোকালহোস্টকে নির্দিষ্ট আইপি দিয়ে প্রতিস্থাপন করুন যা থেকে ব্যবহারকারী ডিবিতে সংযুক্ত হবে।

অতিরিক্ত পড়ার অনুমতিগুলি হ'ল-

  • দেখান ভিউ: আপনি যদি স্কিমা দেখাতে চান।
  • রেপ্লিকেশন ক্লায়েন্ট: ব্যবহারকারীর যদি প্রতিলিপি / গোলামের স্থিতি পরীক্ষা করতে হয়। তবে সব ডিবিতে অনুমতি দেওয়া দরকার।
  • প্রক্রিয়া: যদি ব্যবহারকারীর চলমান প্রক্রিয়াটি পরীক্ষা করা প্রয়োজন। সমস্ত ডিবি দিয়েই কাজ করবে।

1

মাইএসকিউএল 8 এর জন্য নোট এটি আলাদা

আপনার এটি দুটি ধাপে করা দরকার:

CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
flush privileges;

এটি আমার জন্য কাজ করা একমাত্র সমাধান। মনে হচ্ছে অন্যান্য সমাধানগুলি পুরানো হয়ে গেছে যেমন আপনি বলেছিলেন। এই আপডেট সমাধান সরবরাহ করার জন্য আপনাকে ধন্যবাদ।
কাইল ব্রিজেনস্টাইন

0

আপনি যদি কেবল পঠনের অনুমতি দেওয়ার পরে দর্শনটি পড়তে চান তবে আপনি ডিডিএল সংজ্ঞা দেখতে আপনারতে ALGORITHM = TEMPTABLE ব্যবহার করতে পারেন।

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