PostgreSql डेटाबेस के मालिक को कैसे बदलें?


205

मुझे PostgreSql डेटाबेस के मालिक को बदलने की आवश्यकता है।

Phggadmin में PostgreSql डेटाबेस के स्वामी को कैसे बदलें?

जवाबों:


345
ALTER DATABASE name OWNER TO new_owner;

देखें इस पर Postgresql मैनुअल के प्रवेश अधिक जानकारी के लिए।


3
पूर्णता के लिए यहां मैनुअल का एक भाग है जो इस दस्तावेज़ को पोस्ट करता है: postgresql.org/docs/current/static/sql-alterdatabase.html
a_horse_with_no_name

17
@ mArtinko5MB: यह असंभव है, ALTER एक डेटाबेस को ड्रॉप नहीं करता है।
फ्रैंक हाइकेंस

17
@ mArtinko5MB: इसके अलावा, असंभव भी तालिका से बाहर नहीं जाता है। हमें अपनी एसक्यूएल दिखाएं, आपके बयानों में कुछ बुरी तरह से टूट गया है।
फ्रैंक हाइकेन्स

18
ध्यान दें, डेटाबेस के अंदर सभी तालिकाओं और अनुक्रमों को अभी भी मूल मालिक को सौंपा जाएगा।
सेरिन


49

फ्रैंक हाइकेंस का जवाब केवल डेटाबेस के स्वामित्व को अद्यतन करेगा। अक्सर, आप निहित वस्तुओं (तालिकाओं सहित) के स्वामित्व को भी अपडेट करना चाहते हैं। 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 में सभी तालिकाओं के स्वामित्व को अद्यतन करेगा।


7
अच्छा! ... जब तक मालिक नहीं है postgres, खुद को ... यह सीखा कि कठिन तरीका है।
क्रिस

1
समस्या यह है कि यह एकल डेटाबेस के मालिक को नहीं बदलता है, लेकिन यह मालिक को हर जगह नए द्वारा बदल देता है।
माइकल 003

उपरोक्त REASSIGN OWNED सभी डेटाबेस (यदि कई डेटाबेस हैं) को एक ही उदाहरण में नई भूमिका में बदलने जा रहा है।
वरुण 7४४ var

REASSIGN OWNED(आमतौर पर क्योंकि आपका स्वामी है postgres) के विकल्प के लिए , stackoverflow.com/a/2686185/183959 पर स्निपेट देखें ।
माइकल हेरमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.