Inleiding
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-vraagtaal biedt. Het is conforme aan de standaarden en heeft veel geavanceerde functies zoals betrouwbare transacties en gelijktijdigheid zonder leesvergrendelingen.
Deze handleiding demonstreert hoe u Postgres installeert op een Ubuntu 20.04-server. Het biedt ook enkele instructies voor algemeen databasebeheer.
1-Klik implementeren van een PostgreSQL-database met behulp van DigitalOcean Managed Databases. Laat DigitalOcean zich richten op schalen, onderhoud en upgrades voor uw database.
Vereisten
Om deze tutorial te volgen, hebt u een Ubuntu 20.04-server nodig die is geconfigureerd door onze Initiële serverconfiguratie voor Ubuntu 20.04-gids te volgen. Nadat u deze voorwaardelijke tutorial hebt voltooid, zou uw server een niet-root-gebruiker met sudo-rechten en een basisfirewall moeten hebben.
Stap 1 — PostgreSQL installeren
De standaard repositories van Ubuntu bevatten Postgres-pakketten, dus u kunt deze installeren met behulp van het apt
-verpakkingssysteem.
Als u dat niet recentelijk hebt gedaan, vernieuw dan de lokale pakketindex van uw server:
Vervolgens installeert u het Postgres-pakket samen met een -contrib
-pakket dat enkele aanvullende hulpprogramma’s en functionaliteiten toevoegt:
Zorg ervoor dat de server wordt uitgevoerd met behulp van het systemctl start
-commando:
Nu de software is geïnstalleerd en wordt uitgevoerd, kunnen we doornemen hoe het werkt en hoe het mogelijk verschilt van andere relationele databasebeheersystemen die u mogelijk hebt gebruikt.
Stap 2 — Gebruik van PostgreSQL-rollen en databases
Standaard gebruikt Postgres een concept genaamd “rollen” om authenticatie en autorisatie te beheren. 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 is Postgres ingesteld om peer-authenticatie te gebruiken, wat betekent dat het Postgres-rollen koppelt aan een overeenkomend 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, kunt u zich aanmelden bij 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 uw server door het volgende te typen:
U kunt nu onmiddellijk toegang krijgen tot de PostgreSQL-prompt door het volgende te typen:
Van daaruit kunt u vrij communiceren met het databasesysteem zoals nodig.
Sluit af van de PostgreSQL-prompt door het volgende te typen:
Dit brengt u terug naar de postgres
Linux-opdrachtprompt.
Toegang tot een Postgres-prompt zonder van account te wisselen
Je kunt ook het gewenste commando direct uitvoeren met het postgres-account met sudo
.
Bijvoorbeeld, in het laatste voorbeeld kreeg je instructies 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:
Dit logt je rechtstreeks in op Postgres zonder de tussenliggende bash
-shell.
Nogmaals, je kunt de interactieve Postgres-sessie verlaten door te typen:
Veel gebruiksscenario’s vereisen meer dan één Postgres-rol. Lees verder om te leren hoe je deze configureert.
Stap 3 — Een nieuwe rol aanmaken
Op dit moment heb je alleen de postgres-rol geconfigureerd binnen de database. Je kunt nieuwe rollen aanmaken vanaf de commandoregel met het createrole
-commando. De --interactive
-vlag zal je om de naam van de nieuwe rol vragen en ook of deze superuser-rechten moet hebben.
Als je bent ingelogd als het postgres-account, kun je een nieuwe gebruiker aanmaken door het volgende in te typen:
Als je daarentegen liever sudo
gebruikt voor elk commando zonder over te schakelen van je normale account, typ dan:
Het script zal je keuzes voorleggen en op basis van je antwoorden de juiste Postgres-commando’s uitvoeren om een gebruiker naar jouw specificaties aan te maken.
OutputEnter 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 naar de man
-pagina te kijken:
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 heeft met dezelfde naam waarop hij toegang heeft.
Dit betekent dat als de gebruiker die je in het vorige gedeelte hebt aangemaakt sammy heet, die rol zal proberen verbinding te maken met een database die standaard ook “sammy” wordt genoemd. Je kunt de juiste database maken met het createdb
commando.
Als je bent ingelogd als de postgres-account, zou je iets typen als:
Als je daarentegen liever sudo
gebruikt voor elk commando zonder over te schakelen van je normale account, zou je typen:
Deze flexibiliteit biedt meerdere manieren om databases aan te maken indien 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 maken met het adduser
commando. Dit moet je doen vanaf je non-root-account met sudo
-privileges (wat betekent dat je niet ingelogd bent als de postgres-gebruiker):
Zodra dit nieuwe account beschikbaar is, kun je overschakelen en verbinding maken met de database door te typen:
Of, je kunt dit inline doen:
Dit commando 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 dat doen door de database te specificeren zoals dit:
Zodra je bent ingelogd, kun je je huidige verbindingsinformatie controleren door het volgende te typen:
OutputYou 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 basissyntax 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)
);
Zoals je kunt zien, geven deze commando’s de tabel een naam, en definiëren vervolgens de kolommen evenals het kolomtype en de maximale lengte van de veldgegevens. Je kunt ook optioneel tabelbeperkingen toevoegen voor elke kolom.
Je kunt meer leren over hoe je tabellen in Postgres kunt maken en beheren hier.
Voor demonstratiedoeleinden, maak de volgende tabel aan:
Dit commando zal een tabel maken die speelplaatsuitrusting inventariseert. De eerste kolom in de tabel zal uitrustings-ID-nummers van het type serial
bevatten, wat een automatisch oplopend geheel getal is. Deze kolom heeft ook de beperking van PRIMARY KEY
wat betekent dat de waarden erin uniek en niet-null moeten zijn.
De volgende twee regels creëren kolommen voor respectievelijk het type
en de kleur
van de apparatuur, waarbij geen van beide leeg kan zijn. De regel daarna creëert een locatie
-kolom, evenals een beperking die vereist dat de waarde een van de acht mogelijke waarden is. De laatste regel creëert een datum
-kolom 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 vaste lengte vereisen omdat de lengte of het formaat impliciet is.
Je kunt je nieuwe tabel zien door het volgende in te typen:
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Je speeltuintabel staat hier, maar er is ook iets genaamd playground_equip_id_seq
dat van het type sequence
is. Dit is een representatie van het type serial
dat je aan je equip_id
-kolom hebt gegeven. Dit houdt bij wat het volgende nummer in de reeks is en wordt automatisch aangemaakt voor kolommen van dit type.
Als je alleen de tabel wilt zien zonder de reeks, kun je het volgende typen:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Met een tabel klaar voor gebruik, 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. Voeg bijvoorbeeld een glijbaan en een schommel toe door de tabel waaraan je wilt toevoegen te noemen, de kolommen te benoemen en vervolgens gegevens te verstrekken voor elke kolom, zoals dit:
Je moet voorzichtig zijn bij het invoeren van de gegevens om een paar veelvoorkomende struikelblokken te vermijden. Wikkel de kolomnamen bijvoorbeeld niet in aanhalingstekens, maar de kolomwaarden die je invoert moeten wel tussen aanhalingstekens staan.
Een ander ding om in gedachten te houden is dat je geen waarde invoert voor de equip_id
-kolom. Dit komt doordat dit automatisch wordt gegenereerd wanneer je een nieuwe rij aan de tabel toevoegt.
Haal de informatie op die je hebt toegevoegd door het volgende te typen:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Hier kun je zien 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 deze moet verwijderen, kun je ook de rij uit je tabel verwijderen door het volgende te typen:
Voer opnieuw een query uit op de tabel:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Merk op dat de rij met de glijbaan
niet langer deel uitmaakt van de tabel.
Stap 8 — Kolommen toevoegen en verwijderen uit een tabel
Na het maken van een tabel kun je deze aanpassen door kolommen toe te voegen of te verwijderen. Voeg bijvoorbeeld een kolom toe om het laatste onderhoudsbezoek voor elk stuk apparatuur weer te geven door het volgende te typen:
Als je opnieuw naar de informatie van je tabel kijkt, zul je zien dat de nieuwe kolom is toegevoegd maar dat er geen gegevens zijn ingevoerd:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Als je merkt dat je werkteam een aparte tool gebruikt om de onderhoudsgeschiedenis bij te houden, kun je de kolom verwijderen door het volgende te typen:
Dit verwijdert de kolom last_maint
en alle waarden die erin zijn gevonden, maar laat alle andere gegevens intact.
Stap 9 — Gegevens bijwerken in een tabel
Je hebt tot nu toe 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 invoergegevens kunt wijzigen.
Je kunt de waarden van een bestaande invoer bijwerken door te zoeken naar de record die je wilt en de kolom in te stellen op de waarde die je wilt gebruiken. Je kunt zoeken naar de swing
record (dit zal elke schommel in je tabel matchen) en de kleur ervan veranderen in rood
. Dit kan handig zijn als je de schommel een verfbeurt hebt gegeven:
Je kunt controleren of de bewerking succesvol was door de gegevens opnieuw op te vragen:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Zoals je kunt zien, staat de glijbaan nu geregistreerd als zijnde rood.
Conclusie
Je bent nu ingesteld met PostgreSQL op je Ubuntu 20.04-server. Als je meer wilt leren over Postgres en hoe je het kunt gebruiken, raden we je aan om de volgende gidsen te bekijken:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04