Benutzer-Werkzeuge

Webseiten-Werkzeuge


postgres

Dies ist eine alte Version des Dokuments!


  • DBMS (Datenbank Management System)

HowTo

Root-Passwort (bzw. postgres) setzen

  • Die Anweisungen beziehen sich auf ein Debian-System, sind aber vermutlich in den meisten anderen Distributionen ähnlich
  • in /etc/postgresql/<version>/main/pg_hba.conf stehen die Login-Methoden
  • es sollte eine Zeile wie folgt geben die nicht auskommentiert sein sollte
local    all   postgres             peer
  • Die Zeile definiert das der Benutzer postgres Zugriff auf alle Datenbanken hat, wenn er lokal am System (also als Unix-Login) angemeldet ist, ohne sich gegenüber der Datenbank noch mal authentifizieren zu müssen
  • su postgres → Login auf der Shell als Benutzer postgres
  • psql → Anmelden an der Datenbank und wechseln in die Datenbankshell
  • \password <Enter>
  • Danach das neue Passwort setzen

Anschließend die Authentifizierung auf Password ändern:

  • in /etc/postgresql/<version>/main/pg_hba.conf
local    all   postgres             peer

durch:

local    all   postgres             md5

Ersetzen/eventuell ersteres auskommentieren und zweiteres einfügen.

  • Die Liste durchgehen und schauen ob noch irgendwo peer steht und ggf. auch durch md5 ersetzen

Login

  • psql -U <Benutzername>
    • postgres entspricht per Default dem Benutzer „root“ in MySQL

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

  • pg_dump kann genutzt werden um Dumps von einzelnen Datenbanken zu machen
  • es kennt mehrere Formate für das Dump
    • es gibt ein Format was normales SQL erzeugt
    • es gibt 2 Formate die eine Binärdatei erzeugen
      • die haben den Vorteil das man auch ggf. nur Teilaspekte wiederherstellen kann
      • zumindest die Binärformate stellen auch die Berechtigungen wieder her

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
  • pg_restore stellt eine Datenbank aus einer Datei im „c“-Format oder „d“-Format (beides binäres Format von pg_dump wieder her
    • als „p“-Forma gespeicherte Dateien (SQL-Scripte) müssen direkt über psql wiederhergestellt werden

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>

Generelle Hinweise

  • Kommt auf einen Befehl keine Bestätigung ist etwas schief gelaufen
    • (alle?) Befehle geben eine Rückgabe
postgres.1518025943.txt.gz · Zuletzt geändert: 2018/02/07 18:52 von root