আপনার কাছে কমপক্ষে দুটি বিকল্প রয়েছে।
প্রথমটি একটি ছোট ক্যোয়ারী এবং একটি পাঠ্য সম্পাদক ব্যবহার করে। আমাদের আগ্রহের স্কিমটা সংগ্রহ করতে হবে:
SELECT nspname
FROM pg_namespace;
আপনি WHERE
যদি সুযোগটি সীমাবদ্ধ করতে চান তবে আপনি একটি ধারা যুক্ত করতে পারেন। আউটপুটটি অনুলিপি করুন এবং এটি সংশোধন করুন, যাতে আপনি বেশ কয়েকটি GRANT USAGE ON SCHEMA ... TO your_role;
কমান্ড পান। তারপরে এটি এটিকে খাওয়ান psql
, উদাহরণস্বরূপ:
psql -f multigrant.sql
এর স্বাভাবিক রূপটি শেল স্ক্রিপ্ট হতে পারে যা সংগ্রহকৃত নাম এবং কলগুলির উপর লুপ করে psql
, বিল্ডিং GRANT
স্টেটমেন্টটি -c
বিকল্পটিতে পাস করে ।
অন্য সমাধানটি একটি গতিশীল ক্যোয়ারী তৈরি করে একটি প্লা / পিএসএসকিএল ব্লকে মূলত একই কাজ করে। মূলটি একই - আমাদের স্কিমটা সংগ্রহ করতে হবে। তারপরে আমরা স্কিমার মাধ্যমে অনুমতিগুলি মঞ্জুরি দিয়ে তাদের সকলের উপর লুপ করব:
DO $do$
DECLARE
sch text;
BEGIN
FOR sch IN SELECT nspname FROM pg_namespace
LOOP
EXECUTE format($$ GRANT USAGE ON SCHEMA %I TO your_role $$, sch);
END LOOP;
END;
$do$;
দ্রষ্টব্য :
- সারণী, সিকোয়েন্স, ফাংশন এবং প্রকারের থেকে আলাদা, কেউ স্কিমেটার (9.4 হিসাবে) জন্য ডিফল্ট সুবিধাগুলি সেট করতে পারে না । আপনাকে নতুনভাবে যুক্ত হওয়া যেকোন স্কিমার জন্য ম্যানুয়ালি এই অধিকারটি দিতে হবে।
- ডায়নামিক ক্যোয়ারী তৈরি করার সময় আমি ডলার উদ্ধৃতি ব্যবহার করছি । উদাহরণস্বরূপ (এই উদাহরণটিতে উপস্থিত নেই) একক উদ্ধৃতিগুলি গুণনের বিপরীতে এটি আমাকে 'স্বাভাবিক' বাক্য গঠন ব্যবহার করতে দেয়। এইভাবে বেশিরভাগ সম্পাদক বিবৃতি সুন্দরভাবে তুলে ধরবেন।
- আমিও ব্যবহার
format()
সঙ্গে %I
বিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা বস্তুর নাম সঠিকভাবে প্রয়োজনে উদ্ধৃত আছে। স্ট্রিং ধ্রুবক এবং কিছু quote_ident()
কলকে কনটেনটেশন দিয়ে ক্যোরি তৈরির চেয়ে এই পদ্ধতিরটি আরও বেশি পঠনযোগ্য ।
pg_namespace
pg_catalog
স্কিমা পাওয়া যাবে । সেখানে থাকা অন্য অবজেক্টগুলি দেখুন - তারা আপনার স্কিমা, টেবিল ইত্যাদির প্রতিটি দিক সঞ্চয় করে।
grant usage
নতুন স্কিমার জন্য স্বয়ংক্রিয়ভাবে চালিত ইভেন্ট ইভেন্ট ট্রিগার ব্যবহার করে নতুন তৈরি স্কিমার জন্য ডিফল্ট সুবিধাগুলি অনুকরণ করতে পারেন কিনা ।