Andmebaasi loomine. Viiteteabe hankimine. Andmebaasi kasutajate haldus

Esimene test, mis näitab, et teil on juurdepääs andmebaasiserverile, on andmebaasi loomine. Käivitatud PostgreSQL server saab hallata mitut andmebaasi. Tavaliselt kasutatakse iga projekti või kasutaja jaoks eraldi andmebaasi. Võimalik, et teie masina administraator on teie jaoks juba andmebaasi loonud. See oleks pidanud teile andma teie andmebaasi nime. Sel juhul võite selle jaotise vahele jätta ja liikuda järgmise juurde.

Et luua uus alus andmed, mida selles näites nimetatakse mydb, saate kasutada järgmist käsku: $ Createdb mydb

Kui käsk lõpetati ilma teadeteta, siis see samm

läbiti edukalt ja võite allpool kirjutatu vahele jätta kuni selle jaotise lõpuni.

Kui saate midagi sarnast: loodudb: käsk

ei leitud see tähendab, et PostgreSQL-i toodet ei installitud õigesti. Kas kõike ei installitud või otsingutee teie kestas ei olnud õigesti määratud. Proovige seda käsku kutsuda, kasutades täielikku teed:

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

Täielik tee

võib teie masinal olla erinev. Olukorra parandamiseks võtke ühendust oma administraatoriga või vaadake installijuhiseid.

Veel üks sõnum, mille võite saada: loodudb: ei saa ühendust andmebaasiga postgres: ei saa ühendust serveriga: Sellist faili või kataloogi pole sellist faili või kataloogi pole. Kas server töötab kohapeal ja võtab ühendust Unixi domeenisokliga "/tmp/. s. PGSQL.5432"? See tähendab, et serverit ei käivitatud või seda ei käivitatud nii, nagu käsk createb eeldas. Jällegi vaadake installijuhiseid või konsulteerige administraatoriga.). Kui olete administraator, vaadake peatükist 20 teavet kasutaja loomise kohta.

DBMS-is esimese kasutaja loomiseks peate operatsioonisüsteemi sisse logima selle kasutaja nime all, kelle all PostgreSQL töötab (tavaliselt postgres). Andmebaasi loomise käsu jaoks saate PostgreSQL-is määrata ka kasutajanime, mis erineb teie praegusest operatsioonisüsteemi kasutajanimest; sel juhul peate määrama PostgreSQL-i kasutajanime, kasutades suvandit -U või määrates keskkonnamuutuja PGUSER. Kui

soovitud kasutaja

on olemas, kuid tal pole andmebaasi loomiseks vajalikke õigusi, näete järgmist teadet: Createdb: andmebaasi loomine ebaõnnestus: VIGA: andmebaasi loomise luba on keelatud

Igal kasutajal ei ole luba uute andmebaaside loomiseks. Kui PostgreSQL lükkab tagasi teie katsed andmebaase luua, peab teie masina administraator andma teile õigused andmebaaside loomiseks. Sel juhul konsulteerige temaga. Kui installisite PostgreSQL-i ise, peate selle õpetuse jaoks sisse logima selle kasutajana, kelle all andmebaasiserverit käitate.

Saate luua ka mis tahes muu nimega andmebaase.

PostgreSQL võimaldab luua ühes serveris suvalise arvu andmebaase. Andmebaasi nimed peavad koosnema tähtedest ja numbritest (peab alati olema täht ees) ning olema kuni 63 baiti pikk. Üsna mugav on luua andmebaasi kasutajaga sama nimega. Paljud tööriistad kasutavad seda vaikimisi andmebaasi nimena, nii et te ei pea klõpsama liiga palju nuppe. Sellise kasutajaga sama nimega andmebaasi loomiseks sisestage lihtsalt: $ Createdb Kui te ei soovi oma andmebaasi edaspidi kasutada, saate selle kustutada. Näiteks kui olete andmebaasi mydb omanik (looja), saate selle järgmise käsuga loobuda: $ dropdb mydb

Kui PostgreSQL-i uusim saadaolev versioon on teile oluline (kui mitte, soovitan teil hoolikalt mõelda), peate selle installima ametlikult PostgreSQL-i hoidla. Seda saab teha ametlikke juhiseid järgides. Seejärel peaksite pakette värskendama:

$ sudo apt-get värskendus

Ja installida PostgreSQL käsk:

$ sudo apt-get install postgresql-x.x

  • x.x- nõutav versioon

Saate vaadata kõigi saadaolevate versioonide loendit käsuga:

$ sudo apt-cache otsing postgresql

1.2. Installimine OS-i hoidlast

PostgreSQL-i installimine OS-i hoidlast toimub kahe põhipaketi lisamisega:

$ sudo apt-get install postgresql postgresql-contrib

2. PostgreSQL konsool

Kõik saadaolevad toimingud andmebaaside ja kasutajatega tehakse konsoolist psql.

2.1. Logige sisse konsooli

Kõigepealt peate kasutajana sisse logima postgres, see on võimalik ainult õigustega juur:

# su - postgres

Kasutaja postgres on PostgreSQL-i andmebaasi omamoodi superkasutaja. Siis kasutaja alt postgres saate konsooli sisse logida:

Või lihtsam, logige lihtsalt konsooli sisse psql kasutaja all postgres:

$ sudo -u postgres psql

2.2. Konsoolist väljumine

Kui kõik toimingud PostgreSQL-i kasutajate ja andmebaasidega on psql-konsoolis tehtud, ei ole kohe võimalik aru saada, kuidas sellest väljuda. Siin on kõik väga lihtne:

Postgres=#\q

Ja vajadusel jätame kasutaja postgres:

3. PostgreSQL-i kasutajad

3.1. Kasutaja loomine

Siin on kõik üsna lihtne:

# LOO KASUTAJA kasutajanimi PAROOLIGA "12345";

  • kasutajanimi- uue kasutaja sisselogimine
  • ‘12345’ - Kasutaja parool. Sisestatud jutumärkidesse

3.2. Kasutaja kustutamine

Siin on veelgi lihtsam:

# DOP USER kasutajanimi;

  • kasutajanimi- kustutamist vajava kasutaja sisselogimine.

4. Andmebaasid

Kõik manipulatsioonid andmebaasiga tehakse ka konsoolis psql.

4.1. Andmebaasi loomine

Siin on kõik sama, mis kasutaja loomisel:

# CREATE DATABASE dbname;

4.2. Kustutage andmebaas

# DROP DATABASE dbname;
  • dbname- kustutatava andmebaasi nimi

Pange tähele, et andmebaas keeldub teatud juhtudel kustutamast:

  • Kui selle andmebaasi õigustega kasutajaid on. Enne andmebaasi kustutamist tuleb nende õigused tühistada. Sellest lähemalt hiljem.
  • Kui andmebaasiga on avatud vähemalt üks seanss. Sel juhul tuleb istungid sulgeda. IN viimase abinõuna, saate lihtsalt peatada serverite suhtlemise selle andmebaasiga selle eemaldamise ajal (kuigi pärast andmebaasi kustutamist pole nende käivitamisel mingit mõtet)

4.3. Kasutajatele õiguste määramine

Andmebaasi ja kasutajate kättesaadavus PostgreSQL süsteem iseenesest ei anna tulemusi. Sest õige toimimine konkreetne kasutaja konkreetse andmebaasiga tuleb talle anda õigused sellega töötamiseks. Selleks käivitage käsk:

# ANNA KÕIK ANDMEBAASI PRIVILEEGID dbname kasutajanimele;

  • dbname- andmebaasi nimi, millele juurdepääsuõigused tuleb anda
  • kasutajanimi- kasutaja nimi, kellele antakse õigused määratud alus andmeid

4.4. Kasutajaõiguste eemaldamine

Mõnikord on vaja muuta andmebaasi haldavat kasutajat või lihtsalt tühistada õigused selle hilisemaks kustutamiseks. Soovitan seda käsku mitte tähelepanuta jätta ja tegutseda põhimõttel "Üks kasutaja haldab üht andmebaasi."

Süsteemi administreerimine

See postitus on lühikesed juhised algajatele, neile, kes installisid PostgreSQL-i esimest korda. Kõik on siin vajalikku teavet PostgreSQL-iga alustamiseks.

Ühenduse loomine DBMS-iga

Esimene asi, mida teha, on saada juurdepääs PostgreSQL-ile, juurdepääs superkasutajana.
Autentimisseaded asuvad failis pg_hba.conf.
  1. kohalikud kõik postgresi eakaaslased
See rida ütleb, et postgresi kasutaja saab ühenduse luua mis tahes kohaliku andmebaasiga PostgreSQL DBMS pistikupesa kaudu. Parooli pole vaja sisestada, operatsioonisüsteem edastab kasutajanime ja seda kasutatakse autentimiseks.
Ühendame:
  1. $ sudo -u postgres psql postgres postgres
Võrgu kaudu ühenduse loomiseks peate failile pg_hdba.conf lisama rea:
  1. # TÜÜPI ANDMEBAAS KASUTAJA AADRESSI MEETOD
  2. hostssl kõik kõik 0.0.0.0/0 md5
Autentimismeetod md5 tähendab, et ühenduse loomiseks peate sisestama parooli. See pole eriti mugav, kui kasutate sageli psql-konsooli. Kui soovite mõnda tegevust automatiseerida, on halb uudis see, et psql ei aktsepteeri parooli argumendina. Nende probleemide lahendamiseks on kaks võimalust: määrata sobiv keskkonnamuutuja ja salvestada parool spetsiaalsesse .pgpass faili.

Keskkonnamuutuja PGPASSWORD seadistamine

Ütlen kohe, et parem on seda meetodit mitte kasutada, sest mõned operatsioonisüsteemid võimaldavad teil vaadata tavakasutajatele keskkonnamuutujad kasutades ps. Aga kui soovite, peate terminali kirjutama:
  1. eksportida PGPASSWORD=mypasswd
Muutuja on saadaval praeguses seansis. Kui peate määrama muutuja kõigi seansside jaoks, siis peate lisama näite rea .bashrc või .bash_profile faili

Parooli salvestamine .pgpass-faili

Kui me räägime Linuxist, siis peaks fail asuma kaustas $HOME (/home/username). Kirjutamis- ja lugemisõigus peab olema ainult omanikul (0600). Peate faili kirjutama sellised read:
  1. hostinimi:port:andmebaas:kasutajanimi:parool
Esimesele neljale väljale saate kirjutada “*”, mis tähendab, et filtreerimist ei toimu (täielik valik).

Abiinfo hankimine

\? - annab kõik ära saadaolevad käsud koos nende lühikirjeldusega,
\h - kuvab kõigi saadaolevate päringute loendi,
\h CREATE – pakub abi konkreetse päringu puhul.

DBMS-i kasutajahaldus

Kuidas saada PostgreSQL-i kasutajate loendit?
  1. Või võite esitada päringu tabelist pg_user.

SELECT * FROM pg_user ;

Uue PostgreSQL-i kasutaja loomine Alates kest
  1. psql seda saab teha käsu CREATE abil.
LOO KASUTAJA kasutajanimi parooliga "parool" ;
  1. Või võite kasutada terminali.
loojakasutaja -S -D -R -P kasutajanimi

Teil palutakse sisestada parool.

  1. Kasutaja parooli muutmine

MUUDA KASUTAJA kasutajanimi PAROOLIGA "parool" ;

Kasutajarollide muutmine
  1. Kasutajale andmebaaside loomise loa andmiseks käivitage järgmine päring:

ALTER ROLE kasutajanimi WITH CREATEDB ;

Andmebaasi haldamine
  1. Andmebaaside loendi kuvamine psql terminalis: Sama Linuxi terminalist:
psql -l
  1. Andmebaasi loomine psql-ist (PostgreSQL-i terminal)
LOO ANDMEBAAS dbname OMANIK dbadmin ;
  1. Uue andmebaasi loomine terminali abil:

Createdb -O kasutajanimi dbname;

Andmebaasi juurdepääsuõiguste seadistamine Kui kasutaja on andmebaasi omanik, siis on tal kõik õigused. Kuid kui soovite anda juurdepääsu teisele kasutajale, saate seda teha käsu GRANT abil. Allolev päring võimaldab kasutajal andmebaasiga ühenduse luua. Kuid ärge unustage konfiguratsioonifail
  1. pg_hba.conf, peab sellel olema ka vastavad ühenduse õigused.

ANNA ÜHENDUS ANDMEBAASIS dbname KODULE dbadmin ;

Esimene võimalus kontrollida, kas teil on andmebaasiserverile juurdepääs, on proovida andmebaasi luua. Töötav PostgreSQL-server suudab hallata mitut andmebaasi, mis võimaldab teil luua erinevate projektide ja kasutajate jaoks eraldi andmebaase.

Teie administraator võib olla juba loonud teie jaoks andmebaasi ja andnud teile selle nime. Sel juhul võite selle sammu vahele jätta ja liikuda järgmise jaotise juurde.

Andmebaasi loomiseks, selles näites nimega mydb, käivitage järgmine käsk:

Kui te ei näe ühtegi teadet, on toiming edukas ja võite selle jaotise jätkamise vahele jätta.

Kui näete sellist teadet:

Createdb: käsku ei leitud

See tähendab, et PostgreSQL ei installitud õigesti. Kas see pole üldse installitud või ei sisaldu selle kataloog shellikäsu otsinguteel. Proovige sama käsku kutsuda, täpsustades absoluutne tee:

Kui saate midagi sarnast: loodudb: käsk

See tee võib teie jaoks olla erinev. Võtke ühendust oma administraatoriga või kontrollige, kas olukorra parandamiseks järgiti installijuhiseid.

Teine võimalik vastus:

Createdb: ühenduse loomine postgresi andmebaasiga ebaõnnestus: serveriga ühenduse loomine ebaõnnestus: Sellist faili või kataloogi pole. Kas see tõesti töötab kohapeal ja aktsepteerib ühendusi domeeni pesa "/tmp/.s.PGSQL.5432" kaudu?

See tähendab, et server on maas või loodudb ei saa sellega ühendust. Sel juhul vaadake üle installijuhised või võtke ühendust administraatoriga.

Võite saada ka järgmise sõnumi:

Createdb: postgresi andmebaasiga ühenduse loomine ebaõnnestus: TÄHTIS: rolli "joe" pole olemas

kus kuvatakse teie kasutajanimi. See näitab, et administraator pole teie jaoks PostgreSQL-i kontot loonud. (PostgreSQL-i kontod erinevad operatsioonisüsteemi kasutajakontodest.) Kui olete ise administraator, lugege 20. peatükist juhiseid kontode loomise kohta. Uue kasutaja loomiseks peate saama operatsioonisüsteemi kasutajaks, mille alla PostgreSQL installiti (tavaliselt postgres). Samuti on võimalik, et teile on määratud nimi PostgreSQL kasutaja, mis ei ühti teie nimega OS-is; sel juhul peate selgelt määrama oma PostgreSQL-i kasutajanime, kasutades lülitit või sätet -U keskkonna muutuja PGUSER.

Kui teil on konto kasutaja, kuid tal pole õigusi andmebaasi luua, näete teadet:

Createdb: Andmebaasi loomine ebaõnnestus: VIGA: andmebaasi loomise õigusi pole

Kõigil kasutajatel pole lubatud andmebaase luua. Kui PostgreSQL keeldub teie jaoks andmebaase loomast, vajate selleks luba. Sellisel juhul võtke ühendust oma administraatoriga. Kui installisite PostgreSQL-i ise, peaksite selle sissejuhatuse jaoks olema sisse logitud andmebaasiserverit käitava kasutajana.

Saate luua ka teiste nimedega andmebaase. PostgreSQL võimaldab teil luua nii palju andmebaase, kui soovite. Andmebaasi nimed peavad algama tähega ja olema kuni 63 tähemärgi pikkused. Andmebaasi nimena on mugav kasutada oma praegust kasutajanime. Paljud utiliidid võtavad selle nime vaikimisi, nii et saate käskude tippimise lihtsamaks muuta. Selle nimega andmebaasi loomiseks sisestage lihtsalt:

$loodudb

Kui te ei soovi enam oma andmebaasi kasutada, saate selle kustutada. Näiteks kui olete andmebaasi mydb omanik (looja), saate selle hävitada, käivitades järgmise käsu:

$dropdb mydb

(See käsk ei eelda, et andmebaasi vaikenimi on praeguse kasutaja nimi; peate selle selgelt määrama.) See kustutab füüsiliselt kõik andmebaasiga seotud failid ja kuna seda toimingut ei saa tagasi võtta, ärge tehke seda ilma mõeldes tagajärgedele.

PostgreSQL on platvormideülene avatud objektiga relatsiooniline DBMS lähtekoodi. See artikkel näitab teile, kuidas PostgreSQL-i installida Ubuntu Linux, ühendage sellega ja looge paar lihtsad SQL-päringud, samuti kuidas varukoopiaid seadistada.

PostgreSQL 9.2 installimiseks Ubuntu 12.10-sse käivitage järgmised käsud:

sudo apt-add-repository ppa:pitti/ postgresql
sudo apt-get värskendus
sudo apt-get install postgresql-9.2

Proovime töötada DBMS-iga läbi kesta:

sudo -u postgres psql

Loome testandmebaasi ja testkasutaja:

CREATE DATABAAS test_andmebaas;
LOO KASUTAJA test_kasutaja parooliga "qwerty" ;
ANNA KÕIK ANDMEBAASIS test_andmebaas kasutajale test_user;

Shellist väljumiseks sisestage käsk \q .

Proovime nüüd loodud andmebaasiga testi_kasutaja nimel töötada:

psql -h localhost test_database test_user

Loome uue tabeli:

CREATE SEQUENCE user_ids;
CREATE TABLE kasutajad (
id TÄISARV PRIMARY KEY DEFAULT NEXTVAL ("user_ids") ,
logi sisse CHAR(64) ,
parool CHAR(64));

Pange tähele, et erinevalt mõnest teisest DBMS-ist pole PostgreSQL-il atribuudiga auto_increment veerge. Selle asemel kasutab Postgres järjestusi. Sees hetkel piisab teadmisest, et kasutades nextval funktsiooni saame unikaalsed numbrid antud jada jaoks:

SELECT NEXTVAL ("kasutaja_id") ;

Määrates kasutajate tabeli ID-välja vaikeväärtuseks NEXTVAL("kasutaja_id"), oleme saavutanud sama efekti, mille annab auto_increment. Tabelisse uusi kirjeid lisades ei pea me id-d määrama, sest unikaalne id genereeritakse automaatselt. Sama järjestust võivad kasutada mitu tabelit. Nii saame tagada, et nende tabelite mõne välja väärtused ei kattu. Selles mõttes on jadad paindlikumad kui auto_increment.

Täpselt sama tabeli saab luua vaid ühe käsuga:

LOO TABLE kasutajad2 (
id SERIAL PRIMARY KEY ,
logi sisse CHAR(64) ,
parool CHAR(64));

Sel juhul luuakse ID-välja jada automaatselt.

Nüüd, kasutades käsku \d, näete kõigi saadaolevate tabelite loendit ja \d kasutajate abil näete kasutajate tabeli kirjeldust. Kui te ei saa otsitavat teavet, proovige \d+ asemel klahvi \d+. Andmebaaside loendi saate hankida käsuga \l ja lülituda konkreetsele andmebaasile käsuga \c dbname. Käsu abi kuvamiseks öelge \?

. Oluline on märkida, et PostgreSQL-is kantakse vaikimisi tabelite ja veergude nimed üle väiketähtedega

. Kui te seda käitumist ei soovi, võite kasutada jutumärke:

CREATE TABLE "otherTable" ("someValue" VARCHAR (64 ) ) ;

Teine PostgreSQL-i funktsioon, mis võib selle DBMS-iga töö alustamisel raskusi tekitada, on nn skeemid. Skeem on midagi tabelite nimeruumi sarnast, näiteks andmebaasi sees olevate tabelitega kataloog.

Skeemi loomine:

LOO SCHEMA broneeringuid;

Lülitu skeemile:

SET search_path broneeringuteni;

Olemasolevate skeemide loendit saate vaadata käsu \dn abil. Vaikimisi skeemi nimi on avalik. Põhimõtteliselt saab PostgreSQL-i edukalt kasutada ka ilma skeemide olemasolust teadmata. Kuid pärandkoodiga töötamisel ja mõnel juhul võib skeemide tundmine olla väga kasulik.

Vastasel juhul ei erine PostgreSQL-iga töötamine palju tööst mis tahes muu relatsioonilise DBMS-iga:
SISESTAGE kasutajaid (sisselogimine, parool)
VÄÄRTUSED ("afiskon" , "123456" ) ;

SELECT * FROM kasutajad;

Kui proovite nüüd mõnest teisest masinast Postgresiga ühendust luua, ei õnnestu:

psql -h 192.168.0.1 test_andmebaas test_user Psql: serveriga ei saa ühendust:
Ühendamisest keelduti
Kas server töötab hostis "192.168.0.1" ja nõustub

TCP/IP-ühendused pordis 5432?

Selle parandamiseks lisage rida:

listen_addresses = "localhost, 192.168.0.1"