Benutzer-Werkzeuge

Webseiten-Werkzeuge


postgres

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
postgres [2018/02/07 17:18]
root angelegt
postgres [2023/12/27 12:34] (aktuell)
root [Troubleshooting]
Zeile 1: Zeile 1:
   * DBMS (Datenbank Management System)   * DBMS (Datenbank Management System)
  
- +====== HowTo ======= 
-====== Root-Passwort (bzw. postgres) setzen ====== +===== Root-Passwort (bzw. postgres) setzen =====
  
   * Die Anweisungen beziehen sich auf ein Debian-System, sind aber vermutlich in den meisten anderen Distributionen ähnlich   * Die Anweisungen beziehen sich auf ein Debian-System, sind aber vermutlich in den meisten anderen Distributionen ähnlich
Zeile 33: Zeile 33:
   * Die Liste durchgehen und schauen ob noch irgendwo peer steht und ggf. auch durch md5 ersetzen   * Die Liste durchgehen und schauen ob noch irgendwo peer steht und ggf. auch durch md5 ersetzen
  
-====== Login ====== +===== Login =====
  
   * psql -U <Benutzername>   * psql -U <Benutzername>
       * postgres entspricht per Default dem Benutzer "root" in MySQL       * postgres entspricht per Default dem Benutzer "root" in MySQL
 +
 +
 +===== Benutzer anlegen =====
 +
 +  * in aktuellen Versionen 9.x aufwärts gibt es keinen Unterschied zwischen Benuztern und Gruppen
 +  * beides wird als Rollen bezeichnet
 +  * Gruppen sind Rollen die Benutzern zugewiesen wurden
 +  * Benuzter sind Rollen
 +
 +  * Benutzer können über createuser auf der normalen Shell angelegt werden (ist ein Program)
 +  * oder über die Datenbankshell
 +
 +==== Per Datenbankshell ====
 +
 +  * Syntax: create role <Benuzername> with <Optionen durch Leerzeichen getrennt>;
 +  * Beispiel: create role test with nosuperuser nocreatedb nocreaterole password 'secret';
 +
 +
 +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 ======  ====== Unteschiede in den Kommandos zu MySQL/Basisbefehle ====== 
Zeile 49: Zeile 68:
 |use <Datenbankname>|\c <Datenbankname>|Verbindet sich mit der gewünschten Datenbank. Alle Abfragen/SQL-Kommandos beziehen sich ab sofort auf diese Datenbank|  |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| |show tables;|\d|Anzeigen 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 ^
 +|-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 \\ \\ <WRAP>
 +Folgende Liste ist nicht vollständig:
 +^Format ^Beschreibung ^
 +|p|Plain - 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|
 +|c|Custom - komprimiertes Binärformat. \\ \\ Kann nicht editiert werden \\ Selektives wiederherstellen möglich \\ Wiederherstellen über pg_restore möglich|
 +</WRAP> |
 +
 +
 +  * 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>
 +
 +
 +====== pg_dumpall ====== 
 +
 +  * Dumped alle Datenbanken des Clusters (des Datebankservers), inkl. Berechtigungen und Benutzer
 +  * **Hinweis:** die Config-Dateien des Clusters werden natürlich nicht migesichert
 +      * dort sind aber u.a. die Algorithmen für die Passwörter definiert
 +
 +
 +<sxh bash>
 +pg_dumpall > somefile.sql
 +</sxh>
 +
 +Restore:
 +<sxh bash>
 +psql -f somefile.sql postgres
 +</sxh>
 +
 +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 ====== 
 +
 +  * Kommt auf einen Befehl keine Bestätigung ist etwas schief gelaufen
 +      * (alle?) Befehle geben eine Rückgabe
 +
 +
 +====== Troubleshooting ======
 +
 +
 +^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|<WRAP>
 +<code>
 +host    all             all             127.0.0.1/32            scram-sha-256
 +host    all             all             127.0.0.1/32            md5     
 +</code>
 +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</WRAP>|
 +
postgres.1518020294.txt.gz · Zuletzt geändert: 2018/02/07 17:18 von root