PostgreSQL gilt als das beste
frei erhältliche Relationale Datenbanksystem. Es besitzt viele
Gemeinsamkeiten mit Oracle, ist aber wesentlich leichter zu
administrieren. Hier die wichtigsten Kommandos, um damit an den Start
gehen zu können.
PostgreSQL RDBMS installieren (Debian)
# apt-get install postgresql
Zum DB-Admin machen
Nur von diesem Unix-Account aus kann nach der Installation eine
Connection zum DBMS aufgebaut werden.
Liste der existierenden Datenbanken
Nach der Installation existiert zunächst nur die Datenbank
postgres.
Datenbank erzeugen/zerstören
$ createdb DB
...
$ dropdb DB
Liste der existierenden Benutzer
oder
postgres=# SELECT rolname FROM pg_roles;
Benutzer anlegen/entfernen
$ createuser USER
...
$ dropuser USER
Bei Angabe der Option --superuser erhält der Benutzer Admin-Rechte:
$ createuser --superuser USER
Benutzer sind global für alle Datenbanken einer Installation.
Zunächst existiert nur der Benutzer postgres. Soll der User
USER von einem anderen Account als dem entsprechenden
Unix-Account connecten können, muss ein Passwort vergeben
werden. Option -P.
Datenbankzugriff
Ist ein DB-User erzeugt, kann dieser vom gleichnamigen Unix-Account
oder per Passwort, falls eins vergeben wurde, von einem anderen
Account per psql auf die Datenbank zugreifen.
USER$ psql DB
psql (9.4.3)
Type "help" for help.
...
DB=#
Wurde ein Passwort für User USER vergeben, aber die Anmeldung
von einem anderen Accout aus schlägt fehl mit der Meldung
$ psql -U USER DB
psql: FATAL: Peer authentication failed for user "USER"
dann muss in pg_hba.conf die Authentisierungsmethode für
lokale Logins geändert werden von
in
und anschließend der Server neu gestartet werden.
Liste der existierenden Objekte
Schemata: |
\dn |
Tabellen: |
\dt |
Views: |
\dv |
Sequenzen: |
\ds |
Liste aller interaktiven psql-Kommandos: \?
Exportieren/Importieren
Alle Datenbanken: |
pg_dumpall >FILE |
Eine Datenbank: |
pg_dump DB >FILE |
Importieren: |
psql -f FILE DB |
Session-Einstellungen
Zeitzone
Die Zeitzone kann für eine Session abweichend gesetzt werden:
SET TIME ZONE 'Europe/Berlin';
Die Default-Zeitzone ist in postgresql.conf definiert:
timezone = 'Europe/Berlin'
Datumsformat
Datumsangaben im Format YYYY-MM-DD:
SET datestyle TO iso, ymd;
Aktueller Zeitpunkt:
select localtimestamp(0);
liefert die Zeit entsprechend dem eingestellten Format
Zeichensatz
Client arbeitet mit ISO-8859-1:
SET client_encoding TO iso88591
Client arbeitet mit UTF-8:
SET client_encoding TO utf8
Siehe: http://www.postgresql.org/docs/9.4/static/multibyte.html
Der clientseitige Zeichensatz kann jederzeit umgeschaltet werden.
Wenn Daten mit unterschiedlichem Encoding verarbeitet werden,
besteht die Möglichkeit, vor dem Schreiben auf die Datenbank das
clientseitige Encoding umzuschalten. Die Konvertierung wird dann
vom Server übernommen.
\-Escapes in Stringliteralen verbieten
SET standard_conforming_strings TO on
Server-Zugriff von externen Hosts
Die folgenden Einträge ermöglichen den Zugriff von allen
Hosts für alle User und alle Datenbanken.
-
In pg_hba.conf oberhalb der anderen Einträge hinzufügen:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5
-
In postgresql.conf eintragen:
Server neu starten
# /etc/init.d/postgresql-X.Y restart
Upgrade auf eine neue Version
Siehe Kapitel "Upgrading" in der Doku.
Links