postgresql: Bir küme için rolleri nasıl bırakıp geri yüklerim?


27

Roller kümede nerede saklanır ve bunları nasıl bırakırım?

Bir db pg_dump yaptım ve sonra farklı bir kümeye yükledim, ancak bu hataların çoğunu alıyorum:

psql:mydump.sql:3621: ERROR:  role "myrole" does not exist 

Yani görünüşe göre benim db dökümü rolleri içermez. 'Postgres' db'sini atmaya çalıştım, ama oradaki rolleri de göremiyorum.

Kullanmam gerekir pg_dumpall --roles-onlymi?

Postgresql sürüm 8.4.8 ve 9.1.4 İşletim Sistemi: Ubuntu 11.04 Natty

Yanıtlar:


37

Gönderen CREATE ROLEbelgeler :

Rollerin veritabanı kümesi düzeyinde tanımlandığını ve kümedeki tüm veritabanlarında geçerli olduğunu unutmayın.

pg_dumpTek bir veritabanını döktüğünden beri , bu yardımcı programla roller çıkaramazsınız. Önerdiğiniz pg_dumpall --roles-onlykomut işi yapacak - ancak yeni kümede yalnızca istenen rollerin yaratılması için çıktısını filtrelemeniz gerekebilir.

Roller pg_authid, fiziksel data/global/olarak bir PostgreSQL kurulumunun alt klasöründe depolanan katalogda ve diğer küme genelinde tablolarla birlikte depolanır . Sen içeriğini sorgulayabilir pg_authidyoluyla pg_rolesgörünümüne.

NOT : Rolleri bırakmak için süper kullanıcı haklarına ihtiyacınız olacaktır. Aksi takdirde, üzerinde izin verilmedi alırdım SELECTüzerinde pg_authid- ve bir süper verir dahi SELECThaklarını, aynı hatayı iyi olur. Ancak bu durumda, rolleri pg_authiddoğrudan sorgulayarak , COPYbir dosyaya yazdırabilir ve gerekli CREATE ROLEve ALTER ROLEifadeleri oluşturmak için bir miktar sihir atabilirsiniz .


Tüm rollerin nasıl geri yükleneceğini ekleyebilir misiniz (yani filtrelemeye gerek yoktur)?
Ethan Furman,

1
Tüm rolleri geri yüklemek için, çıktısını kopyalayıp pg_dumpall --roles-onlyistenen psql kabuğuna yapıştırmanız yeterlidir. Veya spesifik CREATE ROLEve ALTER ROLEçizgiler
Fernando Fabreti 7:18
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.