कभी-कभी पहले मैं एक PostgreSQL उपयोगकर्ता नाम बनाया user1 (PostgreSQL 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
लेकिन मैं यह निर्धारित नहीं कर सकता कि कौन सी वस्तु का स्वामित्व है या उपयोगकर्ता 1 से संबंधित है।
अगर मुझे pg_dump -s db1 | grep user1
कोई परिणाम नहीं मिलता है! क्या यह एक वैश्विक वस्तु हो सकती है?
मैं लापता वस्तु की पहचान कैसे कर सकता हूं?
मैंने प्रत्येक डेटाबेस में कमांड निष्पादित किया है (db1 और db2)। मैं अपने स्वामित्व वाली वस्तुओं को नहीं छोड़ना चाहता user1
, बस इस उपयोगकर्ता के लिए अनुदान देना या हटाना चाहता हूं।