So installieren und verwenden Sie PostgreSQL unter CentOS 7

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 unter CentOS 7 installiert wird, und es werden einige grundlegende Verwendungsmöglichkeiten erläutert.

Installation

Die Standard-Repositorys von CentOS enthalten Postgres-Pakete, sodass wir sie problemlos mit dem Paketsystem + yum + installieren können.

Installieren Sie das postgresql-server-Paket und das contrib-Paket, das einige zusätzliche Dienstprogramme und Funktionen hinzufügt:

sudo yum install postgresql-server postgresql-contrib

Akzeptieren Sie die Aufforderung, indem Sie mit einem "+ y +" antworten.

Nachdem unsere Software installiert ist, müssen wir einige Schritte ausführen, bevor wir sie verwenden können.

Erstellen Sie einen neuen PostgreSQL-Datenbankcluster:

sudo postgresql-setup initdb

Standardmäßig erlaubt PostgreSQL keine Kennwortauthentifizierung. Wir werden dies ändern, indem wir die Konfiguration der hostbasierten Authentifizierung (HBA) bearbeiten.

Öffnen Sie die HBA-Konfiguration mit Ihrem bevorzugten Texteditor. Wir werden vi verwenden:

sudo vi /var/lib/pgsql/data/pg_hba.conf

Suchen Sie die Zeilen, die wie folgt aussehen, am unteren Rand der Datei:

pg_hba.conf Auszug (original)

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

Dann ersetze "ident" durch "md5", so dass sie so aussehen:

pg_hba.conf Auszug (aktualisiert)

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Speichern und schließen. PostgreSQL ist jetzt so konfiguriert, dass die Kennwortauthentifizierung zulässig ist.

Starten und aktivieren Sie nun PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

PostgreSQL kann jetzt verwendet werden. Wir können untersuchen, wie es funktioniert und wie es sich möglicherweise von ähnlichen Datenbankverwaltungssystemen unterscheidet, die Sie verwendet haben.

Verwenden von PostgreSQL-Rollen und -Datenbanken

Standardmäßig verwendet Postgres ein Konzept mit der Bezeichnung "Rollen", um die Authentifizierung und Autorisierung zu unterstützen. 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 Identitätsauthentifizierung eingerichtet. Dies bedeutet, dass Postgres-Rollen einem passenden Unix / Linux-Systemkonto zugeordnet werden. Wenn eine Postgres-Rolle vorhanden ist, kann sie angemeldet werden, indem Sie sich bei dem zugeordneten Linux-Systemkonto anmelden.

Bei der Installation wurde ein Benutzerkonto mit dem Namen "+ postgres +" erstellt, das der Standardrolle "Postgres" zugeordnet ist. Um Postgres nutzen zu können, müssen wir uns bei diesem Konto anmelden. Sie können dies tun, indem Sie Folgendes eingeben:

sudo -i -u postgres

Sie werden nach Ihrem normalen Benutzerpasswort gefragt und erhalten dann eine Shell-Eingabeaufforderung für den Benutzer "+ postgres +".

Sie können sofort eine Postgres-Eingabeaufforderung erhalten, indem Sie Folgendes eingeben:

psql

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

Wir werden jedoch ein wenig erläutern, wie andere Rollen und Datenbanken verwendet werden, damit Sie die Flexibilität haben, mit welchem ​​Benutzer und welcher Datenbank Sie arbeiten möchten.

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

\q

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

Erstellen Sie eine neue Rolle

Über das Linux-Konto "+ postgres " haben Sie die Möglichkeit, sich beim Datenbanksystem anzumelden. Wir zeigen Ihnen jedoch auch, wie Sie zusätzliche Rollen erstellen. Das Linux-Konto " postgres +", das der Verwaltungsrolle "Postgres" zugeordnet ist, hat Zugriff auf einige Dienstprogramme zum Erstellen von Benutzern und Datenbanken.

Wir können eine neue Rolle erstellen, indem wir Folgendes eingeben:

createuser --interactive

Dies ist im Grunde ein interaktives Shell-Skript, das die richtigen Postgres-Befehle aufruft, um einen Benutzer nach Ihren Vorgaben zu erstellen. Es werden Ihnen nur zwei Fragen gestellt: der Name der Rolle und ob es sich um einen Superuser handeln soll. 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

Die Art und Weise, wie Postgres standardmäßig eingerichtet wird (Authentifizierung von Rollen, die von übereinstimmenden Systemkonten angefordert werden), geht auch von der Annahme aus, dass eine übereinstimmende Datenbank für die Rolle vorhanden ist, zu der eine Verbindung hergestellt werden soll.

Wenn ich also einen Benutzer mit dem Namen "+ test1 " habe, versucht diese Rolle standardmäßig, eine Verbindung zu einer Datenbank mit dem Namen " test1 +" herzustellen.

Sie können die entsprechende Datenbank erstellen, indem Sie einfach diesen Befehl als Benutzer + postgres + aufrufen:

createdb

Stellen Sie mit dem neuen Benutzer eine Verbindung zu Postgres her

Nehmen wir an, Sie haben ein Linux-Systemkonto mit dem Namen "+ test1 " (Sie können eines mit dem folgenden Befehl erstellen: " sudo adduser test1 ") und Sie haben eine Postgres-Rolle und -Datenbank mit dem Namen " test1 +" erstellt.

Sie können zum Linux-Systemkonto wechseln, indem Sie Folgendes eingeben:

sudo -i -u

Sie können dann eine Verbindung zur + test1 + Datenbank als + test1 + Postgres-Rolle herstellen, indem Sie Folgendes eingeben:

psql

Dies meldet sich automatisch an, sofern alle Komponenten konfiguriert wurden.

Wenn Sie möchten, dass Ihr Benutzer eine Verbindung zu einer anderen Datenbank herstellt, können Sie dies tun, indem Sie die Datenbank wie folgt angeben (stellen Sie sicher, dass Sie an der Eingabeaufforderung "+ \ q +" eingeben):

psql -d

Sie erhalten Informationen über den Postgres-Benutzer, als den Sie angemeldet sind, und über die Datenbank, mit der Sie derzeit verbunden sind, indem Sie Folgendes eingeben:

\conninfo
Output:You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Dies kann Sie an Ihre aktuellen Einstellungen erinnern, 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, werden wir zunächst einige grundlegende Aufgaben ausführen.

Zunächst erstellen wir eine Tabelle zum Speichern einiger Daten. 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 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 den Gerätetyp und die Farbe an, von denen jede nicht leer sein darf. Anschließend erstellen wir eine Standortspalte und eine Einschränkung, für die 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    | postgres
public | playground_equip_id_seq | sequence | postgres
(2 rows)

Wie Sie sehen, haben wir unseren Spielplatztisch, aber wir haben auch etwas mit dem Namen "+ playground_equip_id_seq ", das vom Typ " sequence " ist. Dies ist eine Darstellung des "seriellen" Typs, den wir unserer Spalte " equip_id +" gegeben haben. Dies verfolgt die nächste Nummer in der Sequenz.

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

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

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

Nachdem wir eine Tabelle erstellt haben, können wir einige Daten einfügen.

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 ein paar Dinge beachten. 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 unsere Folie bricht und wir sie vom Spielplatz entfernen, 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 ihm einen Anstrich geben würden:

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 CentOS 7-Server eingerichtet. Mit Postgres gibt es jedoch noch viel zu lernen. Obwohl viele von ihnen für Ubuntu geschrieben wurden, sollten diese Tutorials hilfreich sein, um mehr über PostgreSQL zu erfahren:

Related