Yanıtlar:
ALTER DATABASE name OWNER TO new_owner;
Daha fazla ayrıntı için Postgresql kılavuzunun bu konudaki girişine bakın.
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.
postgres, kendisi ... Zor yoldan öğrendim.
REASSIGN OWNED(genellikle sahibiniz olduğu için postgres) stackoverflow.com/a/2686185/1839209 adresindeki snippet'lere bakın .