स्वीकृत उत्तर मेरे लिए त्रुटियों के परिणामस्वरूप हुआ जब REASSIGN OWNED BY या DROP OWNED BY का प्रयास किया गया। निम्नलिखित ने मेरे लिए काम किया:
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM username;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM username;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM username;
DROP USER username;
उपयोगकर्ता के पास अन्य स्कीमा में विशेषाधिकार हो सकते हैं, जिस स्थिति में आपको सही स्कीमा द्वारा प्रतिस्थापित "पब्लिक" के साथ उपयुक्त REVOKE लाइन को चलाना होगा। उपयोगकर्ता के लिए सभी स्कीमा और विशेषाधिकार प्रकार दिखाने के लिए, मैंने इस क्वेरी को बनाने के लिए \ dp कमांड को संपादित किया:
SELECT
n.nspname as "Schema",
CASE c.relkind
WHEN 'r' THEN 'table'
WHEN 'v' THEN 'view'
WHEN 'm' THEN 'materialized view'
WHEN 'S' THEN 'sequence'
WHEN 'f' THEN 'foreign table'
END as "Type"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.array_to_string(c.relacl, E'\n') LIKE '%username%';
मुझे यकीन नहीं है कि किस प्रकार के विशेषाधिकार टैब, अनुक्रम, या फ़ंक्शंस पर घूमने के अनुरूप हैं, लेकिन मुझे लगता है कि वे सभी तीन में से एक के तहत आते हैं।
CREATE TABLE foo(bar SERIAL); ALTER TABLE foo OWNER TO postgres; CREATE USER testuser; GRANT ALL ON foo TO testuser; DROP USER testuser
त्रुटि संदेश दियाERROR: role "testuser" cannot be dropped because some objects depend on it DETAIL: access to table foo
:। हालांकि,DROP OWNED BY testuser
चाल चली, जाहिरा तौर पर Postgres अनुदानों को छोड़ने योग्य वस्तु मानता है।