Ergebnis 1 bis 7 von 7

Thema: Eigentümer aller Tabellen ändern

  1. #1
    haksi74 ist offline Neuer Benutzer
    Registriert seit
    14.11.2007
    Beiträge
    4

    Standard Eigentümer aller Tabellen ändern

    Hallo Forum,

    ich habe folgendes Problem:
    1. Ich habe mit pg_dump eine Sicherung meiner Datenbank erstellt.
    2. Diese Sicherung habe ich auf einem anderen Rechner mit pg_restore wiederhergestellt.
    2.1 Ich musste pg_restore mit --no-owner durchführen. Da diese datenbank einen anderen Benutzer hat sonst hat pg_restore nicht geklappt.
    2.2 Das Problem ist nun das alle Tabellen als Eigentümer postgres haben. Der eigentliche Benutzer hat keinen Zugriff auf die Tabellen.

    ein
    Code:
     ALTER TABLE name OWNER
    für jede Tabelle würde zu lange dauern. Es sind viele Tabellen vorhanden.

    Meine Frage nun:
    Wie kann ich den Eigentümer aller Tabellen auf einmal setzen?

    Grüsse,
    HAKSI

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von haksi74 Beitrag anzeigen
    Hallo Forum,

    Meine Frage nun:
    Wie kann ich den Eigentümer aller Tabellen auf einmal setzen?

    Grüsse,
    HAKSI
    Hilft Dir http://www.archonet.com/pgdocs/grant-all.html weiter?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    haksi74 ist offline Neuer Benutzer
    Registriert seit
    14.11.2007
    Beiträge
    4

    Standard

    Hallo Andreas,

    wo gibt man den Namen der Datenbank an? Ich schaue mir gerade das Shell Skript an????

    Gruss,
    Haksi

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von haksi74 Beitrag anzeigen
    Hallo Andreas,

    wo gibt man den Namen der Datenbank an? Ich schaue mir gerade das Shell Skript an????

    Gruss,
    Haksi
    Als Parameter für psql. Du wirst natürlich auch das SQL anpassen müssen.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    haksi74 ist offline Neuer Benutzer
    Registriert seit
    14.11.2007
    Beiträge
    4

    Standard

    Hallo Andreas,

    vielen dank für die Tipps


    Mal eine andere Frage:
    Kann ich schon bei pg_restore schon sagen das die angelegten Tabellen den von mir definierten Benutzer gehören sollen und nicht dem der in der Archivdatei definiert ist?

    Gruss,
    Hakan

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von haksi74 Beitrag anzeigen
    Hallo Andreas,

    vielen dank für die Tipps


    Mal eine andere Frage:
    Kann ich schon bei pg_restore schon sagen das die angelegten Tabellen den von mir definierten Benutzer gehören sollen und nicht dem der in der Archivdatei definiert ist?

    Gruss,
    Hakan
    Weiß nicht, vielleicht kommst Du mit --no-owner und/oder --use-set-session-authorization zum Ziel. Nie probiert.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    haksi74 ist offline Neuer Benutzer
    Registriert seit
    14.11.2007
    Beiträge
    4

    Standard

    Hallo,

    ich habe es gelöst

    für alle die sich mit ähnlichem Problem zu tun haben oder haben sollten. Ich habe ein Skript geschrieben das von allen Tabellen den Eigentümer setzt.

    Code:
    #!/bin/ash
    mydb=thedbname
    myuser=thedbuser
    SQL="SELECT relname FROM pg_class WHERE (relkind = 'r' OR relkind = 'S')
    AND relname !~ '^pg_' ORDER BY relname"
    OBJ=`su - postgres -c "psql -t -c \"$SQL \" $mydb
    OBJ=`echo ${OBJ} | sed 's/ /, /g'`
    
    ###############################################################
    ####  Hier werden alle Elemente von $str durchlaufen als
    ####  Trennzeichen wird "," benutzt                                             
    ###############################################################
    str=$OBJ
    while [ "$str" != "$sub" ]; do
        sub=${str/\,*/}
        str=${str/$sub,/}
        SQL="ALTER TABLE $sub OWNER TO $myuser"
        su - postgres -c "psql -c \"$SQL \" $mydb"
    done
    Viel Spass....
    Grüsse,
    Haksi

Ähnliche Themen

  1. Frage Liste aller doppelten Straßen
    Von Timbo im Forum PostGIS
    Antworten: 2
    Letzter Beitrag: 28.02.2009, 14:29
  2. Backup aller Tabellen einer DB
    Von Kai-Behncke im Forum Allgemeines
    Antworten: 2
    Letzter Beitrag: 29.12.2008, 19:51
  3. Problem Eigentümer des Schemas keine Berechtigung?
    Von rainbow559 im Forum Benutzer- & Rechteverwaltung
    Antworten: 3
    Letzter Beitrag: 27.07.2008, 12:17
  4. Antworten: 3
    Letzter Beitrag: 12.12.2007, 18:27
  5. Eigentümer der Datenbanken sind nach Neustart weg
    Von callisto im Forum Benutzer- & Rechteverwaltung
    Antworten: 3
    Letzter Beitrag: 21.08.2007, 19:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum