updated:  2024 23. October
published:  2023 09. August

Postgresql

... auf der Konsole einrichten.

Der Begriff - Rolle -

Bei der Installation von PostgreSQL wurde die Rolle postgres angelegt. PostgreSQL unterscheidet zwischen Benutzerrollen und Gruppenrollen. Rollen werden verwendet, um Berechtigungen für den Datenbankzugriff zu verwalten, wobei eine Benutzerrolle das Einloggen ermöglicht, eine Gruppenrolle dagegen nicht. In Gruppenrollen werden Benutzerollen zusammengefasst um ihnen Berechtigungen zu erteilen.

Erste Schritte in Linux

Nach der Installation der entsprechenden Packete wird in Linuxsystemen neben der Rolle postgres auch gleichzeitig ein Benutzer postgres eingerichtet. Entsprechend muss man sich einloggen.

 
 # Linux Benutzer anzeigen 
 cat /etc/passwd | cut -d : -f 1

 # ggf. Server starten
 sudo systemctl start postgresql
 
 # Einloggen als Benutzer postgres 
 sudo -i -u postgres
 
 # PostgreSQL-Terminal starten
 psql
  

Ggf. tritt eine Fehlermeldung auf (keine Verbindung mit Server), dann könnte ein Neustart des Servers helfen. Ansonsten, siehe weiter unten.

Nach dem Start des interaktiven PostgreSQL-Terminal mit dem Befehl psql steht der Eingabeprompt postgres=# auf der Konsole zur Verfügung. Der Eingabeprompt zeigt immer die Datenbank mit der man gerade verbunden ist. In diesem Fall mit der Datenbank postgres. Innerhalb des psql-Terminal können erstmal ein paar Informationen abgefragt werden.

psql Terminal

 help 		# das Wichtigste 	
 \conninfo	# Verbindungseinstellung anzeigen
 \l		# Datenbanken auflisten
 \du 		# anzeigen aller Rollen bzw. Nutzer
 \dt		# Tabellen und Schemata auflisten
 \q		# beendet psql Terminal
 \c DBName	# Wechsel zu DBNAME
 \dx		# Alle Erweiterungen der DB anzeigen

Einloggen in ein privates Netzwerk

Innerhalb eines privaten Netzwerks mit eigens vergebenen privaten IP-Adressen wird PostgreSQL auf einem Server betrieben. Die einzelnen Clients (PC) bauen eine Verbindung zum PostgreSQL-Server auf. In der Datei postgresql.conf des Server wird die IP-Adresse und der Verschlüsselungsmechanismus eingetragen.

postgresql.conf

 listen_addresses = '192.168.56.102'  # Server-Adresse
 password_encryption = md5

In der Datei pg_hba.conf werden ebenfalls die entsprechenden Einträge angepaßt. Diese Datei regelt folgende Punkte:

  1. Welche Host/Gast, bzw. welches Netzwerk (IP-Addresse) sich anmelden darf.
  2. Die Zugriffsrechte eines Host/Gast auf eine Datenbank.
  3. Das Authentifizierungsverfahren der Anmeldung
pg_hba.conf

 host 	DBName	Benutzer	192.168.56.0/24 	md5

Die Angabe der IP-Adresse erfolgt in der CIDR-Notation. Die folgende Tabelle zeigt ein paar Beispiele.

CIDR-Notation Anzahl der Adressen Adressbereich Beschreibung
192.168.56.1/32 1 nur 192.168.56.1 einzelner Host
192.168.56.0/24 254 192.168.56.0 - 192.168.56.255 kleines lokales Netzwerk
192.168.0.0/16 65.534 192.168.0.0 - 192.168.255.255 größeres Netzwerk

Bei einer Verbindung über das Internet muss die öffentliche IP-Adresse des Client in der Datei eingetragen werden.

pg_hba.conf

 host 	DBName	Benutzer	46.111.111.111		scram-sha-256	

Dann den PostreSQL-Server neustarten


 systemctl restart postgresql

Innerhalb des privaten Netzwerkes kann sich der Client mit folgender Befehlszeile auf dem PostgreSQL-Server einloggen.


 psql -d DBName -U Benutzer -h 192.168.56.102

Bei dieser Verbindung wird ein Passwort des Benutzers auf dem PostgreSQL-Server abgefragt und gefordert. Das Passwort für den Benutzer sollte vorher in psql angelegt werden mit dem SQL-Befehl:


 alter user Benutzer PASSWORD 'meinPW';

… oder direkt auf der Kommandoshell mit dem Befehl:


 psql -d DBName -U Benutzer -c "alter user Benutzer PASSWORD 'meinPW';"

PostgreSql Terminal - psql

Das PostgreSQL Terminal psql ist für Linux und Windows verfügbar. Es erlaubt eine Verbindung zu einem PostgreSQL-Server und entsprechenden Datenbankoperationen und -abfragen. Dafür steht die Kommandoption -c bzw. --command= zur Verfügung. Einige Abfragen sind:


 "show listen_addresses;"	// IP Adresse des Servers
 "show config_file;"  		// zeigt die Position postgresql.conf (Konfigurationsdatei Server)
 "show hba_file;"  		// zeigt die Position pg_hba.conf
 "show data_directory;"  	// zeigt die Position der Datenbank
 "show ssl;"			// ist SSL für die Datenübertragung an- oder abgeschaltet
 "show server_version;"		// na was wird das wohl sein
 "show all;"			// alle Konfigurationsparameter

Verschlüsselte Verbindung mit SSL

Guck’st du hier. Das sieht irgendwie viel versprechend aus. Ansonsten mal Google fragen mit den Begriffen: postgresql ssl certificate windows.

Benutzer und DB anlegen und löschen

Innerhalb des interaktive PostgreSQL-Terminal psql werden Benutzer und Datenbanken durch SQL-Befehle verwaltet. Aber auch auf der Shell-Konsole werden Programme zur Benutzer- und Datenbankverwaltung zur Verfügung gestellt.

createuser Benutzer anlegen
dropuser Benutzer löschen
createdb Datenbank anlegen
dropdb Datenbank löschen

Tipp zu Windows

Im Gegensatz zu Linuxsystem gibt es in Windows keinen registierten Benutzer postgres. Sollten auf der DOS-Konsole cmd.exe die deutschen Umlaute nicht richtig dargestellt werden, kann die Zeichensatz-Tabelle codepage geändert werden.

 
 net user	# Window registrierte Benutzer anzeigen 
   

hilfe01
hilfe02
hilfe03
postgis Datenbank erzeugen
hilfe05
postgresql-buch.de

Stichworte (tags)