blank
Unser PostgreSQL-Maskottchen, ein blauer Elefant

PostgreSQL installieren

eine Schritt-für-Schritt Anleitung

 
Vorbereitung


Laden Sie die Source-Distribution herunter und kopieren Sie die Archivdatei in das Verzeichnis /usr/local/src. Dort entpacken Sie die Datei mit

gunzip postgresql-8.x.x.tar.gz
tar xf postgresql-8.x.x.tar

Dadurch wird ein Verzeichnis postgresql-8.x.x unterhalb von /usr/local/src angelegt. Dieses Verzeichnis ist das BUILD-DIRECTORY. Wechseln Sie in dieses Verzeichnis. Alle folgenden Schritte werden von hier aus durchgeführt.


Konfiguration


Als erstes wird der Source-Tree konfiguriert, von dem aus die Installation durchgeführt wird. Die Optionen werden ausgewählt, mit denen PostgreSQL kompiliert werden soll. Das macht das configure-Skript, dem die gewünschten Optionen mitgegeben werden können. Um eine Standardinstallation zu machen genügt

./configure

Die Standardkonfiguration erzeugt den Datenbankserver und alle Client-Applikationen und erstellt PostgreSQL standardmäßig im Verzeichnis /usr/local/pgsql.


Der Build-Prozess


Mit dem Kommando

gmake

wird PostgreSQL erzeugt. Der Build kann zwischen 5 Minuten und einer halben Stunde dauern. Die letzte Zeile des Build sollte so aussehen:

All of PostgreSQL is successfully made. Ready to install.


Regression Tests


Um den erzeugten Build zu testen, können die Regression-Tests durchgeführt werden. Diese Tests können nicht als Benutzer root gestartet werden. Damit ein anderer Benutzer die Regression-Tests ausführen kann, muss er die nötigen Rechte für die Verzeichnisse haben.

$root chmod -R a+w src/test/regress
$root chmod -R a+w contrib/spi

su andererBenutzer
gmake check

Am Ende der Tests sehen Sie eine Meldung, ob die Tests erfolgreich waren oder ob Fehler aufgetreten sind. Danach melden Sie sich wieder als Benutzer root an.


Die Dateien installieren


Ein Aufruf von

gmake install

installiert PostgreSQL in die Verzeichnisse, die beim configure angegeben wurden. Standardmäßig ist das

/usr/local/pgsql/bin
/usr/local/pgsql/lib ...

Für diese Verzeichnisse müssen Schreibrechte gesetzt sein.


Shared Libraries (Gemeinsame Bibliotheken)


Wie der Suchpfad für gemeinsame Bibliotheken gesetzt wird, variiert in den verschiedenen Linux Distributionen. Die gebräuchlichste Methode ist, die Umgebungsvariablen in der Shell zu setzen, etwa so:

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH


Environment (Systemumgebung) anpassen


Fügen Sie die neuen Werte der Umgebungsvariablen in Ihre Startskripte, beispielsweise in ~/.bash_profile ein, oder, falls alle Benutzer die Umgebungsvariablen nutzen sollen in /etc/profile.

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


Damit die Manpages auf Ihrem System gefunden werden, sollten Sie die folgenden Zeilen ebenfalls in Ihr Startskript einfügen:

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


postgres, der PostgreSQL User Account


Unter diesem Benutzer läuft der Serverprozess. Er sollte der Besitzer der Daten sein, die vom Server verwaltet werden. Mit adduser bzw. useradd erzeugen Sie den Benutzer postgres.

Legen Sie als Benutzer root das Datenverzeichnis für Ihre Installation (Datenbankcluster) an und weisen Sie dieses Verzeichnis dem Benutzer postgres zu.

mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data


Wechseln Sie dann zum neuen Benutzer postgres und starten Sie die Initialisierung der Datenbank:

su postgres
/usr/local/pgsql/bin/initdb [ --locale=...] -D /usr/local/pgsql/data


oder, falls der Pfad schon angepasst und $PGDATA gesetzt wurde:

initdb [ --locale=...] -D $PGDATA

Mit diesem Kommando wird der Datenbankcluster mit der angegebenen locale-Einstellung initialisiert. Diese bestimmt z.B. die Sortierreihenfolge in ORDER BY-Abfragen für Texttypen oder die Sortierung in einem Index. Geben Sie keine locale an, benutzt initdb die Einstellungen der Systemumgebung (beispielsweise bei einer Fedora Standardinstallation de_DE.UTF-8). Da der locale-Support Performance kostet, sollten Sie diese Option nur dann verwenden, wenn Sie sie wirklich brauchen. Um den Cluster ohne locale-Support zu initialisieren, benutzen Sie:

initdb --locale=C -D $PGDATA

Diese Einstellung kann später nicht verändert werden, man muss dazu initdb neu aufrufen und locale setzen.

Falls initdb von einem anderen Benutzer als postgres aufgerufen wird, sind die entsprechenden Zugriffsrechte für das Datenverzeichnis nötig.

initdb meldet die Erzeugung mehrerer Verzeichnisse und der Datenbank template1 ...

creating directory /usr/share/postgresql/data... ok
creating directory /usr/share/postgresql/data/base... ok
creating directory /usr/share/postgresql/data/global... ok
creating directory /usr/share/postgresql/data/pg_xlog... ok
creating directory /usr/share/postgresql/data/pg_clog... ok
creating template1 database in /usr/share/postgresql/data/base/1... ok
Und gibt am Ende der Initialisierung zwei Kommandos aus, mit denen der Datenbankserver gestartet werden kann.

Seit der Version 8.1 legt initdb eine Standarddatenbank namens postgres an. Löschen Sie diese Datenbank nicht. Einige Client-Anwendungen setzen die Existenz dieser Datenbank voraus und versagen ihren Dienst, wenn sie nicht gefunden wird.


Den Datenbankserver starten


Der Datenbankserver muss zunächst als Benutzer postgres gestartet werden:

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
oder
postmaster -D /usr/local/pgsql/data

starten den Server als Vordergrundprozess. Ohne die Option -D versucht der Server die Umgebungsvariable $PGDATA auszulesen. Sind alle Umgebungsvariablen gesetzt, genügt

postmaster

Um den postmaster im Hintergrund zu starten, benutzen Sie eines der folgenden Kommandos:

postmaster -D /usr/local/pgsql/data > logfile 2>&1 &
oder
pg_ctl start -l logfile


Neue PostgreSQL Benutzer anlegen


Als Benutzer postgres geben Sie einfach das Kommando

createuser Benutzername

ein. Sie werden gefragt, ob dieser neue Benutzer (bzw. diese role) die Rechte zum Anlegen von Benutzern oder Datenbanken haben soll. Nachdem Sie diese Fragen beantwortet haben, steht der neue Benutzer zur Verfügung. Ab der Version 8.1 wird nicht mehr zwischen Benutzern und Benutzergruppen unterschieden, sondern es gibt nur noch Rollen.


Den Server stoppen


Läuft der Server als Vordergrundprozess, rufen Sie als Benutzer postgres

pg_ctl -D $PGDATA stop

auf. Falls der Server als Hintergrundprozess gestartet wurde, benutzen Sie das folgende Kommando:

kill 'cat /usr/local/pgsql/data/postmaster.pid'


PL/pgSQL für alle Datenbanken


PL/pgSQL ist eine PostgreSQL-eigene prozedurale Programmiersprache, mit der Sie eigene Funktionen, sogenannte Stored Procedures, definieren können. Wenn Sie diese Programmiersprache nutzen möchten, ist es sinnvoll, sie zu Beginn Ihrer Arbeit mit PostgreSQL an die Datenbank template1 zu binden. Damit steht PL/pgSQL allen Datenbanken dieser Installation zur Verfügung.

Führen Sie dazu als Benutzer postgres das folgende Kommando aus:

createlang plpgsql template1


 
PostgreSQL powered