Installationsguider

Installera PostgreSQL och grundinställningar

Så installerar du PostgreSQL på Windows, macOS, Ubuntu och Docker och kommer igång med pgAdmin, roller, databaser och de viktigaste psql-kommandona.

Aurora YazılımRedaktionen 6 min läsning
Installera PostgreSQL och grundinställningar
Hur installerar man PostgreSQL?

För att installera PostgreSQL använder du det officiella installationsprogrammet på postgresql.org i Windows, Homebrew i macOS, apt-paketet i Ubuntu eller den officiella postgres-avbilden i Docker. Därefter ansluter du med superanvändaren postgres, skapar en separat roll och databas för din applikation och verifierar anslutningen med psql eller pgAdmin.

Vad är PostgreSQL och varför välja det?

PostgreSQL är ett öppet och gratis relationsdatabassystem med en historia som närmar sig fyrtio år. Tack vare transaktionssäkerhet (ACID), kraftfulla datatyper, stöd för JSONB och avancerade indexeringsalternativ används det i allt från små projekt till applikationer med mycket trafik.

För data där konsekvens är avgörande, som bokningar, lager, order eller annonser, är PostgreSQL ett tryggt val. Därför är transaktionssäkerhet viktig i system där många personer rör samma post samtidigt, som ett hotellsystem eller en e-handelsplattform. Vill du snabbt prova PHP och databas lokalt är installationen av XAMPP en praktisk start. MySQL används också ofta i liknande sammanhang, och vill du jämföra de två systemen kan du läsa vår guide till att installera MySQL.

I den här artikeln går vi igenom allt du behöver första dagen efter installationen: skapa roll och databas, inställningar för fjärranslutning, säkerhetskopiering och de vanligaste felmeddelandena.

Innan du installerar

Om du reder ut några beslut innan du börjar installera får du färre problem senare. Bestäm redan från början vilken huvudversion du ska använda på produktionsservern, eftersom byte mellan huvudversioner kräver säkerhetskopiering och återställning eller pg_upgrade.

Valet av metod är också viktigt. På en utvecklingsdator är Docker det enklaste sättet att köra olika versioner mellan projekt utan konflikter. På en produktionsserver ger en tjänst som installeras med operativsystemets pakethanterare en mer förutsägbar struktur när det gäller säkerhetsuppdateringar, loggövervakning och automatisk start.

  • En användare med administratörsbehörighet (Windows) eller sudo (macOS, Linux)
  • Att standardporten 5432 inte används av något annat program
  • Aktuell huvudversion som stöds enligt den officiella webbplatsen: postgresql.org
  • Ett starkt lösenord för superanvändaren, som du sparar på ett säkert ställe
  • En fungerande Docker-installation om du ska installera med Docker

Installation per operativsystem

Alla metoder nedan installerar från officiella eller officiellt rekommenderade källor. Byt ut versionsplatshållaren i kommandona mot den huvudversion du själv har valt.

Windows

Ladda ned installationsprogrammet från EDB på Windows-sidan på postgresql.org. Guiden installerar servern, pgAdmin, kommandoradsverktygen och Stack Builder tillsammans och frågar efter lösenord för användaren postgres, port och språkinställning.

För att kunna använda psql-kommandot i alla terminaler efter installationen lägger du till bin-mappen i miljövariabeln PATH. Genvägen SQL Shell (psql) i startmenyn gör samma sak.

powershellKontrollera PATH och verifiera versionen
# Mappnamnet varierar beroende på vilken huvudversion du installerade
$env:Path += ";C:\Program Files\PostgreSQL\<version>\bin"
psql --version
psql -U postgres -h localhost

macOS (Homebrew)

I Homebrew levereras PostgreSQL som versionsnumrerade paket. Lista först tillgängliga paket, installera sedan den huvudversion du vill ha och starta den som en tjänst. Föredrar du ett grafiskt gränssnitt är Postgres.app ett vanligt alternativ.

bash
brew search postgresql
brew install postgresql@<version>
brew services start postgresql@<version>
# Paket med versionsnummer läggs kanske inte till i PATH automatiskt;
# kör raden echo 'export PATH=...' från installationsutskriften
psql --version
psql postgres

Ubuntu och Debian

Paketet i distributionens eget förråd räcker för de flesta projekt. Behöver du en nyare huvudversion kan du installera genom att lägga till det PGDG-förråd som postgresql.org beskriver.

bash
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable --now postgresql
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"

Docker

För utvecklingsmiljön är den officiella postgres-avbilden det renaste sättet, eftersom du kan starta och stoppa databasen utan att installera en permanent tjänst på datorn. Montera alltid en namngiven volym så att data inte försvinner.

  • I officiella avbilder från version 18 och senare monteras volymen på sökvägen /var/lib/postgresql.
  • I avbilder från version 17 och tidigare monterar du volymen på /var/lib/postgresql/data. Kontrollera anteckningen på avbildens sida på Docker Hub.
bash
docker run -d --name pg \
  -e POSTGRES_PASSWORD=GucluBirParola \
  -p 5432:5432 \
  -v pgdata:/var/lib/postgresql \
  postgres:<version>

docker exec -it pg psql -U postgres

Skapa användare och databas

Rollen postgres som följer med installationen är en superanvändare, och det är olämpligt ur säkerhetssynpunkt att ansluta din applikation med den. Skapa en separat roll för varje projekt, med behörighet enbart i den egna databasen.

I PostgreSQL är användare och roll samma begrepp: en roll med LOGIN-behörighet fungerar som en användare. Den roll som du gör till ägare av databasen kan skapa tabeller i public-schemat i den databasen.

sqlI psql, som användaren postgres
CREATE ROLE uygulama WITH LOGIN PASSWORD 'BurayaGucluParola';
CREATE DATABASE magaza OWNER uygulama ENCODING 'UTF8';

-- Skrivskyddad användare för rapportering
CREATE ROLE rapor WITH LOGIN PASSWORD 'BaskaGucluParola';
GRANT CONNECT ON DATABASE magaza TO rapor;
\c magaza
GRANT USAGE ON SCHEMA public TO rapor;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO rapor;
ALTER DEFAULT PRIVILEGES FOR ROLE uygulama IN SCHEMA public
  GRANT SELECT ON TABLES TO rapor;

De vanligaste psql-kommandona

psql är PostgreSQL:s kommandoradsklient. Metakommandon som börjar med omvänt snedstreck skickar inte SQL till servern utan tolkas av klienten själv, och de gör navigeringen mycket snabbare.

KommandoVad gör den?
\lListar databaserna
\c magazaByter till databasen magaza
\dtListar tabellerna i det aktuella schemat
\d urunlerVisar tabellens kolumner och index
\duListar roller och deras behörigheter
\xVäxlar breda rader till vertikal visning
\timingSlår på eller av tidtagning av frågor
\?Öppnar hjälpen för alla metakommandon
\qAvslutar psql
bashAnsluta med den nya rollen
psql -h localhost -U uygulama -d magaza
# Med anslutningssträng
psql "postgresql://uygulama@localhost:5432/magaza"

Hantera med pgAdmin i grafiskt gränssnitt

pgAdmin är det officiella och kostnadsfria hanteringsverktyget för PostgreSQL. Det följer med Windows-installationsprogrammet, och i macOS och Linux installeras det separat från pgadmin.org eller körs med Docker-avbilden.

Vid första starten definierar du en ny server med Register > Server: skriv localhost som värd, port 5432 samt användare och lösenord på fliken Connection. När du är ansluten kan du bläddra bland tabellerna, köra frågor med Query Tool och göra säkerhetskopiering och återställning från menyn.

Ska du ansluta till en fjärrserver är det säkrare att använda pgAdmins alternativ SSH-tunnel än att öppna databasporten mot internet.

Fjärranslutning och grundinställningar

PostgreSQL lyssnar som standard bara på lokala anslutningar. Eftersom konfigurationsfilernas plats beror på operativsystem och version tar du först reda på var de ligger inifrån psql.

Värdet listen_addresses i filen postgresql.conf anger vilka adresser som lyssnas på, och pg_hba.conf avgör vilken klient som autentiseras med vilken metod. Använd metoden scram-sha-256 för anslutningar med lösenord och håll det tillåtna IP-intervallet så snävt som möjligt.

  • shared_buffers: den officiella dokumentationen rekommenderar ungefär en fjärdedel av minnet som utgångspunkt på en dedikerad server.
  • max_connections: använd en anslutningspool i applikationen i stället för att sätta värdet högt.
  • Slå på inställningen log_min_duration_statement för att hitta långsamma frågor och analysera dem med EXPLAIN ANALYZE.
sql
SHOW config_file;
SHOW hba_file;
SHOW data_directory;
confExempelrad i pg_hba.conf
# TYPE  DATABASE  USER       ADDRESS          METHOD
host    magaza    uygulama   203.0.113.10/32  scram-sha-256
bash
# En omladdning räcker för ändringar i pg_hba.conf
sudo systemctl reload postgresql
# Ändringar i listen_addresses kräver omstart
sudo systemctl restart postgresql

Säkerhetskopiering och vanliga fel

Planera automatisk säkerhetskopiering så snart installationen är klar. pg_dump tar en konsekvent kopia av en enskild databas, och en säkerhetskopia i anpassat format kan återställas selektivt med pg_restore. Förvara kopian på en annan plats, inte på samma server.

Databasens prestanda påverkar applikationens totala hastighet direkt. Resultat får du när frågetider, index och serversvar ses i ett sammanhang, och det är den helhetssynen vi tillämpar i vårt arbete med hastighet och prestanda.

MisstagTrolig orsak och lösning
Peer authentication failedI Ubuntu använder den lokala socketanslutningen peer-metoden. Anslut med lösenord genom att lägga till -h localhost.
Connection refusedTjänsten körs inte eller så är porten en annan. Kontrollera systemctl status postgresql och portinställningen.
password authentication failedLösenordet eller användarnamnet är fel. Återställ lösenordet med ALTER ROLE.
psql känns inte igenMappen bin finns inte i PATH. Lägg till den i miljövariabeln i Windows.
permission denied for schema publicRollen är inte ägare av databasen. Ge den ägarskap eller definiera schemabehörighet.
bash
pg_dump -h localhost -U uygulama -F c -f magaza.dump magaza
pg_restore -h localhost -U uygulama -d magaza --clean magaza.dump

Vanliga frågor

01Kan man använda PostgreSQL utan pgAdmin?

Ja. pgAdmin är bara ett hanteringsgränssnitt, och servern körs oberoende av det. psql, databastillägg i kodeditorer eller andra klienter gör samma jobb.

02Ska jag välja PostgreSQL eller MySQL?

Båda systemen är mogna och pålitliga. Är avancerade datatyper, JSONB och komplexa frågor viktiga passar PostgreSQL, och är det viktigt att det finns färdigt hos webbhotell är MySQL ofta praktiskt. Beslutet bör fattas utifrån projektets behov.

03Hur ansluter jag mitt Python-projekt till PostgreSQL?

Den vanligaste drivrutinen är psycopg, som även Django och SQLAlchemy använder. Om din miljö inte är klar än gör du först stegen i installationen av Python och installerar sedan drivrutinen med pip i en virtuell miljö.

04Hur uppgraderar man huvudversionen?

Vid byte mellan huvudversioner kan datakatalogen inte användas direkt. För små databaser föredrar man att ta en säkerhetskopia med pg_dumpall och återställa den i den nya versionen, för stora verktyget pg_upgrade. I båda fallen tar du först en fullständig säkerhetskopia.

När du har installerat PostgreSQL och kör det med en separat roll, snäv åtkomstregel och regelbunden säkerhetskopiering har du lagt en stabil grund. Letar du efter mjukvara som hanterar allt från databasdesign till serverinstallation kan du titta på Auroras lösningar eller kontakta oss. För fler steg kan du bläddra i kategorin installationsguider.