PostgreSql 데이터베이스의 소유자를 변경하는 방법은 무엇입니까?


205

PostgreSql 데이터베이스의 소유자를 변경해야합니다.

phppgadmin에서 PostgreSql 데이터베이스의 소유자를 변경하는 방법은 무엇입니까?

답변:


345
ALTER DATABASE name OWNER TO new_owner;

자세한 내용 은 Postgresql 매뉴얼 항목 을 참조하십시오.


3
완성을 위해 여기에 다음이 문서화되어있는 매뉴얼의 일부가 있습니다 : postgresql.org/docs/current/static/sql-alterdatabase.html
a_horse_with_no_name 12

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인 경우 사용하지 마십시오 . 이렇게하면 전체 DB 인스턴스가 손상 될 수 있습니다. 이 명령은 시스템 자원 (postgres0, postgres1 등)을 포함하여 새 소유자로 모든 오브젝트를 업데이트합니다.


먼저 관리자 데이터베이스에 연결하고 DB 소유권을 업데이트하십시오.

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

이것은 ALTER DATABASEFrank의 답변에서 제공되는 명령 과 동일한 명령이지만 특정 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, 그 자신 ... 어려운 방법을 배웠습니다.
Chris

1
문제는 단일 데이터베이스의 소유자를 변경하지 않지만 모든 위치에서 새 데이터베이스로 소유자를 대체한다는 것입니다.
Michael003

위의 REASSIGN OWNED는 동일한 인스턴스의 모든 데이터베이스 (여러 데이터베이스가있는 경우)를 새 역할로 변경합니다.
varun7447

REASSIGN OWNED(보통 소유자이기 때문에)에 대한 대안 postgresstackoverflow.com/a/2686185/1839209 의 스 니펫을 참조하십시오 .
Michael Herrmann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.