Hoe PostgreSQL te installeren en te gebruiken op Ubuntu 22.04

Introductie

Relationele databasebeheersystemen zijn een essentieel onderdeel van veel websites en applicaties. Ze bieden een gestructureerde manier om informatie op te slaan, te organiseren en te benaderen.

PostgreSQL, of Postgres, is een relationeel databasebeheersysteem dat een implementatie van de SQL-querytaal biedt. Het is standaardcompliant en heeft veel geavanceerde functies zoals betrouwbare transacties en gelijktijdigheid zonder leesvergrendelingen.

Deze handleiding laat zien hoe u Postgres installeert op een Ubuntu 22.04-server. Het biedt ook enkele instructies voor algemeen databasebeheer.

Vereisten

Om deze handleiding te volgen, heeft u een Ubuntu 22.04-server nodig die is geconfigureerd door onze Initiële serverconfiguratie voor Ubuntu 22.04 handleiding te volgen. Na het voltooien van deze voorwaardelijke handleiding, zou uw server een niet-root-gebruiker moeten hebben met sudo-rechten en een basisfirewall.

Stap 1 — PostgreSQL installeren

De standaard repositories van Ubuntu bevatten Postgres-pakketten, dus je kunt deze installeren met behulp van het apt-verpakkingssysteem.

Als je dit niet recentelijk hebt gedaan, vernieuw dan de lokale pakketindex van je server:

  1. sudo apt update

Vervolgens installeer je het Postgres-pakket samen met een -contrib-pakket dat wat extra hulpprogramma’s en functionaliteit toevoegt:

  1. sudo apt install postgresql postgresql-contrib

Zorg ervoor dat de server draait met behulp van het systemctl start-commando:

  1. sudo systemctl start postgresql.service

Nu de software is geïnstalleerd en draait, kunnen we bespreken hoe het werkt en hoe het mogelijk verschilt van andere relationele databasebeheersystemen die je hebt gebruikt.

Stap 2 — PostgreSQL rollen en databases gebruiken

Standaard gebruikt Postgres een concept genaamd rollen om authenticatie en autorisatie te behandelen. Deze zijn op sommige manieren vergelijkbaar met reguliere Unix-stijl accounts, maar Postgres maakt geen onderscheid tussen gebruikers en groepen en geeft in plaats daarvan de voorkeur aan de meer flexibele term “rol”.

Bij installatie wordt Postgres ingesteld om peer authenticatie te gebruiken, wat betekent dat het Postgres-rollen koppelt aan een overeenkomstig Unix/Linux systeemaccount. Als een rol binnen Postgres bestaat, kan een Unix/Linux gebruikersnaam met dezelfde naam zich aanmelden als die rol.

Het installatieproces heeft een gebruikersaccount genaamd postgres aangemaakt dat is gekoppeld aan de standaard Postgres-rol. Om Postgres te gebruiken, kun je inloggen op dat account.

Er zijn een paar manieren om dit account te gebruiken om toegang te krijgen tot Postgres.

Overschakelen naar het postgres-account

Wissel over naar het postgres-account op je server door te typen:

  1. sudo -i -u postgres

Je kunt nu onmiddellijk toegang krijgen tot de PostgreSQL-prompt door te typen:

  1. psql

Vanaf daar ben je vrij om te communiceren met het databasesysteem zoals nodig.

Verlaat de PostgreSQL-prompt door te typen:

  1. \q

Dit brengt je terug naar de opdrachtprompt van de Linux-gebruiker postgres.

Toegang tot een Postgres-prompt zonder van account te wisselen

Je kunt ook het commando uitvoeren dat je wilt met het postgres account rechtstreeks met sudo.

Bijvoorbeeld, in het laatste voorbeeld werd je geïnstrueerd om naar de Postgres-prompt te gaan door eerst over te schakelen naar de postgres gebruiker en vervolgens psql uit te voeren om de Postgres-prompt te openen. Je kunt dit in één stap doen door het enkele commando psql uit te voeren als de postgres gebruiker met sudo, zoals dit:

  1. sudo -u postgres psql

Dit zal je direct inloggen op Postgres zonder de tussenliggende bash shell.

Nogmaals, je kunt de interactieve Postgres-sessie verlaten door te typen:

  1. \q

Veel gebruiksscenario’s vereisen meer dan één Postgres-rol. Lees verder om te leren hoe je deze kunt configureren.

Stap 3 — Het maken van een nieuwe rol

Op dit moment heb je de postgres rol geconfigureerd binnen de database. Je kunt nieuwe rollen aanmaken vanaf de commandoregel met het createuser commando. De --interactive vlag zal je vragen om de naam van de nieuwe rol en ook vragen of deze supergebruikersrechten moet hebben.

Als je bent ingelogd als het postgres account, kun je een nieuwe gebruiker aanmaken door te typen:

  1. createuser --interactive

Als je daarentegen de voorkeur geeft aan het gebruik van sudo voor elk commando zonder over te schakelen van je normale account, typ dan:

  1. sudo -u postgres createuser --interactive

Het script zal je bepaalde keuzes voorleggen en op basis van jouw antwoorden de juiste Postgres-commando’s uitvoeren om een gebruiker naar jouw specificaties aan te maken.

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

Je kunt meer controle krijgen door enkele extra vlaggen door te geven. Bekijk de opties door de man-pagina voor het createuser-commando te bekijken:

  1. man createuser

Je installatie van Postgres heeft nu een nieuwe gebruiker, maar je hebt nog geen databases toegevoegd. Het volgende gedeelte beschrijft dit proces.

Stap 4 — Een nieuwe database aanmaken

Nog een aanname die het authenticatiesysteem van Postgres standaard maakt, is dat voor elke rol die wordt gebruikt om in te loggen, die rol een database met dezelfde naam zal hebben waarop deze standaard toegang heeft.

Dit betekent dat als de gebruiker die je in de vorige sectie hebt aangemaakt sammy heet, die rol standaard zal proberen verbinding te maken met een database die ook “sammy” heet. Je kunt de juiste database aanmaken met het createdb-commando.

Als je bent ingelogd als de postgres-account, zou je iets typen als:

  1. createdb sammy

Als je in plaats daarvan de voorkeur geeft aan het gebruik van sudo voor elk commando zonder over te schakelen van je normale account, zou je typen:

  1. sudo -u postgres createdb sammy

Deze flexibiliteit biedt meerdere manieren om databases aan te maken zoals nodig.

Stap 5 — Het openen van een Postgres-prompt met de nieuwe rol

Om in te loggen met peer-authenticatie, heb je een Linux-gebruiker nodig met dezelfde naam als je Postgres-rol en database.

Als je geen overeenkomende Linux-gebruiker beschikbaar hebt, kun je er een aanmaken met het adduser-commando. Dit moet je doen vanaf je niet-root-account met sudo-rechten (wat betekent dat je niet ingelogd bent als de postgres-gebruiker):

  1. sudo adduser sammy

Zodra dit nieuwe account beschikbaar is, kun je overschakelen en verbinding maken met de database door het volgende te typen:

  1. sudo -i -u sammy
  2. psql

Of, je kunt dit inline doen:

  1. sudo -u sammy psql

Deze opdracht logt je automatisch in, ervan uitgaande dat alle componenten correct zijn geconfigureerd.

Als je wilt dat je gebruiker verbinding maakt met een andere database, kun je dit doen door de database te specificeren zoals dit:

  1. psql -d postgres

Eenmaal ingelogd, kun je je huidige verbindingsinformatie controleren door het volgende te typen:

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

Dit is handig als je verbinding maakt met niet-standaard databases of met niet-standaard gebruikers.

Stap 6 — Tabellen maken en verwijderen

Nu je weet hoe je verbinding kunt maken met het PostgreSQL-databasesysteem, kun je enkele basisbeheertaken voor Postgres leren.

De basis syntaxis voor het maken van tabellen is als volgt:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

Met dit commando geef je de tabel een naam en definieer je vervolgens de kolommen, evenals het kolomtype en de maximale lengte van de veldgegevens. Optioneel kun je beperkingen toevoegen voor elke kolom.

Je kunt meer leren over het maken van tabellen door onze gids te volgen over Hoe tabellen te maken en beheren in SQL.

Voor demonstratiedoeleinden maak de volgende tabel:

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

Dit commando zal een tabel maken die speeltoestellen inventariseert. De eerste kolom in de tabel zal apparatuur-ID-nummers van het serial-type bevatten, wat een automatisch incrementele integer is. Deze kolom heeft ook de beperking PRIMARY KEY, wat betekent dat de waarden erin uniek moeten zijn en niet leeg.

De volgende twee regels maken kolommen voor het type en de kleur van de apparatuur, respectievelijk, waarvan geen van beide leeg kan zijn. De regel daarna maakt een kolom locatie met een beperking die vereist dat de waarde een van acht mogelijke waarden is. De laatste regel maakt een kolom datum die de datum registreert waarop je de apparatuur hebt geïnstalleerd.

Voor twee van de kolommen (equip_id en install_date) specificeert het commando geen veldlengte. De reden hiervoor is dat sommige gegevenstypen geen ingestelde lengte vereisen omdat de lengte of het formaat geïmpliceerd is.

Bestudeer je nieuwe tabel door het volgende te typen:

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

Je speeltafel is hier, maar er is ook iets dat playground_equip_id_seq wordt genoemd en van het type sequence is. Dit is een representatie van het type serial dat je aan je kolom equip_id hebt gegeven. Dit houdt bij welk volgende nummer in de sequentie komt en wordt automatisch aangemaakt voor kolommen van dit type.

Als je alleen de tabel zonder de sequentie wilt bekijken, kun je typen:

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

Met een tabel bij de hand, laten we deze gebruiken om te oefenen met het beheren van gegevens.

Stap 7 — Gegevens toevoegen, opvragen en verwijderen in een tabel

Nu je een tabel hebt, kun je wat gegevens invoegen. Als voorbeeld, voeg een glijbaan en een schommel toe door de tabel waaraan je wilt toevoegen te noemen, de kolommen te benoemen en vervolgens gegevens voor elke kolom te verstrekken, zoals dit:

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

Wees voorzichtig bij het invoeren van de gegevens om enkele veelvoorkomende struikelblokken te vermijden. Om te beginnen, plaats de kolomnamen niet tussen aanhalingstekens, maar de kolomwaarden die je invoert moeten wel tussen aanhalingstekens staan.

Nog iets om in gedachten te houden is dat je geen waarde invoert voor de kolom equip_id. Dit komt doordat deze automatisch wordt gegenereerd wanneer je een nieuwe rij aan de tabel toevoegt.

Haal de informatie op die je hebt toegevoegd door te typen:

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

Merk op dat je equip_id succesvol is ingevuld en dat al je andere gegevens correct zijn georganiseerd.

Als de glijbaan op de speelplaats breekt en je moet hem verwijderen, kun je ook de rij uit je tabel verwijderen door het volgende te typen:

  1. DELETE FROM playground WHERE type = 'slide';

Voer de tabel opnieuw in:

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

Merk op dat de rij slide niet langer deel uitmaakt van de tabel.

Stap 8 — Kolommen toevoegen en verwijderen uit een tabel

Na het maken van een tabel, kunt u deze wijzigen door kolommen toe te voegen of te verwijderen. Voeg een kolom toe om het laatste onderhoudsbezoek voor elk stuk apparatuur weer te geven door het volgende te typen:

  1. ALTER TABLE playground ADD last_maint date;

Bekijk opnieuw de informatie van je tabel. Er is een nieuwe kolom toegevoegd maar er zijn geen gegevens ingevoerd:

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

Als je merkt dat je werkploeg een aparte tool gebruikt om onderhoudsgeschiedenis bij te houden, kun je de kolom verwijderen door het volgende te typen:

  1. ALTER TABLE playground DROP last_maint;

Dit verwijdert de kolom last_maint en alle waarden die erin worden gevonden, maar laat alle andere gegevens intact.

Stap 9 — Gegevens bijwerken in een tabel

Tot nu toe heb je geleerd hoe je records aan een tabel kunt toevoegen en hoe je ze kunt verwijderen, maar deze tutorial heeft nog niet behandeld hoe je bestaande items kunt aanpassen.

U kunt de waarden van een bestaande invoer bijwerken door de record op te vragen die u wilt en de kolom in te stellen op de waarde die u wilt gebruiken. U kunt zoeken naar de swing record (dit zal elke swing in uw tabel matchen) en de kleur ervan wijzigen naar rood. Dit kan handig zijn als u de schommel een verfbeurt heeft gegeven:

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

U kunt verifiëren dat de bewerking succesvol was door de gegevens opnieuw op te vragen:

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

De glijbaan is nu geregistreerd als zijnde rood.

Conclusie

U bent nu ingesteld met PostgreSQL op uw Ubuntu 22.04-server. Als u meer wilt weten over Postgres en hoe u het kunt gebruiken, raden we u aan de volgende handleidingen te bekijken:

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-22-04