Aan de slag met PostgreSQL. Installatie vanuit de besturingssysteemrepository. Rechten toekennen aan gebruikers

Nadat je hebt gedownload Engelse zoekwoordendatabase, moet u lokaal een databaseserver installeren en leren hoe u selecties maakt. Om dit te doen, bieden wij stapsgewijze instructies.

BELANGRIJK: Als u geen ervaring heeft met het werken met databases of als deze ervaring minimaal is, raden we u ten zeerste aan om met een minimale basis te beginnen om het proces uit te werken.

De schermafbeeldingen in de instructies tonen het werken met een minimale basis, en dienovereenkomstig wordt de tijd aangegeven voor een minimale basis, maar het werken met een uitgebreide en maximale basis zal langer duren.

Downloaden en installeren van de PostgreSQL-databaseserver

http://www.postgresql.org/download/windows/

1. Downloaden gratis programma voor de basis PostgreSQL-gegevens van de officiële website http://www.postgresql.org/
downloaden/windows/

http://www.enterprisedb.com/products-services-training/pgdownload#windows:

Volg dan de link naar gedetailleerde pagina databaseversies voor verschillende besturingssystemen: http://www.enterprisedb.com/
producten-diensten-training/
pgdownload#windows:


BELANGRIJK: Wij raden u aan de databaseserver te installeren en daarin selecties te maken 64-bit systeem met minimaal 6 GB RAM bij het werken met minimale en uitgebreide databases. Bij een maximale basis is de aanbevolen hoeveelheid RAM vanaf 32 GB ook wenselijk snelle schijf. Op een computer met een 32-bits systeem zal het proces van het importeren van gegevens, het indexeren ervan en het daadwerkelijk ophalen ervan heel erg lang duren, dus het is beter om dit idee te laten varen.

Als u de bitdiepte van uw besturingssysteem niet weet, kunt u deze opzoeken in de computereigenschappen ( rechter knop muis op het item "Computer", selecteer "Eigenschappen" in het menu):


2. Installeer de gedownloade PostgreSQL-database. Tijdens de installatie is bijna alles standaard...


...behalve een paar dingen.

3. Start de tabeloptimalisatiebewerking op een vergelijkbare manier:

vacuüm "eng_data_table";


Optimalisatie duurt gemiddeld 15-30 minuten.

Opmerking: We voeren verzoeken één voor één uit, waarbij we eerst eerdere verzoeken wissen die al zijn uitgevoerd. U kunt zien of het verzoek is voltooid of niet via het bericht in het uitvoervenster onderaan (het verschijnt wanneer het verzoek is voltooid), en u kunt de uitvoeringstijd vinden in de statusbalk onder aan het venster.

PostgreSQL is een platformonafhankelijk object-relationeel DBMS met open broncode. Dit artikel laat zien hoe u PostgreSQL installeert Ubuntu-Linux, maak er verbinding mee en voer een paar uit eenvoudige SQL-query's en hoe u back-ups instelt.

Om PostgreSQL 9.2 op Ubuntu 12.10 te installeren, voert u de volgende opdrachten uit:

sudo apt-add-repository ppa:pitti/postgresql
sudo apt-get-update
sudo apt-get install postgresql-9.2

Laten we proberen via de shell met het DBMS te werken:

sudo -u postgres psql

Laten we een testdatabase en een testgebruiker maken:

DATABASE MAKEN test_database;
MAAK GEBRUIKER test_user MET wachtwoord "qwerty";
VERLEEN ALLES OP DATABASE test_database AAN test_user;

Om de shell te verlaten, voert u de opdracht \q in.

Laten we nu proberen met de gemaakte database te werken namens test_user:

psql -h localhost test_database test_gebruiker

Laten we een nieuwe tabel maken:

CREËER SEQUENTIE user_ids;
CREATE TABLE-gebruikers (
id INTEGER PRIMAIRE SLEUTEL STANDAARD NEXTVAL ("user_ids" ),
inloggen CHAR(64) ,
wachtwoord CHAR(64));

Houd er rekening mee dat PostgreSQL, in tegenstelling tot sommige andere DBMS'en, geen kolommen heeft met de eigenschap auto_increment. In plaats daarvan gebruikt Postgres reeksen. Op op dit moment het is voldoende om te weten dat we met de nextval-functie kunnen komen unieke nummers voor een bepaalde reeks:

SELECTEER VOLGENDE ("user_ids");

Door de standaardwaarde voor het id-veld van de gebruikerstabel in te stellen op NEXTVAL("user_ids"), hebben we hetzelfde effect bereikt als auto_increment. Bij het toevoegen van nieuwe records aan de tabel hoeven we de id niet op te geven, omdat er automatisch een unieke id wordt gegenereerd. Meerdere tabellen kunnen dezelfde volgorde gebruiken. Op deze manier kunnen we garanderen dat de waarden van sommige velden in deze tabellen niet overlappen. In deze zin zijn reeksen flexibeler dan auto_increment.

Exact dezelfde tabel kan worden gemaakt met slechts één opdracht:

MAAK TABEL gebruikers2 (
id SERIËLE PRIMAIRE SLEUTEL,
inloggen CHAR(64) ,
wachtwoord CHAR(64));

In dit geval wordt de volgorde voor het id-veld automatisch aangemaakt.

Met behulp van de opdracht \d kunt u nu een lijst met alle beschikbare tabellen bekijken, en met behulp van \d gebruikers kunt u een beschrijving van de gebruikerstabel zien. Als u niet de informatie krijgt waarnaar u op zoek bent, probeer dan \d+ in plaats van \d . U kunt een lijst met databases opvragen met de opdracht \l en naar een specifieke database overschakelen met de opdracht \c dbname. Om hulp bij opdrachten weer te geven, zegt u \?

. Het is belangrijk op te merken dat in PostgreSQL standaard tabel- en kolomnamen worden gecast. Als u dit gedrag niet wilt, kunt u dubbele aanhalingstekens gebruiken:

CREATE TABLE "anotherTable" ("eenWaarde" VARCHAR (64) );

Een ander kenmerk van PostgreSQL dat problemen kan veroorzaken bij het starten met dit DBMS zijn de zogenaamde “schema’s”. Een schema is zoiets als een naamruimte voor tabellen, zoals een map met tabellen in een database.

Een schema maken:

SCHEMA-boekingen MAKEN;

Overstappen naar schema:

SET zoekpad NAAR boekingen;

Met de opdracht \dn kunt u een lijst met bestaande schema's bekijken. Het standaardschema heet public. In principe kunt u PostgreSQL met succes gebruiken zonder dat u op de hoogte bent van het bestaan ​​van schema's. Maar bij het werken met verouderde code, en in sommige randgevallen, kan kennis over schema's erg nuttig zijn.

Voor het overige verschilt het werken met PostgreSQL niet veel van het werken met andere relationele DBMS'en:

INSERT INTO gebruikers (login, wachtwoord)
WAARDEN ("afiskon" , "123456" );
SELECTEER * VAN gebruikers;

Als u nu vanaf een andere machine verbinding probeert te maken met Postgres, mislukt het volgende:

psql -h 192.168.0.1 test_database test_gebruiker

Psql: kan geen verbinding maken met de server: Verbinding geweigerd
Draait de server op host "192.168.0.1" en accepteert deze
TCP/IP-verbindingen op poort 5432?

Om dit op te lossen, voegt u de regel toe:

luister_adressen = "localhost,192.168.0.1"

...ook naar het bestand /etc/postgresql/9.2/main/postgresql.conf.

Systeembeheer

Dit bericht is korte instructies voor beginners, voor degenen die PostgreSQL voor de eerste keer hebben geïnstalleerd. Alles is hier noodzakelijke informatie om aan de slag te gaan met PostgreSQL.

Verbinding maken met het DBMS

Het eerste dat u moet doen, is toegang krijgen tot PostgreSQL, toegang als superuser.
Authenticatie-instellingen bevinden zich in het bestand pg_hba.conf.
  1. lokaal alle postgres-peers
Deze regel zegt dat de postgres-gebruiker verbinding kan maken met elke lokale database PostgreSQL-DBMS via stopcontact. Het is niet nodig om een ​​wachtwoord in te voeren; het besturingssysteem verzendt de gebruikersnaam en deze wordt gebruikt voor authenticatie.
Laten we verbinding maken:
  1. $ sudo -u postgres psql postgres postgres
Om verbinding te kunnen maken via het netwerk, moet je de regel toevoegen aan pg_hdba.conf:
  1. # TYPE DATABASE GEBRUIKERSADRES METHODE
  2. hostssl allemaal allemaal 0.0.0.0/0 md5
Authenticatiemethode md5 betekent dat u een wachtwoord moet invoeren om verbinding te maken. Dit is niet erg handig als u vaak de psql-console gebruikt. Als je sommige acties wilt automatiseren, is het slechte nieuws dat psql geen wachtwoord als argument accepteert. Er zijn twee manieren om deze problemen op te lossen: het instellen van de juiste omgevingsvariabele en het opslaan van het wachtwoord in een speciaal .pgpass-bestand.

De omgevingsvariabele PGPASSWORD instellen

Ik zal meteen zeggen dat het beter is om deze methode niet te gebruiken, omdat je met sommige besturingssystemen kunt bekijken gewone gebruikers omgevingsvariabelen met behulp van ps. Maar als je wilt, moet je in de terminal schrijven:
  1. export PGPASSWORD=mijnwachtwoord
De variabele zal beschikbaar zijn in de huidige sessie. Als u voor alle sessies een variabele moet instellen, moet u de regel uit het voorbeeld toevoegen aan het bestand .bashrc of .bash_profile

Het wachtwoord opslaan in het .pgpass-bestand

Als we het over Linux hebben, dan zou het bestand zich in $HOME (/home/gebruikersnaam) moeten bevinden. Alleen de eigenaar (0600) moet schrijf- en leesrechten hebben. U moet regels als deze naar het bestand schrijven:
  1. hostnaam:poort:database:gebruikersnaam:wachtwoord
U kunt in de eerste vier velden een “*” schrijven, wat betekent dat er niet gefilterd wordt (volledige selectie).

Hulpinformatie verkrijgen

\? - zal alles weggeven beschikbare commando's samen met hun korte beschrijving,
\h - toont een lijst met alle beschikbare zoekopdrachten,
\h CREATE - biedt hulp bij een specifiek verzoek.

DBMS-gebruikersbeheer

Hoe krijg ik een lijst met PostgreSQL-gebruikers?
  1. Of u kunt de tabel pg_user opvragen.

SELECTEER * VAN pg_user;

Een nieuwe PostgreSQL-gebruiker maken Van schelp
  1. psql dit kan worden gedaan met behulp van de opdracht CREATE.
CREËER GEBRUIKERSgebruikersnaam MET wachtwoord "wachtwoord" ;
  1. Of u kunt de terminal gebruiken.
createuser -S -D -R -P gebruikersnaam

U wordt gevraagd een wachtwoord in te voeren.

  1. Het gebruikerswachtwoord wijzigen

ALTER GEBRUIKER gebruikersnaam MET WACHTWOORD "wachtwoord" ;

Gebruikersrollen wijzigen
  1. Voer de volgende query uit om de gebruiker toestemming te geven om databases te maken:

ALTER ROLE gebruikersnaam WITH CREATEDB ;

Databasebeheer
  1. Een lijst met databases weergeven in de psql-terminal: Hetzelfde vanaf de Linux-terminal:
psql-l
  1. Een database maken vanuit psql (PostgreSQL Terminal)
CREËER DATABASE dbnaam EIGENAAR dbadmin ; Creatie nieuwe basis
  1. gegevens via de terminal:

createb -O gebruikersnaam dbnaam;

Als de gebruiker de eigenaar van de database is, heeft hij alle rechten. Maar als u toegang wilt geven aan een andere gebruiker, kunt u dit doen met het GRANT-commando. Met de onderstaande zoekopdracht kan de gebruiker verbinding maken met de database. Maar vergeet het niet configuratiebestand pg_hba.conf, moet het ook over de juiste verbindingsrechten beschikken.
  1. VERLEEN VERBINDING OP DATABASE dbnaam NAAR dbadmin;

De eerste test om aan te tonen dat u toegang hebt tot de databaseserver, is door te proberen een database aan te maken. Gelanceerd PostgreSQL-server

kan meerdere databases beheren. Normaal gesproken wordt voor elk project of elke gebruiker een aparte database gebruikt. Het is mogelijk dat de beheerder van uw machine al een database voor u heeft aangemaakt. Het had u de naam van uw database moeten vertellen. In dit geval kunt u dit gedeelte overslaan en doorgaan naar het volgende. Om een ​​nieuwe database te maken, in dit voorbeeld mydb genoemd, kunt u de volgende opdracht gebruiken: $ createb mydb

Als de opdracht zonder berichten is voltooid, dan deze stap

is met succes afgerond en u kunt het onderstaande overslaan tot het einde van dit gedeelte.

Als je iets krijgt dat lijkt op: createb: command

niet gevonden dit betekent dat het PostgreSQL-product niet correct is geïnstalleerd. Ofwel is niet alles geïnstalleerd, ofwel is het zoekpad in uw shell niet correct ingesteld. Probeer deze opdracht aan te roepen met behulp van het volledige pad:

$ /usr/local/pgsql/bin/createdb mydb

Volledig pad

kan op uw machine anders zijn. Neem contact op met uw beheerder of bekijk de installatie-instructies om de situatie te corrigeren.

waar uw inlognaam wordt vermeld in plaats van Joe. Dit bericht verschijnt als de beheerder geen gebruiker voor u heeft aangemaakt in PostgreSQL. (Een PostgreSQL-gebruiker is geen gebruiker van een besturingssysteem.) Als u een beheerder bent, raadpleegt u Hoofdstuk 20 voor informatie over het aanmaken van een gebruiker. U dient zich te registreren bij besturingssysteem onder de naam van de gebruiker waaronder PostgreSQL draait (meestal postgres) om de eerste gebruiker in het DBMS aan te maken.

Voor de opdracht database maken kunt u in PostgreSQL ook een gebruikersnaam opgeven die verschilt van de gebruikersnaam van uw huidige besturingssysteem; in dit geval moet u de PostgreSQL-gebruikersnaam instellen met de optie of instelling -U omgevingsvariabele PGUSER.

Als

gewenste gebruiker

bestaat maar niet over de vereiste machtigingen beschikt om een ​​database te maken, ziet u het volgende bericht: createb: het maken van de database is mislukt: ERROR: toestemming geweigerd om database te maken Niet elke gebruiker heeft toestemming om nieuwe databases aan te maken. zal alle bestanden die aan de opgegeven database zijn gekoppeld fysiek verwijderen, zodat ze niet kunnen worden hersteld. Voer deze handeling dus met grote zorg uit.

1. Installatie

1.1. Installatie vanuit de officiële repository

Als de nieuwste beschikbare versie van PostgreSQL belangrijk voor je is (zo niet, dan raad ik je aan om goed na te denken), dan moet je deze installeren vanuit de officiële PostgreSQL-repository. Dit kunt u doen door de officiële instructies te volgen. Vervolgens moet u de pakketten bijwerken:

$ sudo apt-get-update

En installeer PostgreSQL met het commando:

$ sudo apt-get install postgresql-x.x

  • x.x- vereiste versie

U kunt een lijst met alle beschikbare versies bekijken met de opdracht:

$ sudo apt-cache zoeken postgresql

1.2. Installatie vanuit de besturingssysteemrepository

Het installeren van PostgreSQL vanuit de OS-repository gebeurt door twee hoofdpakketten toe te voegen:

$ sudo apt-get install postgresql postgresql-contrib

2. PostgreSQL-console

Alle beschikbare bewerkingen op databases en gebruikers worden uitgevoerd vanaf de console psql.

2.1. Log in op de console

Eerst moet u inloggen als gebruiker postgres, dit is alleen mogelijk met rechten wortel:

# su - postgres

Gebruiker postgres is een soort superuser voor de PostgreSQL-database. Vervolgens onder de gebruiker vandaan postgres U kunt inloggen op de console:

Of eenvoudiger: log gewoon in op de console psql onder gebruiker postgres:

$ sudo -u postgres psql

2.2. De console verlaten

Wanneer alle bewerkingen op PostgreSQL-gebruikers en databases in de psql-console zijn voltooid, is het niet meteen mogelijk om erachter te komen hoe u deze kunt afsluiten. Alles is hier heel eenvoudig:

Postgres=#\q

En indien nodig verlaten we de gebruiker postgres:

3. PostgreSQL-gebruikers

3.1. Een gebruiker aanmaken

Alles is hier vrij eenvoudig:

# MAAK GEBRUIKERSgebruikersnaam AAN MET WACHTWOORD "12345";

  • gebruikersnaam- nieuwe gebruiker inloggen
  • ‘12345’ - Gebruikerswachtwoord. Ingevoerd tussen aanhalingstekens

3.2. Een gebruiker verwijderen

Hier is het nog eenvoudiger:

# DROP GEBRUIKER-gebruikersnaam;

  • gebruikersnaam- login van de gebruiker die verwijderd moet worden.

4. Databases

Alle manipulaties met de database worden ook in de console uitgevoerd psql.

4.1. Een database maken

Alles is hier hetzelfde als bij het aanmaken van een gebruiker:

# CREATE DATABASE dbnaam;

4.2. Een database verwijderen

# DROP DATABASE dbnaam;
  • dbnaam- naam van de database die moet worden verwijderd

Houd er rekening mee dat de database in bepaalde gevallen zal weigeren te worden verwijderd:

  • Of er gebruikers zijn met rechten op deze database. Voordat de database wordt verwijderd, moeten hun rechten worden ingetrokken. Hierover later meer.
  • Als er ten minste één open verbindingssessie met de database is. In dit geval moeten de sessies worden gesloten. IN als laatste redmiddel, kunt u de interactie van de servers met deze database eenvoudigweg stopzetten op het moment dat deze wordt verwijderd (hoewel het weinig zin heeft om ze te starten nadat de database is verwijderd)

4.3. Rechten toekennen aan gebruikers

Beschikbaarheid van database en gebruikers in PostgreSQL-systeem levert op zichzelf geen resultaat op. Voor correcte werking specifieke gebruiker met een specifieke database moeten hem rechten worden toegewezen om ermee te werken. Om dit te doen, voert u de opdracht uit:

# VERLEEN ALLE PRIVILEGES OP DATABASE dbname AAN gebruikersnaam;

  • dbnaam- naam van de database waartoe toegangsrechten moeten worden verleend
  • gebruikersnaam- de naam van de gebruiker waarover rechten worden verleend gespecificeerde basis gegevens

4.4. Gebruikersrechten verwijderen

Soms wordt het nodig om de gebruiker die de database beheert te wijzigen, of eenvoudigweg de rechten voor latere verwijdering in te trekken. Ik raad aan om dit commando niet te verwaarlozen en te handelen volgens het principe “Eén gebruiker beheert één database.”