So installieren und verwenden Sie PostgreSQL unter Ubuntu 16.04

Einführung

Relationale Datenbankverwaltungssysteme sind eine Schlüsselkomponente vieler Websites und Anwendungen. Sie bieten eine strukturierte Möglichkeit zum Speichern, Organisieren und Zugreifen auf Informationen.

  • PostgreSQL * oder Postgres ist ein relationales Datenbankverwaltungssystem, das eine Implementierung der SQL-Abfragesprache bietet. Es ist eine beliebte Wahl für viele kleine und große Projekte und hat den Vorteil, dass es standardkonform ist und über viele erweiterte Funktionen wie zuverlässige Transaktionen und Parallelität ohne Lesesperren verfügt.

In diesem Handbuch wird gezeigt, wie Postgres auf einer Ubuntu 16.04 VPS-Instanz installiert wird, und es werden einige grundlegende Verwendungsmöglichkeiten erläutert.

Installation

Die Standard-Repositorys von Ubuntu enthalten Postgres-Pakete, so dass wir diese einfach mit dem Paketsystem "+ apt +" installieren können.

Da wir in dieser Sitzung zum ersten Mal "+ apt " verwenden, müssen wir unseren lokalen Paketindex aktualisieren. Wir können dann das Postgres-Paket und ein " -contrib +" -Paket installieren, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

Nachdem unsere Software installiert ist, können wir untersuchen, wie sie funktioniert und wie sie sich möglicherweise von ähnlichen Datenbankverwaltungssystemen unterscheidet, die Sie verwendet haben.

Verwenden von PostgreSQL-Rollen und -Datenbanken

Standardmäßig verwendet Postgres für die Authentifizierung und Autorisierung ein Konzept mit der Bezeichnung "Rollen". Diese ähneln in gewisser Weise normalen Unix-Konten, aber Postgres unterscheidet nicht zwischen Benutzern und Gruppen und bevorzugt stattdessen den flexibleren Begriff „Rolle“.

Bei der Installation ist Postgres für die Verwendung der * ident * -Authentifizierung eingerichtet. Dies bedeutet, dass Postgres-Rollen einem passenden Unix / Linux-Systemkonto zugeordnet werden. Wenn in Postgres eine Rolle vorhanden ist, kann sich ein Unix / Linux-Benutzername mit demselben Namen als diese Rolle anmelden.

Es gibt verschiedene Möglichkeiten, dieses Konto für den Zugriff auf Postgres zu verwenden.

Umschalten auf das postgres Konto

Bei der Installation wurde ein Benutzerkonto mit dem Namen "+ postgres +" erstellt, das der Standardrolle "Postgres" zugeordnet ist. Um Postgres nutzen zu können, können wir uns in dieses Konto einloggen.

Wechseln Sie zum "+ postgres +" - Konto auf Ihrem Server, indem Sie Folgendes eingeben:

sudo -i -u postgres

Sie können jetzt sofort auf eine Postgres-Eingabeaufforderung zugreifen, indem Sie Folgendes eingeben:

psql

Sie werden angemeldet und können sofort mit dem Datenbankverwaltungssystem interagieren.

Verlassen Sie die PostgreSQL-Eingabeaufforderung, indem Sie Folgendes eingeben:

\q

Sie sollten sich nun wieder in der Eingabeaufforderung von + postgres + Linux befinden.

Auf eine Postgres-Eingabeaufforderung zugreifen, ohne das Konto zu wechseln

Sie können den gewünschten Befehl auch mit dem Konto "+ postgres " direkt mit " sudo +" ausführen.

Zum Beispiel wollten wir im letzten Beispiel nur zu einer Postgres-Eingabeaufforderung gelangen. Wir könnten dies in einem Schritt tun, indem wir den einzelnen Befehl "+ psql " als " postgres " - Benutzer mit " sudo +" wie folgt ausführen:

sudo -u postgres psql

Dadurch werden Sie direkt bei Postgres angemeldet, ohne dass die zwischengeschaltete Shell "+ bash +" benötigt wird.

Sie können die interaktive Postgres-Sitzung wieder beenden, indem Sie Folgendes eingeben:

\q

Erstellen Sie eine neue Rolle

Derzeit ist nur die Rolle "+ postgres " in der Datenbank konfiguriert. Wir können neue Rollen über die Befehlszeile mit dem Befehl ` createrole ` erstellen. Das " - interaktives +" - Flag fordert Sie zur Eingabe der erforderlichen Werte auf.

Wenn Sie als "+ postgres +" - Konto angemeldet sind, können Sie einen neuen Benutzer erstellen, indem Sie Folgendes eingeben:

createuser --interactive

Wenn Sie stattdessen lieber "+ sudo +" für jeden Befehl verwenden möchten, ohne von Ihrem normalen Konto zu wechseln, können Sie Folgendes eingeben:

sudo -u postgres createuser --interactive

Das Skript fordert Sie zur Auswahl auf und führt basierend auf Ihren Antworten die richtigen Postgres-Befehle aus, um einen Benutzer nach Ihren Vorgaben zu erstellen.

OutputEnter name of role to add:
Shall the new role be a superuser? (y/n)

Sie können mehr Kontrolle erhalten, indem Sie einige zusätzliche Flags übergeben. Schauen Sie sich die Optionen auf der Seite "+ man +" an:

man createuser

Erstellen Sie eine neue Datenbank

Standardmäßig geht das Postgres-Authentifizierungssystem auch davon aus, dass es eine Datenbank mit demselben Namen wie die zum Anmelden verwendete Rolle gibt, auf die die Rolle Zugriff hat.

Wenn wir also im letzten Abschnitt einen Benutzer mit dem Namen "+" erstellt haben, versucht diese Rolle, eine Verbindung zu einer Datenbank herzustellen, die standardmäßig auch als " sammy " bezeichnet wird. Sie können die entsprechende Datenbank mit dem Befehl " createdb +" erstellen.

Wenn Sie als "+ postgres +" - Konto angemeldet sind, geben Sie Folgendes ein:

createdb

Wenn Sie stattdessen lieber "+ sudo +" für jeden Befehl verwenden möchten, ohne von Ihrem normalen Konto zu wechseln, geben Sie Folgendes ein:

sudo -u postgres createdb

Öffnen Sie eine Postgres-Eingabeaufforderung mit der neuen Rolle

Um sich mit einer auf "+ ident +" basierenden Authentifizierung anzumelden, benötigen Sie einen Linux-Benutzer mit demselben Namen wie Ihre Postgres-Rolle und -Datenbank.

Wenn Sie keinen passenden Linux-Benutzer zur Verfügung haben, können Sie einen mit dem Befehl "+ adduser " erstellen. Sie müssen dies von einem Konto mit den Rechten " sudo " aus tun (das nicht als " postgres +" - Benutzer angemeldet ist):

sudo adduser

Sobald Sie über das entsprechende Konto verfügen, können Sie entweder wechseln und eine Verbindung zur Datenbank herstellen, indem Sie Folgendes eingeben:

sudo -i -u
psql

Oder Sie können dies inline tun:

sudo -u  psql

Sie werden automatisch angemeldet, sofern alle Komponenten ordnungsgemäß konfiguriert wurden.

Wenn Sie möchten, dass Ihr Benutzer eine Verbindung zu einer anderen Datenbank herstellt, können Sie die Datenbank folgendermaßen angeben:

psql -d

Sobald Sie angemeldet sind, können Sie Ihre aktuellen Verbindungsinformationen abrufen, indem Sie Folgendes eingeben:

\conninfo
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

Dies kann hilfreich sein, wenn Sie eine Verbindung zu nicht standardmäßigen Datenbanken oder mit nicht standardmäßigen Benutzern herstellen.

Tabellen erstellen und löschen

Nachdem Sie nun wissen, wie Sie eine Verbindung zum PostgreSQL-Datenbanksystem herstellen, können Sie einige grundlegende Aufgaben ausführen.

Zunächst können wir eine Tabelle zum Speichern einiger Daten erstellen. Erstellen wir eine Tabelle, die Spielgeräte beschreibt.

Die grundlegende Syntax für diesen Befehl sieht ungefähr so ​​aus:

CREATE TABLE  (
    () ,
    (),
    ()
);

Wie Sie sehen, geben wir der Tabelle einen Namen und definieren dann die gewünschten Spalten sowie den Spaltentyp und die maximale Länge der Felddaten. Optional können wir auch Tabelleneinschränkungen für jede Spalte hinzufügen.

Weitere Informationen zum Erstellen und Verwalten von Tabellen in Postgres finden Sie unter https://digitalocean.com/community/articles/how-to-create-remove-manage-tables-in-postgresql-on-a-cloud-server[ Hier.

Für unsere Zwecke erstellen wir eine einfache Tabelle wie die folgende:

CREATE TABLE playground (
   equip_id serial PRIMARY KEY,
   type varchar (50) NOT NULL,
   color varchar (25) NOT NULL,
   location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
   install_date date
);

Wir haben einen Spieltisch gemacht, der die Geräte, die wir haben, inventarisiert. Dies beginnt mit einer Geräte-ID, die vom Typ "+ serial " ist. Dieser Datentyp ist eine automatisch inkrementierende Ganzzahl. Wir haben dieser Spalte die Bedingung " Primärschlüssel +" gegeben, was bedeutet, dass die Werte eindeutig und nicht null sein müssen.

Für zwei unserer Spalten (+ equip_id + und + install_date +) haben wir keine Feldlänge angegeben. Dies liegt daran, dass für einige Spaltentypen keine festgelegte Länge erforderlich ist, da die Länge vom Typ vorgegeben wird.

Wir geben dann Spalten für die Ausrüstung "+ Typ" und "+ Farbe" an, von denen jede nicht leer sein kann. Wir erstellen eine "+ location +" - Spalte und erstellen eine Einschränkung, bei der der Wert einer von acht möglichen Werten sein muss. Die letzte Spalte ist eine Datumsspalte, in der das Installationsdatum der Ausrüstung angegeben ist.

Wir können unsere neue Tabelle sehen, indem wir Folgendes eingeben:

\d
Output                  List of relations
Schema |          Name           |   Type   | Owner
--------+-------------------------+----------+-------
public | playground              | table    | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)

Unser Spielplatztisch ist hier, aber wir haben auch etwas mit dem Namen "+ playground_equip_id_seq ", das vom Typ " sequence " ist. Dies ist eine Darstellung des Typs " serial ", den wir in unserer Spalte " equip_id +" angegeben haben. Dies verfolgt die nächste Nummer in der Sequenz und wird automatisch für Spalten dieses Typs erstellt.

Wenn Sie nur die Tabelle ohne die Sequenz sehen möchten, können Sie Folgendes eingeben:

\dt
Output          List of relations
Schema |    Name    | Type  | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)

Hinzufügen, Abfragen und Löschen von Daten in einer Tabelle

Jetzt haben wir eine Tabelle, in die wir einige Daten einfügen können.

Fügen wir eine Folie und eine Schaukel hinzu. Dazu rufen wir die Tabelle auf, zu der wir hinzufügen möchten, benennen die Spalten und stellen dann Daten für jede Spalte bereit. Unsere Rutsche und Schaukel könnte so hinzugefügt werden:

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

Sie sollten bei der Eingabe der Daten vorsichtig sein, um einige häufige Probleme zu vermeiden. Bedenken Sie zunächst, dass die Spaltennamen nicht in Anführungszeichen gesetzt werden dürfen, aber die Werte der Spalte, die Sie eingeben, Anführungszeichen benötigen.

Beachten Sie auch, dass wir keinen Wert für die Spalte "+ equip_id +" eingeben. Dies liegt daran, dass dies automatisch generiert wird, wenn eine neue Zeile in der Tabelle erstellt wird.

Wir können dann die Informationen, die wir hinzugefügt haben, zurückerhalten, indem wir Folgendes eingeben:

SELECT * FROM playground;
Output equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       1 | slide | blue   | south     | 2014-04-28
       2 | swing | yellow | northwest | 2010-08-16
(2 rows)

Hier können Sie sehen, dass unsere + equip_id + erfolgreich ausgefüllt wurde und dass alle anderen Daten korrekt organisiert wurden.

Wenn die Folie auf dem Spielplatz bricht und wir sie entfernen müssen, können wir die Zeile auch von unserem Tisch entfernen, indem wir Folgendes eingeben:

DELETE FROM playground WHERE type = 'slide';

Wenn wir unsere Tabelle erneut abfragen, sehen wir, dass unsere Folie nicht mehr Teil der Tabelle ist:

SELECT * FROM playground;
Output equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       2 | swing | yellow | northwest | 2010-08-16
(1 row)

Hinzufügen und Löschen von Spalten aus einer Tabelle

Wenn wir eine Tabelle ändern möchten, nachdem sie erstellt wurde, um eine zusätzliche Spalte hinzuzufügen, können wir dies auf einfache Weise tun.

Wir können eine Spalte hinzufügen, um den letzten Wartungsbesuch für jedes Gerät anzuzeigen, indem wir Folgendes eingeben:

ALTER TABLE playground ADD last_maint date;

Wenn Sie Ihre Tabelleninformationen erneut anzeigen, wird angezeigt, dass die neue Spalte hinzugefügt wurde (es wurden jedoch keine Daten eingegeben):

SELECT * FROM playground;
Output equip_id | type  | color  | location  | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
       2 | swing | yellow | northwest | 2010-08-16   |
(1 row)

Wir können eine Spalte genauso einfach löschen. Wenn wir feststellen, dass unser Arbeitsteam ein separates Tool verwendet, um den Wartungsverlauf zu verfolgen, können wir die Spalte hier durch Eingabe von Folgendes entfernen:

ALTER TABLE playground DROP last_maint;

So aktualisieren Sie Daten in einer Tabelle

Wir wissen, wie Sie Datensätze zu einer Tabelle hinzufügen und löschen, haben jedoch noch nicht erläutert, wie Sie vorhandene Einträge ändern können.

Sie können die Werte eines vorhandenen Eintrags aktualisieren, indem Sie den gewünschten Datensatz abfragen und die Spalte auf den Wert setzen, den Sie verwenden möchten. Wir können nach dem "Schwung" -Datensatz fragen (dies entspricht jedem Schwung in unserer Tabelle) und dessen Farbe in "Rot" ändern. Dies könnte nützlich sein, wenn wir dem Schaukel-Set einen Anstrich gegeben haben:

UPDATE playground SET color = 'red' WHERE type = 'swing';

Wir können überprüfen, ob der Vorgang erfolgreich war, indem wir unsere Daten erneut abfragen:

SELECT * FROM playground;
Output equip_id | type  | color | location  | install_date
----------+-------+-------+-----------+--------------
       2 | swing | red   | northwest | 2010-08-16
(1 row)

Wie Sie sehen, ist unsere Folie jetzt als rot registriert.

Fazit

Sie sind jetzt mit PostgreSQL auf Ihrem Ubuntu 16.04-Server eingerichtet. Mit Postgres gibt es jedoch noch viel zu lernen. Hier einige weitere Anleitungen zur Verwendung von Postgres: