Home → PostgreSQL Datenbank → DBA Tipp: PostgreSQL Konfigurationsdateien, die dem Admin das Leben erleichtern
PostgreSQL kommt grundsätzlich ohne bunte Oberfläche aus – und das ist auch gut so. Denn alle Aufgaben, die du als DBA zu erledigen hast, lassen sich grundsätzlich über die Konsole abwickeln.
Das heißt allerdings nicht, dass du auf Annehmlichkeiten und Automatisierungen verzichten musst, wie der nachfolgende DBA Tipp zeigt.
Mit dem PostgreSQL-Client psql
kannst du die Verbindung zu einer Datenbank aufbauen:
postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> psql -h
192.168.137.165 -p 5432 -U foo -d bar Password for user foo: psql (16.2) Type "help" for help. bar=# \q postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $>
Das funktioniert zwar, jedoch nimmt das wiederholte Eingeben von Verbindungsparametern Zeit in Anspruch.
Du kannst dir auch mit der Rückwärtssuche der Konsole behelfen. Doch es geht noch schneller: nämlich mit den Environment-Variablen PGSERVICE
beziehungsweise PGSERVICEFILE
.
psql
sucht nach der “Connection Service File” unter ~/.pg_service.conf
. Pfad und Name dieser Datei können mit der Variable PGSERVICEFILE
geändert werden. Legst du eine Datei ~/.pg_service.conf
an, kannst du darin Verbindungen definieren.
Hier als Beispiel zwei Verbindungen zu einer Master- und einer Standby-Instanz:
postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> cat <<EOF >
~/.pg_service.conf [TEST16-1_foobar] host=192.168.137.165 port=5432 user=foo dbname=bar [TEST16-2_foobar] host=192.168.137.68 port=5432 user=foo dbname=bar EOF postgres@jhm-pg-ws-01:~ $ chmod 0640 ~/.pg_service.conf
Gibst du PGSERVICE
den Namen einer Sektion, übernimmt psql die entsprechenden Verbindungsparameter.
postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> export
PGSERVICE=TEST16-1_foobar postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> psql Password for user foo: psql (16.2) Type "help" for help. bar=>
psql
fragt zwar nur nach dem Passwort, doch auch das lässt sich noch beschleunigen, nämlich indem du die Sektionen in der ~/.pg_service.conf
um einen Passwort-Eintrag ergänzt:
[TEST16-1_foobar] host=192.168.137.165 port=5432 user=foo password=foo dbname=bar
Um die sensiblen Daten von den trivialen zu trennen, erstellst du eine Datei ~/.pgpass
mit einer Zeile für je eine Verbindung. Die Rechte für ~/.pgpass
sollten auf 600 stehen. Sind diese zu liberal gesetzt, ignoriert psql
die Datei.
postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> cat <<EOF >
~/.pgpass # hostname:port:database:username:password 192.168.137.165:5432:bar:foo:foo 192.168.137.68:5432:bar:foo:foo EOF postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> chmod 600 .pgpass postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> psql psql (16.2) Type "help" for help. bar=>
psql
holt sich alle nötigen Parameter selbstständig aus den entsprechenden Konfigurationsdateien.
Den PGSERVICE
änderst du kurz, um dich dann zur Standby Datenbank zu verbinden:
postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> export
PGSERVICE=TEST16-2_foobar postgres@jhm-pg-ws-01(TEST16|16.2) [ ~ ] $> psql psql (16.2) Type "help" for help. bar=> select pg_is_in_recovery(); pg_is_in_recovery ------------------- t (1 row) bar=>
Mit ~/.pg_service.conf
und ~/.pgpass
kannst du den Workflow des Verbindungsaufbaus zu einer Datenbank enorm beschleunigen, da oft genutzte Verbindungen nicht mehr per Hand angegeben werden müssen. Allerdings sind Konfigurationsdateien, besonders wenn sie Passwörter im Klartext enthalten, mit Bedacht einzusetzen. Auf Testsystemen ist diese Methode jedoch das Mittel, um Zeit und Tipp-Arbeit zu sparen.
Hier findest du weitere Features und Infos aus der Welt von » PostgreSQL aus unserem News & Insights Bereich.
Share this article