In Postgresql werden nach pg_dump die Zugriffsrechte für die Datenbank selbst nicht wiederhergestellt

8

Angenommen, Benutzer foo besitzt eine Datenbank gee, und Benutzer foo hat der Benutzerleiste alle Zugriffsrechte für Datenbank gee erteilt

gee=> \l
                              List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 gee       | foo      | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/foo              +
           |          |          |             |             | foo=CTc/foo          +
           |          |          |             |             | bar=CTc/foo

Wir sichern diese Datenbank,

$ pg_dump -U foo -v -f gee.dump gee

In der Datenbank hat die Benutzerleiste ein Schema erstellt. Da alle diese Benutzer die Datenbank als Benutzer-Postgres wiederherstellen (nachdem Benutzer foo eine Datenbank erstellt hat),

$ sudo -u postgres psql -d goo -f gee.dump

Die Benutzerleiste verfügt nicht über die Zugriffsrechte für die Datenbank goo. In der Datenbank goo ist jedoch jedes Privileg für alle Benutzer in Bezug auf Schemas und Tabellen in Ordnung.

goo=> \l
                              List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 goo       | foo      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

Warum werden die Zugriffsrechte für die Datenbank selbst nicht wiederhergestellt?

ericj
quelle
Verwenden Sie stattdessen einen Superuser, wenn pg_dump.
Franken
1
Gibt es während pg_dump eine Reihe von Fehlern aus? Wie zum Beispiel Fehler über GRANT und einen Benutzer, der nicht existiert?
Craig Ringer
@francs, es hilft nicht.
Ericj
@CraigRinger Nein, keine Fehler.
Ericj

Antworten:

6

Warum werden die Zugriffsrechte für die Datenbank selbst nicht wiederhergestellt?

Es ist ein Fehler oder ein Design-Versehen . Der Antwortende auf diesen Bericht glaubt dies jedoch nicht.

pg_dumpall --globals-onlyspeichert keine Rechte in der Datenbank. Auch nicht pg_dumpals Teil des Datenbank-Dumps.

Zuschüsse für Datenbanken werden also nur in einer vollständigen Liste enthalten pg_dumpall.

Ich werde ein bisschen Lärm machen, indem ich diesen Thread stochere .

Craig Ringer
quelle