কিছু সময় আগে আমি ইউজার 1 নামের একটি পোস্টগ্র্যাসকিউএল ব্যবহারকারী তৈরি করেছি (পোস্টগ্র্যাসকিউএল 9.4.9)।
আমি এই ব্যবহারকারীকে বাদ দিতে চাই। সুতরাং আমি প্রথমে টেবিল, ক্রম, ফাংশন, ডিফল্ট সুবিধাগুলি এবং মালিকানার সমস্ত অনুমতি বাতিল করে দিই:
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;
REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;
REASSIGN OWNED BY user1 TO postgres;
তবে মনে হয় যে একটি ব্যবহারকারীর সাথে 2 টি ডাটাবেসে এই ব্যবহারকারীর সাথে সংযুক্ত রয়েছে:
postgres=# DROP ROLE user1;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: 1 object in database db1
1 object in database db2
এমনকি এটি একটি ফাংশন বলে মনে হচ্ছে:
postgres=# \c db1
You are now connected to database "db1" as user "postgres".
db1=# DROP ROLE user1;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: privileges for function text(boolean)
1 object in database db2
তবে কোনটি অবজেক্টের মালিকানাধীন বা ব্যবহারকারীর সাথে সম্পর্কিত তা আমি নির্ধারণ করতে পারি না।
আমি যদি pg_dump -s db1 | grep user1
কোন ফল পাই! এটি একটি বিশ্বব্যাপী বস্তু হতে পারে?
আমি কীভাবে অনুপস্থিত বস্তুটি সনাক্ত করতে পারি?
আমি প্রতিটি ডাটাবেসে কমান্ডগুলি কার্যকর করেছি (db1 এবং db2)। আমি মালিকানাধীন অবজেক্টগুলিকে ফেলে দিতে চাই না user1
, কেবল এই ব্যবহারকারীর জন্য অনুদান পুনরায় নিয়োগ বা মুছে ফেলতে চাই।