Einführung

PostgreSQL ist ein leistungsfähiges objektrelationales Datenbankverwaltungssystem, das unter einer flexiblen Lizenz im BSD-Stil bereitgestellt wird. PostgreSQL enthält viele erweiterte Funktionen, ist sehr schnell und standardkonform.

PostgreSQL hat Bindungen für zahlreiche Programmiersprachen wie C, C++, Python, Java, PHP, Ruby… Es kann verwendet werden, um alles von einfachen Web-Anwendungen zu massiven Datenbanken mit Millionen von Datensätzen zu versorgen.,

Clientinstallation

Wenn Sie nur eine Verbindung zu einem externen PostgreSQL-Server herstellen möchten, installieren Sie nicht das PostgreSQL-Hauptpaket, sondern das PostgreSQL-Clientpaket. Verwenden Sie dazu den folgenden Befehl

 sudo apt-get install postgresql-client

Sie stellen dann mit dem folgenden Befehl eine Verbindung zum Server her

 psql -h server.domain.org database user

Nachdem Sie das Kennwort eingegeben haben, greifen Sie mit Zeilenbefehlen auf PostgreSQL zu., Sie können zum Beispiel Folgendes einfügen

 SELECT * FROM table WHERE 1;

Sie beenden die Verbindung mit

 \q

Installation

Um den Server lokal zu installieren, verwenden Sie die Befehlszeile und geben Sie Folgendes ein:

 sudo apt-get install postgresql postgresql-contrib

Dies installiert die neueste Version, die in Ihrer Ubuntu-Version verfügbar ist, und die häufig verwendeten Add-Ons dafür.

Siehe“ Externe Links “ unten für Optionen zum Abrufen neuerer Versionen.,

Installieren von PostGIS, prozeduralen Sprachen, Clientschnittstellen usw.

Zusätzliche Pakete enthalten Laufzeiten für prozedurale Sprachen, Add-Ons wie PostGIS, Sprachclientschnittstellen wie psycopg2 für Python usw. Sie erhalten eine Auflistung mit:

 apt-cache search postgres

Verwaltung

pgAdmin III ist eine praktische grafische Benutzeroberfläche für PostgreSQL, ist es wichtig für Anfänger. Um es zu installieren, geben Sie in die Befehlszeile ein:

 sudo apt-get install pgadmin3

Sie können auch den Synaptic package manager aus dem System>verwenden, um diese Pakete zu installieren.,

Basic Server Setup

Zunächst müssen wir das Passwort des PostgreSQL-Benutzers (Rolle) „postgres“ festlegen; Andernfalls können wir nicht extern auf den Server zugreifen. Als lokaler“ postgres “ Linux-Benutzer dürfen wir den Server mit dem Befehl psql verbinden und bearbeiten.

Geben Sie in einem Terminal Folgendes ein:

sudo -u postgres psql postgres

Dies verbindet sich als Rolle mit demselben Namen wie der lokale Benutzer, dh“ postgres“, mit der Datenbank“ postgres “ (1.Argument für psql).,

Legen Sie ein Kennwort für die Datenbankrolle „postgres“ mit dem folgenden Befehl fest:

\password postgres

und geben Sie Ihr Kennwort ein, wenn Sie dazu aufgefordert werden. Der Kennworttext wird aus Sicherheitsgründen in der Konsole ausgeblendet.

Geben Sie Control+D oder \q ein, um die PosgreSQL-Eingabeaufforderung zu beenden.

Create database

Um die erste Datenbank zu erstellen, die wir „mydb“ nennen, geben Sie einfach ein:

 sudo -u postgres createdb mydb

Install Server Instrumentation (für pgAdmin) für Postgresql 8.4 oder 9.3

pgAdmin erfordert die Installation eines Add-Ons für die volle Funktionalität., Das Addon „adminpack“, die es Server Instrumentierung nennt, ist Teil von postgresql-contrib, so müssen Sie das Paket installieren, wenn Sie noch nicht haben:

 sudo apt-get install postgresql-contrib

Dann die Erweiterung zu aktivieren, für „Postgresql 8.4“, führen Sie das adminpack.sql-Skript, einfach eingeben:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

Für „Postgresql-9.3″+ installieren Sie das adminpack „Erweiterung“ in die „postgres“ – Datenbank:

 sudo -u postgres psql CREATE EXTENSION adminpack;

Alternative Server-Setup

Wenn Sie nicht Vorhaben, zu verbinden auf die Datenbank von anderen Maschinen, die diese alternative setup kann einfacher sein.,

Standardmäßig ist Postgresql in Ubuntu so konfiguriert, dass die Authentifizierung „ident sameuser“ für alle Verbindungen desselben Computers verwendet wird. Weitere Informationen finden Sie in der hervorragenden Postgresql-Dokumentation, aber im Wesentlichen bedeutet dies, dass Sie, wenn Ihr Ubuntu-Benutzername “ foo „ist und Sie als Postgresql-Benutzer“ foo “ hinzufügen, eine Verbindung zur Datenbank herstellen können, ohne dass ein Kennwort erforderlich ist.,

Da der einzige Benutzer, der eine Verbindung zu einer Neuinstallation herstellen kann, der Postgres-Benutzer ist, erstellen Sie hier ein Datenbankkonto (in diesem Fall auch einen Datenbank-Superuser) mit demselben Namen wie Ihr Anmeldename und erstellen Sie dann ein Kennwort für den Benutzer:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

Clientprogramme stellen standardmäßig eine Verbindung zum lokalen Host her, indem Sie Ihren Ubuntu-Anmeldenamen verwenden und erwarten, datenbank mit diesem Namen auch., Um die Dinge WIRKLICH einfach zu machen, verwenden Sie Ihre oben gewährten neuen Superuser-Berechtigungen, um eine Datenbank mit demselben Namen wie Ihren Anmeldenamen zu erstellen:

 sudo -u postgres createdb $USER

Eine Verbindung zu Ihrer eigenen Datenbank herstellen, um SQL auszuprobieren, sollte jetzt so einfach sein wie:

 psql

Das Erstellen einer zusätzlichen Datenbank ist genauso einfach.

Sie können Amarok anweisen, postgresql zum Speichern seines Musikkatalogs zu verwenden., Der Datenbankname wäre amarokdb, der Benutzername wäre Ihr eigener Anmeldename, und Sie brauchen nicht einmal ein Passwort dank ‚ident sameuser‘, damit Sie das leer lassen können.

Verwenden der pgAdmin III GUI

Um eine Vorstellung davon zu erhalten, was PostgreSQL tun kann, können Sie zunächst einen grafischen Client starten. In einem Terminaltyp:

 pgadmin3

wird Ihnen die pgAdmin III Schnittstelle angezeigt. Klicken Sie auf die Schaltfläche“ Verbindung zu einem Server hinzufügen “ (oben links). Geben Sie im neuen Dialogfeld die Adresse 127.0.0.1 ein (Lokaler Host ist Standard, sodass er ausgelassen werden kann.,), eine Beschreibung des Servers, der Standarddatenbank („mydb“ im obigen Beispiel), Ihres Benutzernamens („postgres“) und Ihres Passworts. Ein weiterer Schritt ist erforderlich, damit pgAdmin III eine Verbindung zum Server herstellen und pg_hba bearbeiten kann.conf-Datei und ändern Sie die Authentifizierungsmethode von Peer in md5 (funktioniert nicht, wenn Sie das Kennwort nicht festgelegt haben):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

und ändern Sie die Zeile

# Database administrative login by Unix domain socketlocal all postgres peer

in

# Database administrative login by Unix domain socketlocal all postgres md5

Jetzt sollten Sie die Serverkonfigurationsänderungen neu laden und pgAdmin III mit Ihrem PostgreSQL-Datenbankserver verbinden.,

Mit dieser GUI können Sie Datenbanken erstellen und verwalten, die Datenbank abfragen, SQl ausführen usw.

Verwalten des Servers

Weitere Informationen zur Verwaltung von PostgreSQL (jedoch ohne Ubuntu-Besonderheiten) finden Sie in der offiziellen PostgreSQL-Dokumentation

Verwalten von Benutzern und Rechten

Die Benutzerverwaltung wird im Kapitel Clientauthentifizierung der PostgreSQL-Dokumentation ausführlich erläutert.

Um Benutzer zu verwalten, müssen Sie zuerst /etc/postgresql/current/main/pg_hba bearbeiten.,conf und ändern Sie die Standardkonfiguration, die sehr gesperrt und sicher ist. Wenn Sie beispielsweise möchten, dass postgres seine eigenen Benutzer verwaltet (nicht mit Systembenutzern verknüpft), fügen Sie die folgende Zeile hinzu:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

Was bedeutet, dass in Ihrem lokalen Netzwerk (10.0.0.0/24 – Ersetzen Sie es durch Ihr eigenes lokales Netzwerk !), postgres-Benutzer können über das Netzwerk eine Verbindung zur Datenbank herstellen und einen klassischen Paarbenutzer / ein Kennwort bereitstellen.

Neben der Möglichkeit, dass ein Benutzer über das Netzwerk eine Verbindung zu einer Datenbank auf dem Server herstellen kann, müssen Sie PostgreSQL aktivieren, um über verschiedene Netzwerke hinweg abzuhören., Öffnen Sie dazu /etc/postgresql/current/main / postgresql.conf in Ihrem bevorzugten Editor und ändern Sie die listen_addresses wie folgt:

listen_addresses = '*'

um alle Netzwerkschnittstellen abzuhören. Weitere Optionen finden Sie in den Dokumenten für listen_addresses.

Um eine Datenbank mit einem Benutzer zu erstellen, der über die vollen Rechte an der Datenbank verfügt, verwenden Sie den folgenden Befehl:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

Die erste Befehlszeile erstellt den Benutzer ohne Datenbankerstellungsrechte (-D) ohne Benutzerrechte hinzufügen-A) und fordert Sie zur Eingabe eines Kennworts (-P) auf., Die zweite Befehlszeile erstellt die Datenbank ‚mydb mit‘ myuser ‚ als Eigentümer.

Dieses kleine Beispiel wird wahrscheinlich den meisten Ihrer Bedürfnisse entsprechen. Weitere Informationen finden Sie auf den entsprechenden Man-Seiten oder in der Online-Dokumentation.

Neustart des Servers

Nach der Konfiguration der Netzwerke / Benutzer müssen Sie möglicherweise den Server neu laden, hier ist ein vorgeschlagener Befehl dazu.

sudo /etc/init.d/postgresql reload

Einige Einstellungsänderungen in postgresql.,conf erfordert einen vollständigen Neustart, wodurch aktive Verbindungen beendet und nicht festgeschriebene Transaktionen abgebrochen werden:

sudo /etc/init.d/postgresql restart

Weiterlesen

Wenn Sie nicht mit SQL vertraut sind, möchten Sie sich diese leistungsstarke Sprache ansehen, obwohl einige einfache Anwendungen von PostgreSQL diese Kenntnisse möglicherweise nicht erfordern (z. B. ein einfaches Django-Projekt).

Die PostgreSQL-Website enthält eine Fülle von Informationen zur Verwendung dieser Datenbank. Insbesondere das Tutorial ist ein nützlicher Ausgangspunkt, aber Sie können den Installationsschritt überspringen, da Sie ihn bereits mit Ubuntu-Paketen installiert haben.,

Fehlerbehebung

fe_sendauth: kein Passwort angegeben

Ihr pg_hba.conf gibt an, dass die MD5-Authentifizierung für diese Verbindung basierend auf dem Ursprungshost, der Verbindungsmethode und dem angeforderten Benutzernamen/der angeforderten Datenbank verwendet werden soll, Ihre Anwendung jedoch kein Kennwort angegeben hat.

Ändern Sie den Authentifizierungsmodus oder legen Sie ein Kennwort für den Benutzer fest, mit dem Sie eine Verbindung herstellen, und geben Sie dieses Kennwort in den Verbindungseinstellungen Ihrer Anwendung an.,

FATAL: Rolle „myusername“ existiert nicht

Standardmäßig stellt PostgreSQL eine Verbindung zum PostgreSQL-Benutzer mit demselben Namen wie der aktuelle Unix-Benutzer her. Sie haben keinen PostgreSQL-Benutzer mit diesem Namen in Ihrer Datenbank erstellt.

Erstellen Sie einen geeigneten Benutzer oder geben Sie einen anderen Benutzernamen für die Verbindung an. In den Befehlszeilentools tut dies das Flag-U.

FATAL: Datenbank „myusername“ nicht vorhanden

Ein Benutzer mit dem Namen „myusername“ existiert, aber es gibt keine Datenbank mit dem gleichen Namen.,

Standardmäßig stellt PostgreSQL eine Verbindung zur Datenbank mit demselben Namen wie der Benutzer her, als den Sie eine Verbindung herstellen, erstellt die Datenbank jedoch nicht automatisch, wenn sie nicht vorhanden ist.

Erstellen Sie die Datenbank oder geben Sie eine andere Datenbank an, mit der eine Verbindung hergestellt werden soll.

FATAL: Peer authentication failed for user „Benutzername“ „

Sie sind die Verbindung zu localhost via unix socket. Ein Benutzer mit dem Namen „myusername“ ist vorhanden, aber Ihr aktueller Unix-Benutzer ist nicht mit diesem Benutzernamen identisch., PostgreSQL ist so eingestellt, dass die „Peer“ – Authentifizierung für Unix-Sockets für diese Benutzer – /DB-Kombination verwendet wird, sodass Ihre Unix-und Postgresql-Benutzernamen übereinstimmen müssen.

Verbinden Sie sich mit dem Unix-Benutzer, der dem gewünschten PostgreSQL-Benutzer entspricht-möglicherweise mit sudo-u theusername psql – oder ändern Sie pg_hba.versuchen Sie, einen anderen Authentifizierungsmodus wie „md5“ für diesen Benutzernamen zu verwenden.,

konnte keine Verbindung zum Server herstellen: Keine solche Datei oder ein solches Verzeichnis

Ein Fehler wie dieser (möglicherweise mit einem anderen Unix-Socket-Pfad, abhängig von Ihrer Installation):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

kann eine Reihe von Dingen bedeuten:

* Der Server wird nicht ausgeführt;

* Der Server verfügt über unterschiedliche unix_socket_directories als Standard in der libpq Ihres Clients, entweder aufgrund unterschiedlicher kompilierter-in Standardeinstellungen oder einer nicht übereinstimmenden Einstellung;

* Der Server überwacht einen anderen „Port“., PostgreSQL emuliert TCP / IP-Ports auf Unix-Sockets, indem die Portnummer als Suffix für die Socket-Datei verwendet wird, z. B. 5432.

Beseitigen Sie diese.

Stellen Sie zuerst sicher, dass der Server läuft. Unter Ubuntu zeigt ps-u postgres-f alle Prozesse an, die als Benutzerpostgres ausgeführt werden – Sie möchten mehrere mit dem Namen Postgres sehen.

Stellen Sie nun sicher, dass der Server dort abhört, wo Ihr Client denkt. Um das Socket-Verzeichnis Ihres PostgreSQL-Servers herauszufinden:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

oder in älteren PostgreSQL-Versionen unix_socket_directory als Parameter änderte den Namen., Um den Port des Servers anzuzeigen (der sowohl für TCP/IP-als auch für Unix-Sockets gilt):

 sudo -u postgres psql -c "SHOW port;"

Wenn Sie unter Unix-Benutzerpostgres keine Verbindung zu psql herstellen können, können Sie das Socket-Verzeichnis mit lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

In diesem Fall ist die erste Zeile der Socket-Speicherort. Dieser Server verfügt über das Socket-Verzeichnis / tmp mit Port 5432.,

Wenn sich Ihr Client in einem anderen Socket-Verzeichnis befindet, versuchen Sie wahrscheinlich, über Unix-Sockets eine Verbindung zum Standard-Socket-Pfad und/oder zum Standard-Port herzustellen, und die libpq, mit der Ihre Clientanwendung verknüpft ist, hat einen anderen kompilierten Unix-Socket-Pfad und/oder Port als Ihre laufende PostgreSQL. Höchstwahrscheinlich hat LD_LIBRARY_PATH oder /etc/ld.so.conf eine andere libpq als die, die mit Ihrer Version von PostgreSQL geliefert wurde. Dies spielt im Allgemeinen keine große Rolle, Sie können einfach das Socket-Verzeichnis überschreiben.,

Um ein alternatives Socket-Verzeichnis und/Port-Port anzugeben, mit dem eine Verbindung hergestellt werden soll, geben Sie das Socket-Verzeichnis als Host-Parameter in Ihren Verbindungsoptionen an, z. B. um eine Verbindung als Benutzer bob zum Server herzustellen, der /tmp auf Port 5433 abhört:

 psql -h /tmp -p 5433 -U bob ...

oder in Verbindungszeichenfolgenform:

 psql "host=/tmp port=5433 user=bob ..."

Dasselbe funktioniert mit jedem Client, der libpq verwendet (alle PostgreSQL-Client-Tools sowie z. B. psycopg2, das Pg-Juwel in Ruby/Rails, PHPs Postgres und PDO, Perls DBB::Pg usw.)., Es funktioniert NICHT mit Nicht-libpq-Clients wie PgJDBC, py-postgresql usw., aber die meisten unterstützen überhaupt keine Unix-Sockets. Siehe die Clientdokumentation für nicht libpq-basierte Clients.

Offizielle PostgreSQL-Downloads

Das PostgreSQL-Projekt bietet auf seiner Download-Seite eine offizielle Liste der Download-Standorte, einschließlich eines Ubuntu-Software-Repositorys. Insbesondere können Ubuntu-Benutzer neuere PostgreSQL-Versionen als die in ihrer Ubuntu-Version gepackten mit apt-get über apt.postgresql.org.

Support und Services rund um PostgreSQL finden Sie auf der Seite Services und Support.,

EnterpriseDB

Die PostgreSQL Linux-Download-Seite enthält einen Abschnitt zum „Grafischen Installationsprogramm“, der von EnterpriseDB erstellt wurde. Sie laden Sie das Installationsprogramm, ändern Sie seine Eigenschaften zu erlauben, es als Befehl ausführen (es hat .run extension) und führen Sie es über die Eingabeaufforderung wie in “ sudo whateveritwas.laufen“.

Am Ende erhalten Sie eine

  • konfigurierte DB-Serverinstanz, die mit Ihrem Server beginnt
  • pgAdmin III UI Client application

Beachten Sie, dass die installierte Software nicht in Ubuntu Software Center integriert wird., Infolgedessen erhalten Sie keine Sicherheitsupdates von Ubuntu. Die installierte Version wird jedoch eng mit der neuesten Ubuntu-Version übereinstimmen.

Schlüsselfertiges Linux

Eine Ubuntu-basierte PostgreSQL-Appliance ist eine der einfachsten Möglichkeiten, um mit PostgreSQL unter Ubuntu zum Laufen zu kommen. Es ist Teil einer Familie von vorintegrierten schlüsselfertigen Linux-Software-Appliances, die auf Ubuntu 10.04.1 (Lucid LTS) basieren.