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.
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.
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 | \q | Beendet die Verbindung mit dem Server/man kommt wieder auf den normalen Kommand-Prompt der Shell zurück |
show databases; | \l | Zeigt 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; | \d | Anzeigen der vorhandenen Tabellen in der Datenbank |
Syntax: pg_dump -U <username> -d <database name> -f <output file> -F <forma>
Option | Beschreibung | ||||||
---|---|---|---|---|---|---|---|
-U | Benuztername in dessen Name sich mit der Datenbank verbunden wird und das dump durchgeführt wird) | ||||||
-d | Datenbank die gebackupt werden soll | ||||||
-f | Datei in die die Datenbank geschrieben werden soll | ||||||
-F | Optional das Ausgabeformat (per Default ist es plain → aka ein SQL-Script Folgende Liste ist nicht vollständig:
|
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 > 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.
Problem | Lösung |
---|---|
Nach pg_dumpall und wiederherstellung auf einem anderen System funktioniert der Login nicht | Die 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. |