introduktion

PostgreSQL är ett kraftfullt objektrelationsdatabashanteringssystem som tillhandahålls under en flexibel BSD-stillicens. PostgreSQL innehåller många avancerade funktioner, är mycket snabb och standarder kompatibel.

PostgreSQL har bindningar för många programmeringsspråk som C, C++, Python, Java, PHP, Ruby… Den kan användas för att driva allt från enkla webbapplikationer till massiva databaser med miljontals poster.,

klientinstallation

om du bara vill ansluta till en extern PostgreSQL-server, installera inte huvudpaketet PostgreSQL, utan installera PostgreSQL-klientpaketet istället. För att göra detta, använd följande kommando

 sudo apt-get install postgresql-client

du ansluter sedan till servern med följande kommando

 psql -h server.domain.org database user

När du har infogat lösenordet kommer du åt PostgreSQL med linjekommandon., Du kan till exempel infoga följande

 SELECT * FROM table WHERE 1;

du avslutar anslutningen med

 \q

Installation

för att installera servern lokalt använd kommandoraden och typen:

 sudo apt-get install postgresql postgresql-contrib

det här installerar den senaste versionen som finns tillgänglig i din Ubuntu-utgåva och de vanliga tilläggen för det.

se ”Externa länkar” nedan för alternativ för att få nyare versioner.,

installera PostGIS, procedurspråk, klientgränssnitt, etc

ytterligare paket innehåller procedurspråk runtimes, tillägg som PostGIS, språkklientgränssnitt som psycopg2 för Python, etc. Du kan få en lista med:

 apt-cache search postgres

Administration

pgAdmin III är en praktisk GUI för PostgreSQL, det är viktigt för nybörjare. För att installera det, skriv på kommandoraden:

 sudo apt-get install pgadmin3

Du kan också använda Synaptic package manager från systemet>Administrationsmenyn för att installera dessa paket.,

grundläggande serverinställningar

för att starta måste vi ställa in lösenordet för PostgreSQL-användaren (roll) som heter ”postgres”; vi kommer inte att kunna komma åt servern externt annars. Som den lokala ”postgres” Linux-användaren får vi ansluta och manipulera servern med psql-kommandot.

i en terminal skriver du:

sudo -u postgres psql postgres

detta ansluts som en roll med samma namn som den lokala användaren, dvs. ”postgres”, till databasen ”postgres” (1: A argumentet till psql).,

ange ett lösenord för databasrollen” postgres ” med kommandot:

\password postgres

och ge ditt lösenord när du uppmanas. Lösenordstexten kommer att döljas från konsolen för säkerhetsändamål.

skriv Control+D eller \q för att avsluta posgresql-prompten.

Skapa databas

för att skapa den första databasen, som vi kommer att kalla ”mydb”, skriv helt enkelt:

 sudo -u postgres createdb mydb

installera Serverinstrumentering (för PgAdmin) för Postgresql 8.4 eller 9.3

PgAdmin kräver installation av ett tillägg för full funktionalitet., Addon” adminpack”, som den kallar Serverinstrumentering, är en del av postgresql-contrib, så du måste installera det paketet om du inte redan har:

 sudo apt-get install postgresql-contrib

för att aktivera tillägget, för ””Postgresql 8.4”, kör adminpack.sql script, skriv helt enkelt:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

för ”Postgresql 9.3″+ installera adminpack ”extension” i” postgres” – databasen:

 sudo -u postgres psql CREATE EXTENSION adminpack;

alternativ serverinställning

om du inte har för avsikt att ansluta till databasen från andra maskiner kan denna alternativa Inställning vara enklare.,

Som standard i Ubuntu, Postgresql är konfigurerad för att använda ” ident sameuser autentisering för alla anslutningar från samma maskin. Kolla in den utmärkta Postgresql-dokumentationen för mer information, men i huvudsak betyder det att om ditt Ubuntu-användarnamn är ” foo ”och du lägger till” foo ” som Postgresql-användare kan du ansluta till databasen utan att behöva ett lösenord.,

eftersom den enda användare som kan ansluta till en ny installation är postgres-användaren, så här skapar du ett databaskonto (vilket i detta fall också är en databassuperanvändare) med samma namn som ditt inloggningsnamn och sedan skapar ett lösenord för användaren:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

klientprogram, som standard, ansluter du till den lokala värden med ditt inloggningsnamn och förväntar dig att hitta en databas med det namnet också., Så för att göra det väldigt enkelt, Använd din nya superbehörighet som beviljats ovan för att skapa en databas med samma namn som ditt inloggningsnamn:

 sudo -u postgres createdb $USER

ansluta till din egen databas för att prova lite SQL bör nu vara lika enkelt som:

 psql

skapa ytterligare databas är lika enkelt, så till exempel efter att ha kört detta:

 create database amarokdb;

Du kan gå rakt fram och be Amarok att använda PostgreSQL för att lagra sin musikkatalog., Databasnamnet skulle vara amarokdb, användarnamnet skulle vara ditt eget inloggningsnamn, och du behöver inte ens ett lösenord tack vare ”ident sameuser” så att du kan lämna det tomt.

använda pgAdmin III GUI

för att få en uppfattning om vad PostgreSQL kan göra, kan du börja med att skjuta upp en grafisk klient. I en terminal typ :

 pgadmin3

Du kommer att presenteras med pgAdmin III-gränssnittet. Klicka på knappen ”Lägg till en anslutning till en server” (överst till vänster). I den nya dialogrutan anger du adressen 127.0.0.1 (lokal värd är standard, så det kan utelämnas.,), en beskrivning av servern, standarddatabasen (”mydb”i exemplet ovan), ditt användarnamn (”postgres”) och ditt lösenord. Ytterligare ett steg krävs för att pgAdmin III ska kunna ansluta till servern, och det är att redigera pg_hba.conf-fil och ändra autentiseringsmetoden från peer till md5 (fungerar inte om du inte har ställt in lösenordet):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

och ändra raden

# Database administrative login by Unix domain socketlocal all postgres peer

till

# Database administrative login by Unix domain socketlocal all postgres md5

nu ska du ladda om serverkonfigurationsändringarna och ansluta pgAdmin III till din PostgreSQL-databasserver.,

sudo /etc/init.d/postgresql reload

med detta GUI kan du börja skapa och hantera databaser, fråga databasen, köra SQl etc.

hantera servern

för att lära dig mer om hantering av PostgreSQL (men utan Ubuntu-detaljerna), se den officiella PostgreSQL-dokumentationen

Hantera användare och rättigheter

Användarhantering diskuteras i detalj i kapitlet klientautentisering i PostgreSQL-dokumentationen.

för att hantera användare måste du först redigera /etc/postgresql/current/main/pg_hba.,conf och ändra standardkonfigurationen som är mycket låst och säker. Om du till exempel vill att postgres ska hantera sina egna användare (inte kopplade till systemanvändare) lägger du till följande rad:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

vilket innebär att på ditt lokala nätverk (10.0.0.0/24 – ersätt med ditt eget lokala nätverk !), postgres användare kan ansluta via nätverket till databasen som ger en klassisk par användare / lösenord.

förutom att tillåta en användare att ansluta via nätverket till en databas på servern, måste du aktivera PostgreSQL att lyssna över olika nätverk., För att göra det, öppna upp / etc / postgresql/current/main / postgresql.conf i din favoritredigerare och ändra listen_addresses enligt nedan:

listen_addresses = '*'

för att lyssna på alla nätverksgränssnitt. Se dokument för listen_addresses för andra alternativ.

för att skapa en databas med en användare som har fullständiga rättigheter i databasen, använd följande kommando:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

den första kommandoraden skapar användaren utan att skapa databasrättigheter (-d) utan att lägga till användarrättigheter-A) och uppmanar dig att ange ett lösenord (-P)., Den andra kommandoraden skapar databasen ”mydb med” myuser ” som ägare.

det här lilla exemplet passar förmodligen de flesta av dina behov. För mer information, se motsvarande mansidor eller online-dokumentationen.

starta om servern

Efter att ha konfigurerat nätverk / användare kan du behöva ladda om servern, här är ett förslag till kommando för att göra det.

sudo /etc/init.d/postgresql reload

vissa inställningar ändras i postgresql.,conf kräver en fullständig omstart, vilket kommer att avsluta aktiva anslutningar och avbryta obefogade transaktioner:

sudo /etc/init.d/postgresql restart

Ytterligare läsning

om du inte är bekant med SQL kanske du vill titta på detta kraftfulla språk, även om vissa enkla användningar av PostgreSQL kanske inte kräver denna kunskap (till exempel ett enkelt Django-projekt).

PostgreSQL-webbplatsen innehåller en mängd information om hur du använder den här databasen. I synnerhet är handledningen en användbar utgångspunkt, men du kan hoppa över installationssteget eftersom du redan har installerat det med Ubuntu-paket.,

felsökning

fe_sendauth: Inget lösenord levererat

din pg_hba.conf anger att md5-autentisering ska användas för den här anslutningen baserat på Ursprung värd, anslutningsmetod och begärda användarnamn/databas, men din ansökan inte angett ett lösenord.

ändra autentiseringsläget eller ange ett lösenord för den användare du ansluter till och ange sedan lösenordet i programmets anslutningsinställningar.,

FATAL: role ”myusername” existerar inte

som standard ansluter PostgreSQL till PostgreSQL-användaren med samma namn som den aktuella unix-användaren. Du har inte skapat en PostgreSQL-användare med det namnet i din databas.

skapa en lämplig användare, eller ange ett annat användarnamn att ansluta till. I kommandoradsverktygen gör-u-flaggan detta.

FATAL: databas ”myusername” existerar inte

en användare som heter ”myusername” finns, men det finns ingen databas med samma namn.,

som standard ansluter PostgreSQL till databasen med samma namn som användaren du ansluter Som, men skapar inte databasen automatiskt om den inte finns.

skapa databasen, eller ange en annan Databas att ansluta till.

FATAL: Peer-autentisering misslyckades för användaren ”myusername”

du ansluter till localhost via ett Unix-uttag. En användare som heter ”myusername” finns, men din nuvarande unix-användare är inte densamma som användarnamnet., PostgreSQL är inställd på att använda” peer ” – autentisering på unix-uttag för den här användaren / db-kombinationen så det kräver att dina Unix-och postgresql-användarnamn matchar.

Anslut från unix-användaren som matchar den önskade PostgreSQL-användaren-kanske med sudo-u theusername psql-eller ändra pg_hba.conf för att använda ett annat autentiseringsläge som ” md5 ” för detta användarnamn.,

kunde inte ansluta till servern: ingen sådan fil eller katalog

ett fel som detta (eventuellt med en annan Unix socket path, beroende på din installation):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

kan betyda ett antal saker:

* servern körs inte;

* servern har en annan unix_socket_directories till standard i klientens libpq, antingen på grund av olika kompilerade standardinställningar eller en felaktig inställning;

* servern lyssnar på en annan ”port”., PostgreSQL emulerar TCP/IP-portar på unix-uttag med hjälp av portnummer som suffix för uttaget filen, t ex 5432.

eliminera dessa i sin tur.

kontrollera först att servern körs. På Ubuntu kommer ps-u postgres-f att visa dig alla processer som körs som användarpostergres – du vill se flera som heter postgres.

Se nu till att servern lyssnar där din klient tror att den är. För att ta reda på din PostgreSQL-server socket directory:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

eller på äldre PostgreSQL-versioner, unix_socket_directory som parametern ändrat namn., För att visa serverns port (som gäller för både TCP/IP-och unix-uttag):

 sudo -u postgres psql -c "SHOW port;"

om du inte ens kan ansluta med psql under unix user postgres kan du kontrollera uttaget dir med lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

i det här fallet är den första raden uttagsplatsen. Den här servern har socket directory / tmp med port 5432.,

om din klient tittar i en annan socket-katalog försöker du förmodligen ansluta över Unix-uttag till standard socket path och/eller till standardporten, och libpq din klientprogram är länkat till har en annan kompilerad in unix socket path och/eller port än din kör PostgreSQL. Troligtvis din LD_LIBRARY_PATH eller / etc / ld. so. conf har en annan libpq innan den som följde med din version av PostgreSQL. Detta spelar i allmänhet ingen roll mycket, du kan bara åsidosätta socket katalogen.,

om du vill ange en alternativ socket-katalog och /port-port för att ansluta till, ange socket dir som värdparameter i dina anslutningsalternativ, t.ex. för att ansluta som användare bob till servern som lyssnar på/tmp på port 5433:

 psql -h /tmp -p 5433 -U bob ...

eller i connection-string form:

 psql "host=/tmp port=5433 user=bob ..."

detsamma fungerar med alla klienter som använder libpq (alla klienter som använder PostgreSQL klientverktyg, plus t. ex. psycopg2, PG pärla i ruby / rails, PHP: s Postgres och sub, Perls DBB:: PG, etc)., Det fungerar inte med icke-libpq-klienter som PgJDBC, Py-postgresql, etc, men de flesta av dessa stöder inte unix-uttag alls. Se klientdokumentationen för icke-libpq-baserade klienter.

officiella PostgreSQL-nedladdningar

PostgreSQL-projektet ger en officiell lista över nedladdningsställen, inklusive ett Ubuntu-programförråd, på sin nedladdningssida. I synnerhet kan Ubuntu-användare få nyare PostgreSQL-versioner än de som paketeras i sin Ubuntu-utgåva med apt-get via apt.postgresql.org.

För support och tjänster runt PostgreSQL se sidan tjänster och support.,

EnterpriseDB

nedladdningssidan för PostgreSQL Linux innehåller ett avsnitt om ”Graphical installer” byggd av EnterpriseDB. Du laddar ner installationsprogrammet, ändrar dess egenskaper för att tillåta att köra det som kommando (det har .kör förlängning), och kör den från kommandotolken som i ”sudo whateveritwas.köra”.

du slutar med

  • konfigurerad DB-serverinstans, som börjar med din server
  • pgAdmin III UI-klientprogram

Observera att den installerade programvaran inte kommer att integreras med Ubuntu software center., Som ett resultat kommer du inte att få några säkerhetsuppdateringar från Ubuntu. Den installerade versionen matchar dock den senaste Ubuntu-versionen.

Turnkey Linux

en Ubuntu-baserad PostgreSQL-apparat är ett av de enklaste sätten att komma igång med PostgreSQL på Ubuntu. Det är en del av en familj av förintegrerade nyckelfärdiga Linux-programvaror baserade på Ubuntu 10.04.1 (Lucid LTS).