Inleiding

PostgreSQL is een krachtig object-relationeel databasebeheersysteem, geleverd onder een flexibele BSD-stijl licentie. PostgreSQL bevat veel geavanceerde functies, is zeer snel en voldoet aan de normen.

PostgreSQL heeft bindingen voor vele programmeertalen zoals C, C++, Python, Java, PHP, Ruby… Het kan worden gebruikt om de macht van alles van eenvoudige webapplicaties tot enorme databases met miljoenen records.,

Client installatie

Als u alleen verbinding wilt maken met een externe PostgreSQL server, installeer dan niet het hoofd PostgreSQL pakket, maar installeer in plaats daarvan het PostgreSQL client pakket. Gebruik hiervoor het volgende commando

 sudo apt-get install postgresql-client

u maakt dan verbinding met de server met het volgende commando

 psql -h server.domain.org database user

nadat u het wachtwoord hebt ingevoerd dat u PostgreSQL met regelcommando ‘ s benadert., U kunt bijvoorbeeld het volgende invoegen

 SELECT * FROM table WHERE 1;

u verlaat de verbinding met

 \q

installatie

om de server lokaal te installeren gebruik de opdrachtregel en typ:

 sudo apt-get install postgresql postgresql-contrib

Dit zal de laatste versie installeren die beschikbaar is in uw Ubuntu release en de veelgebruikte add-ons voor het.

zie “Externe Links” hieronder voor opties voor het verkrijgen van nieuwere releases.,

het installeren van PostGIS, procedurele talen, client interfaces, etc

extra pakketten bevatten procedurele taal runtimes, add-ons zoals PostGIS, taal client interfaces zoals psycopg2 voor Python, etc. U kunt een lijst krijgen met:

 apt-cache search postgres

administratie

pgAdmin III is een handige GUI voor PostgreSQL, het is essentieel voor beginners. Om het te installeren, typt u op de commandoregel:

 sudo apt-get install pgadmin3

u kunt ook de synaptische pakketbeheerder van het systeem gebruiken>beheermenu om deze pakketten te installeren.,

Basic Server Setup

om te starten, moeten we het wachtwoord instellen van de PostgreSQL gebruiker (rol) genaamd “postgres”; anders zullen we de server niet extern kunnen benaderen. Als de lokale” postgres ” Linux gebruiker, mogen we de server verbinden en manipuleren met behulp van het psql Commando.

Typ in een terminal:

sudo -u postgres psql postgres

Dit verbindt als een rol met dezelfde naam als de lokale gebruiker, d.w.z.” postgres”, met de database genaamd” postgres ” (eerste argument voor psql).,

Stel een wachtwoord in voor de” postgres”database rol met behulp van het commando:

\password postgres

en geef uw wachtwoord wanneer daarom wordt gevraagd. De wachtwoordtekst wordt voor beveiligingsdoeleinden verborgen voor de console.

Typ Control + D of \q om de posgresql-prompt te verlaten.

create database

om de eerste database aan te maken, die we “mydb” noemen, typt u gewoon:

 sudo -u postgres createdb mydb

install Server Instrumentation (for PgAdmin) for Postgresql 8.4 or 9.3

PgAdmin vereist de installatie van een add-on voor volledige functionaliteit., De” adminpack”addon, die het Server Instrumentation noemt, maakt deel uit van postgresql-contrib, dus je moet dat pakket installeren als je dat nog niet hebt gedaan:

 sudo apt-get install postgresql-contrib

om de extensie te activeren, voer je de adminpack uit voor “” Postgresql 8.4″”.sql script, typ gewoon:

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

voor” Postgresql 9.3 “+ install the adminpack” extension “in the” postgres”database:

 sudo -u postgres psql CREATE EXTENSION adminpack;

Alternatieve Server Setup

Als u niet van plan bent om verbinding te maken met de database vanaf andere machines, kan deze alternatieve setup eenvoudiger zijn.,

In Ubuntu is Postgresql standaard geconfigureerd om ‘ident sameuser’ – verificatie te gebruiken voor alle verbindingen van dezelfde machine. Bekijk de uitstekende Postgresql-documentatie voor meer informatie, maar in wezen betekent dit dat als uw Ubuntu-gebruikersnaam ‘foo’ is en u ‘foo’ als een Postgresql-gebruiker toevoegt, u verbinding kunt maken met de database zonder een wachtwoord te vereisen.,

aangezien de enige gebruiker die verbinding kan maken met een nieuwe installatie de postgres-gebruiker is, kunt u hier een database-account aanmaken (wat in dit geval ook een database-superuser is) met dezelfde naam als uw loginnaam en vervolgens een wachtwoord aanmaken voor de gebruiker:

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

Client programma ‘ s, standaard, verbinden met de lokale host met behulp van uw Ubuntu loginnaam en verwachten dat een database met die naam te vinden., Dus om de dingen erg gemakkelijk maken, gebruik je nieuwe superuser privileges verleend boven om een database te maken met dezelfde naam als uw login naam:

 sudo -u postgres createdb $USER

Aansluiten om uw eigen database om te proberen een aantal SQL moet nu net zo gemakkelijk als:

 psql

het Creëren van extra database is net zo makkelijk, dus bijvoorbeeld na het uitvoeren van deze:

 create database amarokdb;

U kunt ga je gang en vertel Amarok gebruik van postgresql voor het opslaan van de muziek catalogus., De naam van de database zou amarokdb zijn, de gebruikersnaam zou je eigen loginnaam zijn, en je hebt zelfs geen wachtwoord nodig dankzij ‘ident sameuser’ zodat je dat leeg kunt laten.

met behulp van pgAdmin III GUI

om een idee te krijgen van wat PostgreSQL kan doen, kunt u beginnen met het opstarten van een grafische client. In een terminaltype:

 pgadmin3

krijgt u de pgAdmin III-interface te zien. Klik op de” add a connection to a server ” knop (linksboven). Voer in het nieuwe dialoogvenster het adres 127.0.0.1 in (lokale host is standaard, dus het kan worden weggelaten.,), een beschrijving van de server, de standaard database (“mydb” in het voorbeeld hierboven), uw gebruikersnaam (“postgres”) en uw wachtwoord. Er is nog een stap nodig om pgAdmin III in staat te stellen verbinding te maken met de server, en dat is het bewerken van pg_hba.conf-bestand en wijzig de authenticatiemethode van peer naar md5 (werkt niet als u het wachtwoord niet hebt ingesteld):

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

en wijzig de regel

# Database administrative login by Unix domain socketlocal all postgres peer

naar

# Database administrative login by Unix domain socketlocal all postgres md5

nu moet u de serverconfiguratiewijzigingen herladen en verbinden pgAdmin III naar uw PostgreSQL database server.,

sudo /etc/init.d/postgresql reload

Met deze GUI kunt u beginnen met het aanmaken en beheren van databases, de database opvragen, SQL uitvoeren etc.

de Server beheren

voor meer informatie over het beheren van PostgreSQL (maar zonder de Ubuntu-specificaties) zie de officiële PostgreSQL-documentatie

gebruikers en rechten beheren

Gebruikersbeheer wordt in detail besproken in het hoofdstuk clientverificatie van de PostgreSQL-documentatie; het volgende is een inleiding om aan de slag te gaan.

om gebruikers te beheren, moet u eerst /etc/postgresql/current/main/pg_hba bewerken.,conf en wijzig de standaard configuratie die zeer vergrendeld en veilig is. Bijvoorbeeld, als je wilt dat postgres zijn eigen gebruikers beheert (niet gekoppeld met systeemgebruikers), dan voeg je de volgende regel toe:

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

wat betekent dat op je lokale netwerk (10.0.0.0/24 – vervang door je eigen lokale netwerk !), kunnen postgres gebruikers via het netwerk verbinding maken met de database met een klassiek koppel gebruiker / wachtwoord.

naast het toestaan van een gebruiker om verbinding te maken via het netwerk met de naar een database op de server, moet u PostgreSQL inschakelen om te luisteren over verschillende netwerken., Open hiervoor /etc / postgresql/current/main / postgresql.conf in uw favoriete editor en wijzig de listen_addresses zoals hieronder:

listen_addresses = '*'

om te luisteren op alle netwerkinterfaces. Zie de documenten voor listen_addresses voor andere opties.

om een database aan te maken met een gebruiker die volledige rechten heeft op de database, Gebruik je het volgende commando:

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

de eerste opdrachtregel maakt de gebruiker zonder databaseaanmaak rechten (-D) zonder gebruikersrechten toevoegen-A) en vraagt om het invoeren van een wachtwoord (-P)., De tweede opdrachtregel maakt de database ‘mydb met’ myuser ‘ als eigenaar.

dit kleine voorbeeld zal waarschijnlijk aan de meeste van uw behoeften voldoen. Voor meer details verwijzen wij u naar de bijbehorende manpages of de online documentatie.

de server herstarten

na het instellen van de netwerk / gebruikers moet u mogelijk de server herladen, hier is een voorgesteld commando om dit te doen.

sudo /etc/init.d/postgresql reload

enkele wijzigingen in postgresql.,conf vereist een volledige herstart, waardoor actieve verbindingen worden beëindigd en niet-gecommitteerde transacties worden afgebroken:

sudo /etc/init.d/postgresql restart

verder lezen

Als u niet bekend bent met SQL, wilt u misschien in deze krachtige taal kijken, hoewel sommige eenvoudige toepassingen van PostgreSQL deze kennis mogelijk niet vereisen (zoals een eenvoudig Django-project).

de website van PostgreSQL bevat een schat aan informatie over het gebruik van deze database. In het bijzonder is de tutorial een nuttig startpunt, maar u kunt de installatiestap overslaan omdat u deze al hebt geïnstalleerd met Ubuntu-pakketten.,

probleemoplossing

fe_sendauth: geen wachtwoord opgegeven

uw pg_hba.conf geeft aan dat MD5-verificatie moet worden gebruikt voor deze verbinding op basis van de origin-host, verbindingsmethode en de gevraagde gebruikersnaam/database, maar uw toepassing heeft geen wachtwoord opgegeven.

Wijzig de verificatiemodus of stel een wachtwoord in voor de gebruiker waarmee u verbinding maakt en geef dat wachtwoord op in de verbindingsinstellingen van uw toepassing.,

fataal: rol “myusername” bestaat niet

standaard maakt PostgreSQL verbinding met de PostgreSQL-gebruiker met dezelfde naam als de huidige unix-gebruiker. U hebt geen PostgreSQL-gebruiker met die naam in uw database aangemaakt.

Maak een geschikte gebruiker aan, of geef een andere gebruikersnaam op om mee te verbinden. In de commandoregel tools doet de-U vlag dit.

fataal: database ” myusername “bestaat niet

een gebruiker genaamd” myusername ” bestaat, maar er is geen database met dezelfde naam.,

standaard maakt PostgreSQL verbinding met de database met dezelfde naam als de gebruiker waarmee u verbinding maakt, maar het maakt de database niet automatisch aan als deze niet bestaat.

maak de database aan, of geef een andere database op om mee te verbinden.

fataal: Peer-authenticatie mislukt voor gebruiker”myusername”

u maakt verbinding met localhost via een unix-socket. Er bestaat een gebruiker met de naam “myusername”, maar uw huidige unix-gebruiker is niet dezelfde als die gebruikersnaam., PostgreSQL is ingesteld op het gebruik van “peer” authenticatie op unix sockets voor deze gebruiker/db combo, dus het vereist dat uw unix en postgresql Gebruikersnamen overeenkomen.

verbinding maken vanaf de unix-gebruiker die overeenkomt met de gewenste PostgreSQL – gebruiker-misschien met sudo – u de gebruikersnaam psql-of pg_hba wijzigen.conf om een andere Authenticatiemodus te gebruiken zoals ” md5 ” voor deze gebruikersnaam.,

kon niet verbinden met server: geen bestand of map

Een fout als deze (mogelijk met een ander UNIX socket pad, afhankelijk van uw installatie):

 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 een aantal dingen betekenen:

* De server draait niet;

* De server heeft een andere unix_socket_directory ‘ s tot de standaard in de clients libpq, hetzij door verschillende gecompileerde standaardwaarden of een niet-overeenkomende instelling;

* de server luistert op een andere “poort”., PostgreSQL emuleert TCP / IP poorten op unix sockets door het poortnummer te gebruiken als achtervoegsel voor het socket bestand, bijvoorbeeld 5432.

elimineer deze op hun beurt.

controleer eerst of de server draait. Op Ubuntu zal ps-u postgres-f u alle processen laten zien die als gebruiker postgres worden uitgevoerd – u wilt meerdere processen met de naam postgres zien.

Controleer nu of de server luistert waar uw client denkt dat het is. Om de socket directory van uw PostgreSQL-server te achterhalen:

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

of bij oudere PostgreSQL-versies veranderde unix_socket_directory als parameter de naam., Om de poort van de server te tonen (die geldt voor zowel TCP/IP als unix sockets):

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

Als u zelfs geen verbinding kunt maken met psql onder unix user postgres kunt u de socket dir controleren met 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

In dit geval is de eerste regel de socket locatie. Deze server heeft een socket directory / tmp met poort 5432.,

als uw client in een andere socket directory zoekt, probeert u waarschijnlijk via unix sockets verbinding te maken met het standaard socket pad en/of met de standaard poort, en de libpq waaraan uw client applicatie is gekoppeld heeft een ander gecompileerd unix socket pad en / of poort dan uw actieve PostgreSQL. Hoogstwaarschijnlijk heeft je LD_LIBRARY_PATH of /etc/ld.so.conf een andere libpq dan die welke bij je versie van PostgreSQL zat. Dit maakt over het algemeen niet veel uit, je kunt gewoon de socket directory overschrijven.,

Voor het opgeven van een alternatief socket directory en/poort poort om verbinding te maken, geef de socket dir als de host parameter in uw verbinding, opties, bijv. als een gebruiker verbinding bob de server luistert in /tmp op de haven 5433:

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

of in connectie-string formulier:

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

hetzelfde werkt met een cliënt die gebruik maakt van libpq (alle PostgreSQL client tools, plus b.v. psycopg2, de Pg gem in Ruby/Rails, PHP postgres en BOB, Perl ‘ s DBB::Pg, enz.)., Het werkt niet met niet-libpq clients zoals PgJDBC, py-postgresql, etc, maar de meeste van deze ondersteunen helemaal geen unix sockets. Zie de clientdocumentatie voor niet-libpq-gebaseerde clients.

officiële PostgreSQL-downloads

Het PostgreSQL-project biedt een officiële lijst van downloadlocaties, inclusief een Ubuntu-software repository, op de downloadpagina. In het bijzonder kunnen Ubuntu-gebruikers nieuwere PostgreSQL-versies krijgen dan die zijn verpakt in hun Ubuntu-release met behulp van apt – get via apt.postgresql.org.

voor ondersteuning en services rondom PostgreSQL zie de pagina services en support.,

EnterpriseDB

De PostgreSQL Linux downloads pagina bevat een sectie over “grafisch installatieprogramma” gebouwd door EnterpriseDB. U downloadt het installatieprogramma, wijzigt de eigenschappen ervan om het als opdracht uit te voeren (het heeft .run extensie), en voer het uit vanaf command prompt als in ” sudo whateveritwas.uitvoeren”.

u eindigt met

  • geconfigureerde DB server instantie, die begint met uw server
  • pgAdmin III UI client applicatie

merk op dat de geïnstalleerde software niet zal worden geïntegreerd met Ubuntu software center., Als gevolg hiervan ontvangt u geen beveiligingsupdates van Ubuntu. Echter, de geïnstalleerde versie zal nauw overeenkomen met de nieuwste Ubuntu-versie.

Turnkey Linux

een op Ubuntu gebaseerd PostgreSQL-apparaat is een van de makkelijkste manieren om aan de slag te gaan met PostgreSQL op Ubuntu. Het maakt deel uit van een familie van vooraf geà ntegreerde kant-en-klare Linux-Softwareapparaten op basis van Ubuntu 10.04.1 (Lucid LTS).