• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Postgres: Problem beim Ändern des DB-Besitzers

coogor

Hacker
Moinsen,

ich habe ein Problem mit einer Datenbank, die den Besitzer wechseln soll. Offensichtlich sitzen nach dem Besitzerwechsel immer noch einige Objekte auf dem Alteigentümer. Aber der Reihe nach. Alt-und Neueigentümer sind als Rolle bereits zugelassen.
Anlegen einer DB mit dem Owner gnuhealth:
createdb gnuhealth2 --encoding=UTF8 --owner=gnuhealth
Einspielen des Original-Backup:
psql gnuhealth28 < backup.sql
Funktioniert!
DB Umhängen und Rechte zuweisen:
psql -C "ALTER DATABASE gnuhealth28 OWNER TO tryton;"
psql -c "GRANT gnuhealth TO tryton;"


Fettich. Die DB läßt sich auf dieser Maschine nun von Prozessen, die unter 'tryton' laufen, ansprechen.
Nun ziehe ich ein Backup:
pg_dump -C gnuhealth28 > new_backup.sql

Spiele ich dieses backup auf einer anderen Maschine ein, welches nur die DB-Rolle 'tryton' hat, gibt es diverse Fehlermeldungen bei Objekten, die wohl noch dem Alteigentümer gehören.

Wie kann man die Datenbankobjekte komplett auf den neuen User umhängen?
 

marce

Guru
AFAIK musst Du Tabellen, Sequencen, Funktionen, Trigger u.s.w. ded. sep. Granten.

Welche Objekte erwischt er denn nicht? Die Fehlermeldung sollte da ja auchreichend Infos liefern.
 
OP
coogor

coogor

Hacker
Tut sie, aber das flutscht so schnell durch :schockiert:
Muss ich heute Abend sehen wenn ich wieder am Rechner sitze....
 
OP
coogor

coogor

Hacker
Stimmt :)
Da sind Einträge wie....
2015-03-09 22:54:04 CET gnuhealth28 postgres FEHLER: Rolle „gnuhealth“ existiert nicht
2015-03-09 22:54:04 CET gnuhealth28 postgres ANWEISUNG: ALTER TABLE public.account_account_id_seq OWNER TO gnuhealth;

...und das so ziemlich für jede Tabelle. Das macht das Leben natürlich schwierig...falls man das nicht in einem Rutsch ändern kann
 

marce

Guru
in dem Fall würde ich Dir empfehlen, entweder den Dump zu bearbeiten, daß das, was nicht rein soll, abgeändert wird oder einen Struktur-Dump und einen Datendump zu erstellen und ggf. nur den Datendump einzuspielen.

Das wäre das was mir so aus dem Kopf heraus einfällt, pgdump schreibt per default halt auch alle Rechte mit in den (Strukturteil des) Dump rein. Ob man das ändern kann müsste ich selbst aktuell in der Doku nachlesen. Oder Du.
 
OP
coogor

coogor

Hacker
Gesucht, gefunden, angwandt: REASSIGN OWNED BY old_role [, ...] TO new_role
DAnach mal durch den Dump gesucht, der Befehl ändert alles in einem Rutsch.
 
Oben