






Besser lernen dank der zahlreichen Ressourcen auf Docsity
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
Prüfungen vorbereiten
Besser lernen dank der zahlreichen Ressourcen auf Docsity
Download-Punkte bekommen.
Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo
Installation und Einrichtung des Datenbank-Servers PostgreSQL
Art: Skripte
1 / 10
Diese Seite wird in der Vorschau nicht angezeigt
Lass dir nichts Wichtiges entgehen!







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 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
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.
Die Installation erfolgt in folgenden Schritten:
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.
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:
PATH=$PATH:/usr/local/pgsql/bin export PATH
MANPATH=$MANPATH:/usr/local/pgsql/man export MANPATH
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:
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.
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:
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.
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.
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