Benutzer-Werkzeuge

Webseiten-Werkzeuge


postgres

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
postgres [2018/02/07 18:44]
root [Unteschiede in den Kommandos zu MySQL/Basisbefehle]
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 73: Zeile 92:
 |c|Custom - komprimiertes Binärformat. \\ \\ Kann nicht editiert werden \\ Selektives wiederherstellen möglich \\ Wiederherstellen über pg_restore möglich| |c|Custom - komprimiertes Binärformat. \\ \\ Kann nicht editiert werden \\ Selektives wiederherstellen möglich \\ Wiederherstellen über pg_restore möglich|
 </WRAP> | </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 ======  ====== Generelle Hinweise ====== 
Zeile 78: Zeile 125:
   * Kommt auf einen Befehl keine Bestätigung ist etwas schief gelaufen   * Kommt auf einen Befehl keine Bestätigung ist etwas schief gelaufen
       * (alle?) Befehle geben eine Rückgabe       * (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.1518025488.txt.gz · Zuletzt geändert: 2018/02/07 18:44 von root