PostgreSql veritabanının sahibi nasıl değiştirilir?


207

PostgreSql veritabanı sahibini değiştirmem gerekiyor.

Phppgadmin PostgreSql veritabanı sahibi nasıl değiştirilir?

Yanıtlar:


350
ALTER DATABASE name OWNER TO new_owner;

Daha fazla ayrıntı için Postgresql kılavuzunun bu konudaki girişine bakın.



17
@ mArtinko5MB: Bu imkansız, ALTER veritabanı bırakmıyor.
Frank Heikens

17
@ mArtinko5MB: Ayrıca imkansız, ALTER TABLE masayı DROP yapmıyor. Bize SQL'inizi gösterin, ifadelerinizde bir şey bozuk.
Frank Heikens

18
Not: Veritabanındaki tüm tablolar ve sıralamalar yine de orijinal sahibine atanacaktır.
Cerin

2
ERROR: must be member of role ...= RDS ile
ÇALIŞMAZ

49

Frank Heikens yanıtı sadece veritabanı sahipliğini güncelleyecek. Genellikle, içerilen nesnelerin sahipliğini de güncellemek istersiniz (tablolar dahil). Postgres 8.2'den başlayarak, bu görevi basitleştirmek için REASSIGN OWNED kullanılabilir.

ÖNEMLİ DÜZENLEME!

Asla REASSIGN OWNEDorijinal rol varken kullanmayın postgres, bu tüm DB yönetim ortamınıza zarar verebilir. Komut, sistem kaynakları (postgres0, postgres1 vb.) Dahil olmak üzere tüm nesneleri yeni bir sahiple güncelleyecektir.


İlk olarak, yönetici veritabanına bağlanın ve DB sahipliğini güncelleyin:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

Bu, ALTER DATABASEFrank'in cevabında verilen global bir komut eşdeğeridir , ancak belirli bir DB'yi güncellemek yerine, 'old_name' e ait tüm DB'lerin sahipliğini değiştirir.

Bir sonraki adım, her veritabanı için tablo sahipliğini güncellemektir:

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

Bu, 'old_name' a ait her bir DB'de gerçekleştirilmelidir. Komut, DB'deki tüm tabloların sahipliğini güncelleştirir.


7
Güzel! ... sahibi olmadığı sürece postgres, kendisi ... Zor yoldan öğrendim.
Chris

1
Sorun, tek bir veritabanının sahibini değiştirmemesi, ancak sahibini her yerde yenisiyle değiştirmesidir.
Michael003

Yukarıdaki REASSIGN OWNED, aynı örnekte tüm veritabanını (birden çok veritabanı varsa) yeni role değiştirecektir.
varun7447

Alternatifine REASSIGN OWNED(genellikle sahibiniz olduğu için postgres) stackoverflow.com/a/2686185/1839209 adresindeki snippet'lere bakın .
Michael Herrmann
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.