PostgreSQL-Installation | Hochschule Niederrhein, Skripte von Programmieren

Installation und Einrichtung des Datenbank-Servers PostgreSQL

Art: Skripte

2019/2020

Hochgeladen am 09.04.2020

martyhh
martyhh 🇩🇪

4.4

(18)

1 / 10

Toggle sidebar

Diese Seite wird in der Vorschau nicht angezeigt

Lass dir nichts Wichtiges entgehen!

bg1
PostgreSQL-Installation
Thomas Karsten, Christoph Dalitz
Hochschule Niederrhein
Version 2.0, 22. M¨
arz 2018
Inhaltsverzeichnis
1¨
Uberblick und Bezugsquellen 2
1.1 Installations¨
uberblick ..................................... 2
2 Installation und Einrichtung des Datenbank-Servers PostgreSQL 3
2.1 Bin¨
arpakete unter Linux ................................... 3
2.2 Bin¨
arpakete unter MacOS X ................................. 3
2.3 Quellpakete .......................................... 4
2.3.1 Kompilieren und Installieren ............................. 4
2.3.2 Anlegen eines Datenbankadministrator-Accounts .................. 4
2.3.3 Konfiguration des Datenbankadministrator-Accounts ................ 5
2.3.4 Einrichten eines Datenbankclusters ......................... 5
2.3.5 Einrichten des automatischen Startens unter Linux (optional) ............ 6
2.3.6 Einrichten des automatischen Startens unter MacOS X (veraltet) .......... 7
3 Konfiguration des Datenbankzugriffs 8
4 Erstellen einer Datenbank und eines Benutzers 9
5 Die Perl-Module DBD-Pg und DBI 9
A Anhang i
A.1 Das Programm tar ...................................... i
1
pf3
pf4
pf5
pf8
pf9
pfa

Unvollständige Textvorschau

Nur auf Docsity: Lade PostgreSQL-Installation | Hochschule Niederrhein und mehr Skripte als PDF für Programmieren herunter!

PostgreSQL-Installation

Thomas Karsten, Christoph Dalitz

Hochschule Niederrhein

Version 2.0, 22. M¨arz 2018

Inhaltsverzeichnis

1 Uberblick und Bezugsquellen¨ 2

1.1 Installations¨uberblick..................................... 2

2 Installation und Einrichtung des Datenbank-Servers PostgreSQL 3

2.1 Bin¨arpakete unter Linux................................... 3 2.2 Bin¨arpakete unter MacOS X................................. 3 2.3 Quellpakete.......................................... 4 2.3.1 Kompilieren und Installieren............................. 4 2.3.2 Anlegen eines Datenbankadministrator-Accounts.................. 4 2.3.3 Konfiguration des Datenbankadministrator-Accounts................ 5 2.3.4 Einrichten eines Datenbankclusters......................... 5 2.3.5 Einrichten des automatischen Startens unter Linux (optional)............ 6 2.3.6 Einrichten des automatischen Startens unter MacOS X (veraltet).......... 7

3 Konfiguration des Datenbankzugriffs 8

4 Erstellen einer Datenbank und eines Benutzers 9

5 Die Perl-Module DBD-Pg und DBI 9

A Anhang i

A.1 Das Programm tar...................................... i

Version und ¨Anderungen

Version Datum Autor Anderung¨ 1.0 2003.05.15 Karsten Ersterstellung 1.1 2004.01.08 Dalitz Erg¨anzung Umlaute unter Windows 1.2 2004.07.14 Dalitz Erg¨anzung MacOS X. URL f¨ur Uberblick Windows-¨ Portierungen 1.3 2004.07.15 Dalitz Erg¨anzung Systemstart unter MacOS X 1.4 2004.10.26 Dalitz Erg¨anzung Lokalisierung und Readline 1.5 2004.12.07 Dalitz Korrektur Startscript f¨ur MacOS X 1.6 2005.02.28 Dalitz Korrektur Lizenz und Tippfehler “PASSWORD” 1.7 2005.10.04 Dalitz Installation nativer Win32 Version erg¨anzt 1.8 2005.11.22 Dalitz Encoding bei “create database” erg¨anzt, Korrektur Script f¨ur automatischen Start beim Linux-Systemstart 1.9 2006.10.09 Dalitz Korrektur einzelner Befehle 2.0 2018.03.22 Dalitz Entfernen veralteter Anleitungen zu Windows & libpqxx, Rest aktualisiert und vereinfacht

1 Uberblick und Bezugsquellen¨

PostgreSQL unterliegt der ”BSD License“ und ist deshalb kostenlos.

Bei den meisten Linux-Distributionen (z.B. Ubuntu) wird PostgreSQL mitgeliefert. In diesem Fall ist Post- greSQL bereits kompiliert und muss nur noch mit dem entsprechenden Paketmanager (z.B. apt f¨ur Ubuntu) in das System installiert werden. F¨ur MacOS X gibt es den Paketmanager homebrew^1 , der ebenfalls ein vor- kompiliertes Paket enth¨alt.

Wenn das von den Paketmanagern bereitgestellte PostgreSQL nicht die gew¨unschte Version ist oder man genaueren Einfluss auf die Installation nehmen m¨ochte, kann man PostgreSQL auch aus den aktuellen Sourcen installieren, die der PostgreSQl Homepage erh¨altlich sind^2.

Diese Installationsanweisung beschreibt die Installations von PostgreSQl unter Linux und MacOS X. Eine Installation unter Windows ist ebenfalls m¨oglich, aber hier mangels Testm¨oglichkeit nicht beschrieben.

1.1 Installations ¨uberblick

Die Installation erfolgt in folgenden Schritten:

  1. Installation der Serversoftware. Dazu gibt es zwei Optionen:
    • Installation von Bin¨arpaketen ¨uber Paketmanager, die zugleich im Hintergrund einen Benutzer und eine Datenbank einrichten und Scripte zum automatischen Start beim Booten installieren
    • Installation aus den Quellen, wobei Benutzer und Datenbank noch selbst anzulegen sind
  2. Konfiguration der Datenbank. Dazugeh¨oren die Beschr¨ankung auf einen gesicherten Zugriff, das Anlegen eines DB-Accounts und eienr Datenbank
  3. optional: Installation der Perl-Schnittstelle DBI (^1) https://brew.sh/ (^2) http://www.postgresql.org

Den automatischen Start wieder deaktivieren kann man mit

$ brew services stop postgresql

Wenn man PostgreSQl nur gelegentlich braucht, kann man den Server auch manuell starten mit pg ctl start -D ..., wobei das entsprechende Clusterverzeichnis am Ende der Installation mittels brew install ausgegeben wird.

Warnung: Die Standardkonfiguration des Homebrew-Pakets f ¨ur PostgreSQL ist hochgradig unsicher (jeder kann sich von ¨uberall ohne Passwort einloggen). Bevor der Server gestartet wird, sollte die Konfiguration unbedingt angepasst werden wie in Abschnitt 3 beschrieben.

2.3 Quellpakete

Bevor Sie PostgreSQL kompilieren k¨onnen, m¨ussen nat¨urlich die Entwicklungswerkzeuge installiert sein, also unter Linux (gcc, make, ...) und unter MacOS X die Develloper Commandline tools. Zus¨atzlich ist die Installation der Readline Bibliothek dringend zu empfehlen, weil sonst in psql kein Komandozeilen- Editieren m¨oglich ist. Dazu ist die Installation der readline-Runtime Bibliotheken nicht ausreichend, es m¨ussen auch die readline-Header Files installiert sein (pr¨ufen Sie, ob die Datei /usr/lib/readline/readline.h vorhanden ist).

2.3.1 Kompilieren und Installieren

F¨ur die Installation von PostgreSQL m¨ussen wir erst einmal das tar-Archiv entpacken. Dies geschieht wie in Abschnitt A.1 angegeben. Damit wird das Verzeichnis postgresql-X.Y.Z erstellt und alle Quelldateien werden dort abgespeichert.

Anmerkung: Mit den Quellen befinden sich gleichzeitig auch Hilfedateien im jeweiligen Quellverzeichnis. Diese haben meist den Namen README oder INSTALL und sollten vor dem Kompilierungsvorgang und der Installation gelesen werden.

Als N¨achstes wechseln wir in dieses Verzeichnis und f¨uhren dort den Befehl configure aus, der das Makefile erstellt und entsprechend zus¨atzlicher Angaben auch konfigurieren kann.

$ ./configure

Jetzt m¨ussen die Quelldateien kompiliert werden (dies kann als normaler Benutzer geschehen) und an- schließend als root installiert werden:

$ make $ sudo make install

Damit ist die Installation des Datenbank-Management-Systems PostgreSQL abgeschlossen. Stan- dardm¨aßig befinden sich alle installierten Dateien im Verzeichnis /usr/local/pgsql.

Die ausf¨uhrbaren Dateien sind im Unterverzeichnis bin/, die Header-Dateien im Unterverzeichnis include/ abgelegt. Im Pfad /usr/local/pgsql/doc/html findet sich die PostgreSQL-HTML-Dokumentation.

2.3.2 Anlegen eines Datenbankadministrator-Accounts

Normalerweise sollte der Serverdienst unter einem eigenen Benutzer laufen, bei PostgreSQL typischerwei- se postgres. Dieser Account muss also erst im Betriebssystem angelegt werden, wenn es ihn nicht schon gibt. Das geht z.B. unter Linux mit

$ sudo useradd -d /home/postgres -p my secret password postgres

Das Passwort kann bei Bedarf sp¨ater ge¨andert werden mit

$ sudo passwd postgres

Als Home-Verzeichnis wurde /home/postgres ausgew¨ahlt, das noch erstellt und mit den Eigentumsrechte an den Benutzer postgres ¨ubergeben werden muss:

$ sudo mkdir /home/postgres $ sudo chown postgres /home/postgres

Alle weiteren Schritte werden nicht als root sondern als postgres ausgef¨uhrt:

$ sudo su - postgres

2.3.3 Konfiguration des Datenbankadministrator-Accounts

Als ersten Schritt f¨ugt der Datenbank-Administrator (postgres unter Linux und MacOS X) seiner Login- Datei .profile, die sich im Home-Verzeichnis befindet, folgendes hinzu:

damit PostgreSQL Programme gefunden werden

PATH=$PATH:/usr/local/pgsql/bin export PATH

damit Manpages gefunden werden

MANPATH=$MANPATH:/usr/local/pgsql/man export MANPATH

Variablen f¨ur PostgreSQL-Server

PGUSER=$USER PGDATA=$HOME/data export PGUSER PGDATA

Abschließend wird die Datei .profile in der aktuellen Shell ausgef¨uhrt, um die neu hinzugef¨ugten Einstellungen zu ¨ubernehmen. Ob dies erfolgreich geschehen ist, kann mit dem darauf folgenden Befehl uberpr¨¨ uft werden.

$. .profile $ echo $PGDATA

$PGDATA ist das Verezichnis, in dem sp¨ater der Datenbankcluster angelegt wird.

2.3.4 Einrichten eines Datenbankclusters

Alle Schritte in diesme Abschnitt erfolgen als Benutzer postgres.

Um die Datenbank einzurichten ben¨otigen wir ein Datenbankverzeichnis. In unserem Linux-Beispiel ist das /home/postgres/data, das wir jedoch zuvor mit dem Benutzer erstellen m¨ussen:

$ mkdir $PGDATA $ initdb --locale=de DE -D $PGDATA

Die Lokalisierungseinstellung –locale=de DE ist erforderlich f¨ur eine korrekte Sortierung und Konversion (upper, lower) von Umlauten und kann nur auf der Serverseite zum Zeitpunkt von initdb eingestellt werden! Siehe dazu den Abschnitt Localization im PostgreSQL Administrator’s Guide.

Der Datenbankserver kann anschließend (als benutzer postgres) manuell gestartet werden mit

$ sudo /etc/init.d/postgresql start

2.3.6 Einrichten des automatischen Startens unter MacOS X (veraltet)

Anmerkung: Dieser Abschnitt bezieht sich noch auf MacOS X 10.4 und ist nicht mehr aktuell. F ¨ur eine aktualisierte Anleitung w ¨aren wir dankbar.

Dienste, die unter MacOS X beim Systemstart gestartet werden sollen, m¨ussen in /Library/StartupItems eingetragen werden. Als Muster kann man einen der Apple Systemdienste in /System/Library/StartupItems nach /Library/StartupItems kopieren und nach seinen W¨unschen anpassen, wobei die Kommandos zum Starten und Stoppen des vorherigen Abschnitts 2.3.5 verwendet werden k¨onnen.

Das Startscript sollte dabei als erstes /etc/rc.common sourcen. Dieses Script l¨adt die Variablen aus /etc/hostconfig, so dass durch ¨Andern dieser Datei das Starten von PostgreSQL leicht an- bzw. ausge- schaltet werden kann. Das Script kann z.B. wie folgt aussehen:

#!/bin/sh

. /etc/rc.common

PGDATA=/Users/postgres/data PGROOT=/usr/local/pgsql

StartService () { if [ "${POSTGRES:=-YES-}" = "-YES-" ]; then ConsoleMessage "Starting PostgreSQL database server" su postgres -c "$PGROOT/bin/pg_ctl start -D $PGDATA -l $PGDATA/logfile" fi }

StopService() { ConsoleMessage "Stopping PostgreSQL database services" su postgres -c "$PGROOT/bin/pg_ctl stop -D $PGDATA" }

RestartService () { StopService StartService }

RunService "$1"

Damit die if-Zweige durchlaufen werden, muss zus¨atzlich in der Datei /etc/hostconfig der folgende Eintrag erg¨anzt werden:

POSTGRES=-YES-

Wenn Sie PostgreSQL irgendwann nicht mehr beim Systemstart starten wollen, dann ¨andern Sie diesen Eintrag einfach in POSTGRES=-NO-.

Der automatische Startvorgang unter MacOS X kann nach dem Eintrag in Library/StartupItems als Benut- zer root (eine Root-Shell bekommt man mit sudo bash) getestet werden mit dem Befehl:

SystemStarter start PostgreSQL

Durch diesen Befehl wird der PostgreSQL-Server nat¨urlich nur dann gestertet, wenn Sie tats¨achlich in /etc/hostconfig die Variable POSTGRES auf “-YES-” gesetzt haben.

3 Konfiguration des Datenbankzugriffs

Die Zugriffsrechte der Datenbankbenutzer auf die Datenbank wird in der Datei pg hba.conf im Verzeichnis $PGDATA festgelegt. Diese Datei kann der Datenbank-Administrator entsprechend modifizieren.

Dazu muss die Datei pg hba.conf zun¨achst gefunden werden. Wenn man ein Bin¨arpaket installiert hat, weiß man in der Regel nicht, wo der Datenbankcluster angelegt wurde. Wurde der Server aber nach der Installation schon gestartet (ist z.B. unter Ubuntu so), dann l¨asst sich das herausfinden ¨uber

$ ps ax | grep postgres 8418? S 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf

Es ist erkennbar, dass die Konfiguration im Verzeichnis /etc/postgresql/9.5/main ist. Unter MacOS X liefert der Befehl etwas in der Art

$ ps ax | grep postgres 605 ?? Ss 0:00 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgresql

Hier ist ablesbar, dass die Konfigurationsdateien im Verzeichnis /usr/local/var/postgresql liegen.

Als Default-Werte sind schon zwei Eintr¨age vorgenommen worden. Diese erlauben sowohl jedem lokalen als auch jedem fremden Benutzer den Zugriff auf jede Datenbank von PostgreSQL. Um diese Zugriffs- rechte zumindest etwas einzuschr¨anken, ist das Feld METHOD anzupassen. Die wichtigsten Attribute sind hier:

  • trust f¨ur uneingeschr¨ankten Zugriff
  • md5 f¨ur Zugriff mit verschl¨usseltem Passwort
  • reject f¨ur die Unterbindung eines Zugriffes

Anmerkung: Die ¨Anderungen der Zugriffsrechte m ¨ussen der laufenden Datenbank manuell mitgeteilt wer- den. Dies geschieht mit dem Befehl pg ctl reload. Dadurch liest PostgreSQL seine Konfigurationsdatei- en neu ein. Ohne diesen manuellen Aufruf bleiben die Anderungen am System bis zum Neustart des¨ Datenbank-Servers unwirksam.

Demzufolge k¨onnen die Zugriffsmethoden f¨ur alle Benutzer mindestens auf md5 gesetzt werden außer ggf. f¨ur lokalen Zugriff. Das erfordert bei jedem Login in die Datenbank die Eingabe eines Passwortes oder das Setzen der Umgebungsvariablen $PGPASSWORD mit dem entsprechenden Wert.

Um das Passwort zu setzen, muss entweder der Datenbank-Administrator oder der entsprechende Benutzer im Datenbanksystem folgenden Befehl anwenden (vor der ¨Anderung der Konfiguration in md5):

$ psql -U postgres template dbs=# ALTER USER dummy PASSWORD ’dummy’; dbs=# \q

Zur Installation von DBI wechseln wir zun¨achst in das Verzeichnis /usr/local/src/DBI-1.35.

In diesem Verzeichnis erstellen wir mit Hilfe des Perl-Scriptes Makefile.PL ein Makefile, um danach die Quellen kompilieren zu k¨onnen. Als root wird das Paket DBI schließlich in das System installiert.

Folgende Befehle m¨ussen dazu ausgef¨uhrt werden:

$ perl Makefile.PL $ make $ make test $ sudo make install

F¨ur das Perl-Modul DBD-Pg wird genau so verfahren wie f¨ur die Installation des Moduls DBI.

A Anhang

A.1 Das Programm tar

tar wird verwendet, um mehrere Dateien als ein Archiv abzuspeichern. Dabei werden auch eventuelle Unterverzeichnisse beibehalten. tar ist kein Komprimierungsprogramm, die angegebenen Dateien werden quasi nur aneinander angeh¨angt und ergeben letztendlich eine Datei (Archiv). Jedoch besitzt tar eine Option, mit der das Archiv nach der Erzeugung automatisch mit dem Programm gzip komprimiert wird.

Nachfolgend sind die wahrscheinlich gebr¨auchlichsten Optionen erkl¨art.

  • Option x: extrahiert das Archiv
  • Option z: erm¨oglicht das Komprimierungsverfahren
  • Option f: auf diese Option muss der Name des Archivs folgen
  • Option t: listet den Inhalt eines Archivs auf
  • Option c: erstellt ein neues Archiv

Um zum Beispiel das Archiv postgresql-7.3.2.tar.gz zu extrahieren, benutzen wir folgende Befehlszeile:

$ tar -xzf postgresql-7.3.2.tar.gz

Die vollst¨andige Syntax und eine Beschreibung des Programmes k¨onnen in der Manpage (man 1 tar) nachgelesen werden.

i