จะเปลี่ยนเจ้าของฐานข้อมูล PostgreSql ได้อย่างไร


205

ฉันต้องการเปลี่ยนเจ้าของฐานข้อมูล PostgreSql

จะเปลี่ยนเจ้าของฐานข้อมูล PostgreSql ใน phppgadmin ได้อย่างไร?

คำตอบ:


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 ไม่ลบฐานข้อมูล
Frank Heikens

17
@ mArtinko5MB: เป็นไปไม่ได้เช่นกัน ALTER TABLE ไม่ลดตาราง แสดง SQL ของคุณให้เราเห็นบางสิ่งที่ไม่ดีในงบของคุณ
Frank Heikens

18
หมายเหตุตารางและลำดับทั้งหมดภายในฐานข้อมูลจะยังคงถูกกำหนดให้กับเจ้าของดั้งเดิม
Cerin

2
ERROR: must be member of role ...= ไม่ทำงานกับ RDS
StartupGuy

49

คำตอบของ Frank Heikens จะอัปเดตความเป็นเจ้าของฐานข้อมูลเท่านั้น บ่อยครั้งที่คุณต้องการอัปเดตการเป็นเจ้าของวัตถุที่มีอยู่ (รวมถึงตาราง) เริ่มต้นด้วย Postgres 8.2, REASSIGN OWNEDจะพร้อมใช้งานเพื่อให้งานนี้ง่ายขึ้น

แก้ไขที่สำคัญ!

อย่าใช้REASSIGN OWNEDเมื่อบทบาทดั้งเดิมเป็นpostgresเช่นนี้อาจสร้างความเสียหายให้อินสแตนซ์ฐานข้อมูลทั้งหมดของคุณ คำสั่งจะอัปเดตวัตถุทั้งหมดด้วยเจ้าของใหม่รวมถึงทรัพยากรของระบบ (postgres0, postgres1 ฯลฯ )


ก่อนอื่นให้เชื่อมต่อกับฐานข้อมูลผู้ดูแลระบบและอัปเดตความเป็นเจ้าของฐานข้อมูล:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

นี่เป็นALTER DATABASEคำสั่งเทียบเท่าทั่วโลกที่ให้ไว้ในคำตอบของ Frank แต่แทนที่จะอัพเดต DB เฉพาะมันเปลี่ยนการเป็นเจ้าของ DBs ทั้งหมดที่เป็นของ 'old_name'

ขั้นตอนต่อไปคือการอัพเดทความเป็นเจ้าของตารางสำหรับแต่ละฐานข้อมูล:

psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;

ต้องดำเนินการกับฐานข้อมูลแต่ละรายการที่เป็นเจ้าของโดย 'old_name' คำสั่งจะอัปเดตความเป็นเจ้าของของตารางทั้งหมดในฐานข้อมูล


7
ดี! ... เว้นเสียแต่ว่าเจ้าของจะเป็นpostgresตัวของตัวเอง ... เรียนรู้วิธีที่ยากลำบาก
Chris

1
ปัญหาคือมันไม่ได้เปลี่ยนเจ้าของฐานข้อมูลเดียว แต่จะแทนที่เจ้าของทุกแห่งด้วยฐานข้อมูลใหม่
Michael003

REASSIGN OWNED ที่เป็นเจ้าของข้างต้นกำลังจะเปลี่ยนฐานข้อมูลทั้งหมด (หากมีหลายฐานข้อมูล) ในอินสแตนซ์เดียวกันกับบทบาทใหม่
varun7447

สำหรับทางเลือกไปยังREASSIGN OWNED(ปกติเพราะเจ้าของของคุณpostgres) ดูตัวอย่างในstackoverflow.com/a/2686185/1839209
Michael Herrmann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.