Inhaltsverzeichnis

HowTo

Root-Passwort (bzw. postgres) setzen

local    all   postgres             peer

Anschließend die Authentifizierung auf Password ändern:

local    all   postgres             peer

durch:

local    all   postgres             md5

Ersetzen/eventuell ersteres auskommentieren und zweiteres einfügen.

Login

Benutzer anlegen

Per Datenbankshell

Je nach Konfiguration werden dem Benutzer bestimmte Optionen automatisch eingeräumt und müssen ihm ggf. explizit beim Anlegen genommen werden → das sind die Optionen die „no“ im Namen haben.
Es gibt auch deren positives Gegenstück - jeweils ohne „no“ davor.

Auf die Option: „password“ folgt in '' das Klartextpasswort. Man kann hier auch das MD5-Passwort angeben.

Unteschiede in den Kommandos zu MySQL/Basisbefehle

Einige Sachen die in MySQL durch SQL-Kommandos gemacht werden können gibt es in Postres nicht, sie werden durch Postgres-Befehle abgebildet.
Postgres-Befehle werden durch „\“ vor dem Befehl markiert.

Eine Übersicht gibt es durch Eingabe von \h

MySQL-Syntax Postgres-Syntax Erklärung
exit\qBeendet die Verbindung mit dem Server/man kommt wieder auf den normalen Kommand-Prompt der Shell zurück
show databases;\lZeigt die vorhandenen Datenbanken an
use <Datenbankname>\c <Datenbankname>Verbindet sich mit der gewünschten Datenbank. Alle Abfragen/SQL-Kommandos beziehen sich ab sofort auf diese Datenbank
show tables;\dAnzeigen der vorhandenen Tabellen in der Datenbank

pg_dump und pg_restore

Syntax: pg_dump -U <username> -d <database name> -f <output file> -F <forma>

Option Beschreibung
-UBenuztername in dessen Name sich mit der Datenbank verbunden wird und das dump durchgeführt wird)
-dDatenbank die gebackupt werden soll
-fDatei in die die Datenbank geschrieben werden soll
-FOptional das Ausgabeformat (per Default ist es plain → aka ein SQL-Script

Folgende Liste ist nicht vollständig:

Format Beschreibung
pPlain - ein SQL-Script - ich bin mir nicht sicher ob hier die Berechtigungen wiederhergestellt werden.
Das Format kann über psql wieder eingelesen werden (nicht aber über pg_restore.

Hat den Vorteil das man per Hand darin herumeditieren kann. Der Nachteil ist das es von Oebn nach Unten so ausgeführt wird → eine selektive Wiederherrstellung ist nur durch editieren der Datei möglich
cCustom - komprimiertes Binärformat.

Kann nicht editiert werden
Selektives wiederherstellen möglich
Wiederherstellen über pg_restore möglich

Achtung: Die Datenbank und die Benuzter deren Berechtigungen im Dump gespeichert sind müssen zuvor per Hand angelegt werden → sie sind NICHT Teil des dumps.

Syntax: pg_restore -d <Datenbankname> -U <Benuztername> <Dumpdateinname>

pg_dumpall

pg_dumpall > somefile.sql

Restore:

psql -f somefile.sql postgres

Welche Datenbank (welche da angegeben wird) (in diesem Fall postgres) angegeben wird (hier postgres) ist an sich egal, der Befehl erwartet nur eine Angabe.

Generelle Hinweise

Troubleshooting

Problem Lösung
Nach pg_dumpall und wiederherstellung auf einem anderen System funktioniert der Login nichtDie Authentifizierungsmechanisnmen (und die verwendeten Verschlüsselungen für die Passwörter) sind in pg_hba.conf hinterlegt.
Wird diese nicht mitkopiert (was pg_dumpall nicht tut).
Datei muss mitkopiert werden oder die Authentifizierungsemchanismen im Nachgang angepasst werden. Zu beachten: Ein Mechanismus kann nur eine Verschlüsselungsmethode haben und wenn die Verschlüsselungsmethode mit der übereinstimmt mit der die Passwörter in der Datenbank verschlüsselt sind schlägt das anmelden fehl → man kann also die Passwörter in der „alten“ Datenbank nicht als MD5 haben und in der neuen pg_hba.conf SHA256 stehen haben
Gleiche Authentifizierungsmethode mit verschiedenen Verschlüsselungsalgorithmen in pg_hba.conf
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             127.0.0.1/32            md5     

In obigem Beispiel soll Host-Authentifizierung mit scram-sha-256 verschlüsselten und md5-Passwörtern erlaubt werden.
Das geht nicht, pro Authentifizierungsmethode kann es nur einen Passwortverschlüsselungsalgorithmus geben, ggf. müssen also die Passwörter in der Datenbank erneut mit einer der beiden Methoden verschlüsselt werden