user@pi5:~$ sudo psql -f pgdumpall template1
psql: error: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: FATAL: role “root” does not exist
Wie müssen die Dateirechte/Eigentümer gesetzt werden, damit das file eingespielt wird?
Die zweite Variante ist ziemlich sicher nicht zielführend. Es sei denn der User user@pi5 hat von Haus aus postgres Rechte, Gruppenmitgliedschaft o.ä.
Der erste Versuch sieht eigentlich nicht schlecht aus, auch wenn der Dateiname des Dumps mich irritiert hat und mir nicht klar ist, was das template1 soll. Du spielst ja einen Dump ein, in dem alles drin ist.
Stammt der Dump von diesem System oder von einem anderen?
Ich würde die Befehle separat versuchen.
erst als User postgres anmelden
dann psql -f
Beim ersten Versuch ist das Problem, daß der Betriebssystemuser postgres keine Leserechte auf die Datei pgdumpall hat — oder auf das Directory, in dem die Datei liegt. Eine mögliche Lösung ist, die Datei an einen Ort zu verschieben, von dem jeder lesen kann, und die Berechtigungen der Datei zu ändern:
DIe Alternative wäre, den Betriebssystemuser user zu berechtigen, sich lokal als Datenbankuser postgres anzumelden. Wenn in pg_hba.conf als Authentisierungsmethode trust steht, geht das einfach so:
psql -U postgres -d postgres -f pgdumpall
Wenn die Authentisierungsmethode peer ist, muß man den User explizit zulassen. Dazu ändert man den Eintrag in pg_hba.conf so, daß eine User Map dabeisteht: