जवाबों:
ALTER DATABASE name OWNER TO new_owner;
देखें इस पर Postgresql मैनुअल के प्रवेश अधिक जानकारी के लिए।
ERROR: must be member of role ...
= आरडीएस के साथ काम नहीं करता है
फ्रैंक हाइकेंस का जवाब केवल डेटाबेस के स्वामित्व को अद्यतन करेगा। अक्सर, आप निहित वस्तुओं (तालिकाओं सहित) के स्वामित्व को भी अपडेट करना चाहते हैं। Postgres 8.2 के साथ शुरू, REASSIGN OWNED इस कार्य को सरल बनाने के लिए उपलब्ध है।
महत्वपूर्ण संपादित करें!
REASSIGN OWNED
मूल भूमिका होने पर कभी भी उपयोग न करें postgres
, यह आपके संपूर्ण DB उदाहरण को नुकसान पहुंचा सकता है। आदेश एक नए मालिक के साथ सभी वस्तुओं को अपडेट करेगा, जिसमें सिस्टम संसाधन (पोस्टग्रैस 0, पोस्टग्रेज 1, आदि) शामिल हैं।
सबसे पहले, व्यवस्थापक डेटाबेस से कनेक्ट करें और DB स्वामित्व को अपडेट करें:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
यह एक वैश्विक समकक्ष है ALTER DATABASE
फ्रैंक के जवाब में प्रदान की गई , लेकिन किसी विशेष DB को अपडेट करने के बजाय, यह 'old_name' के स्वामित्व वाले सभी DB के स्वामित्व को बदल देता है।
अगला चरण प्रत्येक डेटाबेस के लिए तालिकाओं के स्वामित्व को अद्यतन करना है:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
यह 'old_name' के स्वामित्व वाले प्रत्येक DB पर किया जाना चाहिए। आदेश DB में सभी तालिकाओं के स्वामित्व को अद्यतन करेगा।
postgres
, खुद को ... यह सीखा कि कठिन तरीका है।
REASSIGN OWNED
(आमतौर पर क्योंकि आपका स्वामी है postgres
) के विकल्प के लिए , stackoverflow.com/a/2686185/183959 पर स्निपेट देखें ।