Indledning
PostgreSQL er en kraftfuld objekt-relationel database management system, der er omfattet af en fleksibel BSD-stil licens. Postgres .l indeholder mange avancerede funktioner, er meget hurtig og standarder kompatibel.
Postgres .l har bindinger til mange programmeringssprog som C, C++, Python, Java, PHP, Ruby… Det kan bruges til at drive alt fra simple applicationseb-applikationer til massive databaser med millioner af poster.,
Client Installation
Hvis du kun ønsker at forbinde til en ekstern PostgreSQL-serveren, skal du ikke installere de vigtigste PostgreSQL pakke, men installerer PostgreSQL-client-pakke i stedet for. For at gøre dette, skal du bruge følgende kommando
sudo apt-get install postgresql-client
du kan derefter oprette forbindelse til serveren med følgende kommando
psql -h server.domain.org database user
Efter at du har indsat den adgangskode, du har adgang til PostgreSQL med linie-kommandoer., Du kan for eksempel indsætte følgende:
SELECT * FROM table WHERE 1;
Du forlader forbindelse med
\q
Installation
for At installere en server lokalt, bruge kommandolinjen og type:
sudo apt-get install postgresql postgresql-contrib
Dette vil installere de nyeste tilgængelige version på din Ubuntu-udgivelse, og den almindeligt anvendte add-ons til det.
se “eksterne Links” nedenfor for muligheder for at få nyere udgivelser.,
installation af PostGIS, proceduremæssige sprog, klientgrænseflader osv.
yderligere pakker indeholder proceduremæssige sprogkørsler, tilføjelser som PostGIS, sprogklientgrænseflader som psycopg2 til Python osv. Du kan få en liste med:
apt-cache search postgres
Administration
pgAdmin III er en praktisk GUI for PostgreSQL, det er af afgørende betydning for begyndere. For at installere det, skal du skrive på kommando:
sudo apt-get install pgadmin3
Du kan også bruge Synaptic package manager fra Systemet>Administration-menuen for at installere disse pakker.,
grundlæggende serveropsætning
for at starte, skal vi indstille adgangskoden til postgres .l-brugeren (rolle) kaldet “postgres”; vi vil ikke kunne få adgang til serveren eksternt ellers. Som den lokale” postgres ” Linu. – bruger har vi lov til at forbinde og manipulere serveren ved hjælp af PS .l-kommandoen.
I en terminal, skriv:
sudo -u postgres psql postgres
denne forbindelse som en rolle med samme navn som de lokale bruger, dvs “postgres”, at den database, der hedder “postgres” (1. argument for at psql).,
Indstil en adgangskode til “postgres” – databaserollen ved hjælp af kommandoen:
\password postgres
og angiv din adgangskode, når du bliver bedt om det. Adgangskodeteksten vil blive skjult fra konsollen af sikkerhedsmæssige årsager.
skriv Control+D eller \ \ for at afslutte posgres .l-prompten.
Create database
for At oprette den første database, som vi vil kalde “mydb”, skal du blot skrive:
sudo -u postgres createdb mydb
Install-Server Instrumentering (for PgAdmin) for Postgresql 8.4 eller 9.3
PgAdmin kræver installation af et add-on til fuld funktionalitet., Den “adminpack” addon, som det kalder Server Instrumentering, er en del af doc-debian, så skal du også installere denne pakke, hvis du ikke allerede har gjort det:
sudo apt-get install postgresql-contrib
Så til at aktivere en udvidelse for “”Postgresql 8.4″”, skal du køre adminpack.sql-script, skal du blot skrive:
sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql
For “Postgresql 9.3″+ installere adminpack “udvidelse” i “postgres” database:
sudo -u postgres psql CREATE EXTENSION adminpack;
Alternativ Server Setup
Hvis du ikke har til hensigt at oprette forbindelse til databasen fra en anden maskine, er dette en alternativ opsætning kan være enklere.,
Som standard i Ubuntu er Postgres .l konfigureret til at bruge ‘ident sameuser’ – godkendelse til forbindelser fra den samme maskine. Tjek den fremragende Postgres .l-dokumentation for mere information, men det betyder i det væsentlige, at hvis dit Ubuntu-brugernavn er ‘foo’, og du tilføjer ‘foo’ som en Postgres .l-bruger, kan du oprette forbindelse til databasen uden at kræve en adgangskode.,
Da det kun brugeren, der kan oprette forbindelse til en frisk installation er postgres bruger, her er hvordan for at skabe dig en database konto (som i dette tilfælde også en database superbruger) med samme navn som dit login-navn og derefter oprette en adgangskode for brugeren:
sudo -u postgres createuser --superuser $USER sudo -u postgres psql
postgres=# \password $USER
Klient programmer, som standard, oprette forbindelse til den lokale vært ved hjælp af din Ubuntu login-navn og forventer at finde en database med dette navn også., Så for at gøre det RIGTIG let, skal du bruge din nye superbruger-rettigheder, der tildeles ovenfor til at oprette en database med samme navn som dit login-navn:
sudo -u postgres createdb $USER
Tilslutning til din egen database for at afprøve nogle SQL bør nu være så let som:
psql
Oprettelse af yderligere database er lige så let, så for eksempel, efter at have kørt dette:
create database amarokdb;
Du kan gå direkte videre og fortælle Amarok til at bruge postgresql til at gemme sin musik katalog., Databasenavnet ville være amarokdb, brugernavnet ville være dit eget loginnavn, og du behøver ikke engang en adgangskode takket være ‘ident sameuser’, så du kan lade det være tomt.
brug af PGADMIN III GUI
for at få en ID.om, hvad Postgres .l kan gøre, kan du starte med at skyde en grafisk klient. I en terminal type:
pgadmin3
vil du blive præsenteret for pgadmin III interface. Klik på knappen” Tilføj en forbindelse til en server ” (øverst til venstre). I den nye dialog skal du indtaste adressen 127.0.0.1 (lokal vært er standard, så den kan udelades.,), en beskrivelse af serveren, standarddatabasen (“mydb”i eksemplet ovenfor), dit brugernavn (“postgres”) og din adgangskode. Der kræves endnu et trin for at give pgAdmin III mulighed for at oprette forbindelse til serveren, og det er at redigere pg_hba.conf fil og ændre den godkendelsesmetode fra peer-to-md5 (vil ikke fungere, hvis du ikke har indstillet en adgangskode):
sudo nano /etc/postgresql/9.3/main/pg_hba.conf
og ændre den linje
# Database administrative login by Unix domain socketlocal all postgres peer
for at
# Database administrative login by Unix domain socketlocal all postgres md5
Nu skal du genindlæse den konfiguration af server ændringer og forbinde pgAdmin III til din PostgreSQL-database server.,
sudo /etc/init.d/postgresql reload
Med denne GUI kan du begynde at oprette og administrere databaser, forespørge databasen, udføre s .l osv.
Administration af Serveren
for At lære mere om håndtering af PostgreSQL (men uden Ubuntu specifikke oplysninger) se den officielle PostgreSQL dokumentation
Administration af brugere og rettigheder
User management er diskuteret i detaljer i kundens godkendelse kapitel af PostgreSQL dokumentation; det følgende er en introduktion til at få dig i gang. for at administrere brugere skal du først redigere / etc/Postgres .l/current/main / pg_hba.,conf og ændre standard konfiguration, som er meget låst ned og sikker. Vil have postgres til at administrere sine egne brugere (ikke forbundet med systembrugere), tilføjer du følgende linje:
8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------
hvilket betyder, at på dit lokale netværk (10.0.0.0/24 – Erstat med dit eget lokale netværk !), kan postgres-brugere oprette forbindelse via netværket til databasen, der giver en klassisk parbruger / adgangskode.
udover at tillade en bruger at oprette forbindelse over netværket til til en database på serveren, skal du aktivere Postgres .l for at lytte på tværs af forskellige netværk., For at gøre det skal du åbne / etc/Postgres .l/current/main / Postgres .l.conf i din favorit editor og ændre listen_addresses som nedenfor:
listen_addresses = '*'
til at lytte på alle netværksgrænseflader. Se docs for listen_addresses for andre muligheder.
for at oprette en database med en bruger, der har fulde rettigheder i databasen, skal du bruge følgende kommando:
sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb
den første kommandolinje opretter brugeren uden databaseoprettelsesrettigheder (-d) uden Tilføj brugerrettigheder-A) og vil bede dig om at indtaste en adgangskode (-p)., Den anden kommandolinje opretter databasen ‘ mydb med ‘myuser’ som ejer.
dette lille eksempel passer sandsynligvis til de fleste af dine behov. For flere detaljer henvises til de tilsvarende man-sider eller onlinedokumentationen.
genstart af serveren
efter konfiguration af netværk / brugere skal du muligvis genindlæse serveren, her er en foreslået kommando til at gøre det.
sudo /etc/init.d/postgresql reload
nogle indstillinger ændres i Postgres .l.,conf kræver en fuld genstart, hvilket vil opsige aktive forbindelser og afbryde uforpligtede transaktioner:
sudo /etc/init.d/postgresql restart
Yderligere læsning
Hvis du ikke er fortrolig med SQL kan du ønsker at se i denne kraftfulde sprog, selv om nogle enkle bruger PostgreSQL kan ikke kræve, at denne viden (såsom en enkel Django-projektet).
Postgres .l-websiteebstedet indeholder et væld af oplysninger om brug af denne database. Tutorial er især et nyttigt udgangspunkt, men du kan springe over installationstrinnet, da du allerede har installeret det ved hjælp af Ubuntu-pakker.,
fejlfinding
fe_sendauth: ingen adgangskode leveret
din pg_hba.conf specificerer, at MD5-godkendelse skal bruges til denne forbindelse baseret på origin host, forbindelsesmetode og det ønskede brugernavn/database, men din ansøgning leverede ikke en adgangskode. Skift autentificeringstilstand, eller angiv en adgangskode for den bruger, du opretter forbindelse til, og angiv derefter adgangskoden i programmets forbindelsesindstillinger.,
FATAL: rolle “brugernavn” findes ikke
Som standard opretter forbindelse til PostgreSQL PostgreSQL bruger med samme navn som den nuværende unix-bruger. Du har ikke oprettet en Postgres .l-bruger med det navn i din database.
Opret en passende bruger, eller angiv et andet brugernavn, du vil oprette forbindelse til. I kommandolinjeværktøjerne gør-u-flaget dette.
FATAL: database “myusername” findes ikke
en bruger ved navn “myusername” findes, men der er ingen database med samme navn.,
Postgres .l opretter som standard forbindelse til databasen med samme navn som den bruger, du forbinder som, men den opretter ikke automatisk databasen, hvis den ikke findes.
Opret databasen, eller angiv en anden database for at oprette forbindelse til.
FATAL: Peer-Godkendelse mislykkedes for bruger “myusername”
du opretter forbindelse til localhost via en uni. – stik. En bruger ved navn” myusername ” eksisterer, men din nuværende uni. – bruger er ikke den samme som det brugernavn., PostgreSQL er indstillet til at bruge “peer” – godkendelse på unix-sokler for denne bruger/db combo, så det kræver din unix-og postgresql brugernavne til at matche.
Opret forbindelse fra Uni. – brugeren, der matcher den ønskede Postgres .l-bruger – måske med sudo-u theusername PS .l-eller skift pg_hba.conf for at bruge en anden godkendelsestilstand som “MD5” til dette brugernavn.,
kunne ikke oprette forbindelse til server: Ingen sådan fil eller mappe
En fejl som denne (eventuelt med en anden unix-socket sti, afhængigt af 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 betyde, at en række ting:
* serveren kører ikke;
* serveren har en anden unix_socket_directories til standard i din klient crash, enten på grund af forskellige kompileret-standard eller en forkert indstilling;
* serveren lytter på en anden “port”., Postgres .l emulerer TCP/IP-porte på uni. – stik ved at bruge portnummeret som suffiks for socket-filen, f. eks. 5432.
Eliminer disse igen.
Sørg først for, at serveren kører. På Ubuntu viser ps-u postgres-f dig alle processer, der kører som bruger postgres – du vil se flere, der hedder postgres.
sørg nu for, at serveren lytter, hvor din klient mener, at den er. For at finde ud af dine PostgreSQL server socket bibliotek:
sudo -u postgres psql -c "SHOW unix_socket_directories;"
eller på ældre versioner af PostgreSQL, unix_socket_directory som parameter har ændret navn., For at vise server-port (som gælder til både TCP/IP-og unix-sokler):
sudo -u postgres psql -c "SHOW port;"
Hvis du overhovedet ikke kan forbinde med psql under unix brugeren postgres du kan kontrollere, socket-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 dette tilfælde den første linje er den socket placering. Denne server har socket directory / tmp med port 5432.,
Hvis din klient er på udkig i en anden socket bibliotek, du er sandsynligvis at forsøge at oprette forbindelse over unix-sokler til de standard stik sti og/eller standard port, og crash din klient applikation er knyttet til, har en anden udarbejdet-i unix-socket sti og/eller port end din kører PostgreSQL. Mest sandsynligt har din LD_LIBRARY_PATH eller / etc / ld.so.conf en anden libp.før den, der fulgte med din version af Postgres .l. Dette betyder generelt ikke meget, du kan bare tilsidesætte stikkontakten.,
for At angive en alternativ socket bibliotek og/port-port til at oprette forbindelse til, skal du angive den socket dir som vært-parameteren i dine indstillinger til at oprette forbindelse, fx til at forbinde som bruger bob-serveren lytter i /tmp på port 5433:
psql -h /tmp -p 5433 -U bob ...
eller i forbindelse-streng form:
psql "host=/tmp port=5433 user=bob ..."
Det samme virker med enhver klient, der bruger libpq (alle PostgreSQL-client tools, plus fx psycopg2, Pg perle i Ruby/Rails, PHP ‘s postgres og BOB, Perl’ s DBB::Pg, osv.)., Det fungerer ikke med ikke-libp.-klienter som pgjdbc, py-Postgres .l osv., men de fleste af disse understøtter slet ikke uni. – stik. Se klientdokumentationen for ikke-libp. – baserede klienter.
den Officielle PostgreSQL downloads
PostgreSQL-projektet giver en officiel liste over download-steder, herunder en Ubuntu software repository, på sin download-side. Især Ubuntu-brugere kan få nyere versioner af PostgreSQL end dem, der er pakket i deres Ubuntu-release ved hjælp af apt-get via apt.postgresql.org.
For support og service rundt om PostgreSQL se den service og support side.,
EnterpriseDB
Postgres .l Linu.do .nloads siden indeholder et afsnit om “Graphical installer” bygget af EnterpriseDB. Du Do .nloader installationsprogrammet, ændrer dets egenskaber for at tillade at køre det som kommando (det har .Kør udvidelse), og køre det fra kommandoprompten som i “sudo whathateverit .as.køre”.
Du ende op med
- konfigureret DB server instans, der starter med din server
- pgAdmin III UI klient applikation
Bemærk, at den installerede software, vil ikke blive integreret med Ubuntu software center., Som et resultat modtager du ingen sikkerhedsopdateringer fra Ubuntu. Den installerede version vil dog nøje matche den nyeste Ubuntu-version.
Turnkey Linu.
et Ubuntu-baseret Postgres .l-apparat er en af de nemmeste måder at komme i gang med Postgres .l på Ubuntu. Det er en del af en familie af pre-integreret TurnKey Linux-Software, Apparater baseret på Ubuntu 10.04.1 (Lucid LTS).
Skriv et svar