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).
Geef een reactie