Paglikha ng isang database. Pagkuha ng sangguniang impormasyon. Pamamahala ng gumagamit ng database

Ang unang pagsubok upang ipakita na maaari mong ma-access ang database server ay ang subukang lumikha ng isang database. Inilunsad PostgreSQL server maaaring pamahalaan ang maramihang mga database. Karaniwan, ang isang hiwalay na database ay ginagamit para sa bawat proyekto o bawat gumagamit. Posible na ang administrator ng iyong makina ay nakagawa na ng database para sa iyo. Dapat ay sinabi nito sa iyo ang pangalan ng iyong database. Sa kasong ito, maaari mong laktawan ang seksyong ito at magpatuloy sa susunod.

Upang lumikha bagong base data, na tinatawag na mydb sa halimbawang ito, maaari mong gamitin ang sumusunod na command: $ createdb mydb

Kung nakumpleto ang utos nang walang anumang mga mensahe, kung gayon hakbang na ito

matagumpay na naipasa at maaari mong laktawan ang nakasulat sa ibaba hanggang sa katapusan ng seksyong ito.

Kung nakakuha ka ng isang bagay na katulad ng: createdb: command

hindi nahanap nangangahulugan ito na ang produkto ng PostgreSQL ay hindi na-install nang tama. Alinman sa hindi lahat ay na-install o ang landas ng paghahanap sa iyong shell ay hindi naitakda nang naaangkop. Subukang tawagan ang utos na ito gamit ang buong landas:

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

Buong landas

maaaring iba sa iyong makina. Makipag-ugnayan sa iyong administrator o tingnan ang mga tagubilin sa pag-install upang itama ang sitwasyon.

Isa pang mensahe na maaari mong matanggap: nilikhab: hindi makakonekta sa database postgres: hindi makakonekta sa server: Walang ganoong file o direktoryo Walang ganoong file o direktoryo Lokal ba ang server na tumatakbo at tumatanggap ng mga koneksyon sa Unix domain socket "/tmp/. s. PGSQL.5432"? Nangangahulugan ito na ang server ay hindi sinimulan, o hindi ito nasimulan gaya ng inaasahan ng nilikhab na utos. Muli, suriin ang mga tagubilin sa pag-install o kumonsulta sa iyong administrator.). Kung isa kang administrator, tingnan ang Kabanata 20 para sa impormasyon tungkol sa paggawa ng user.

Kakailanganin mong mag-log in sa operating system sa ilalim ng pangalan ng user kung saan tumatakbo ang PostgreSQL (karaniwan ay postgres) para magawa ang unang user sa DBMS. Para sa command na lumikha ng database, maaari ka ring tumukoy ng username sa PostgreSQL na iba sa iyong kasalukuyang operating system username; sa kasong ito kailangan mong itakda ang PostgreSQL username gamit ang -U na opsyon o itakda ang PGUSER environment variable. Kung

gustong gumagamit

umiiral ngunit wala itong mga pahintulot na kinakailangan upang lumikha ng isang database, makikita mo ang sumusunod na mensahe: nilikhab: nabigo ang paglikha ng database: ERROR: tinanggihan ang pahintulot upang lumikha ng database

Hindi lahat ng user ay may pahintulot na lumikha ng mga bagong database. Kung tatanggihan ng PostgreSQL ang iyong mga pagtatangka na lumikha ng mga database, kakailanganin ng iyong administrator ng makina na bigyan ka ng mga karapatan upang lumikha ng mga database. Kumonsulta sa kanya sa kasong ito. Kung ikaw mismo ang nag-install ng PostgreSQL, para sa mga layunin ng tutorial na ito kailangan mong mag-log in bilang user kung saan mo pinapatakbo ang database server.

Maaari ka ring lumikha ng mga database na may iba pang mga pangalan.

Pinapayagan ka ng PostgreSQL na lumikha ng anumang bilang ng mga database sa isang solong server. Ang mga pangalan ng database ay dapat na binubuo ng mga titik at numero (dapat palaging may isang titik muna) at hindi hihigit sa 63 byte ang haba. Ito ay medyo maginhawa upang lumikha ng isang database na may parehong pangalan ng gumagamit. Maraming mga tool ang magde-default dito bilang pangalan ng database, kaya hindi mo na kailangang mag-click ng masyadong maraming mga pindutan. Upang lumikha ng ganoong database ng parehong pangalan ng user, i-type lamang ang: $ createdb Kung hindi mo gustong gamitin ang iyong database sa hinaharap, maaari mo itong tanggalin. Halimbawa, kung ikaw ang may-ari (tagalikha) ng mydb database, maaari mo itong i-drop gamit ang sumusunod na command: $ dropdb mydb

Kung ang pinakabagong magagamit na bersyon ng PostgreSQL ay mahalaga sa iyo (kung hindi, ipinapayo ko sa iyo na mag-isip nang mabuti), pagkatapos ay kailangan mong i-install ito mula sa opisyal PostgreSQL repository. Magagawa ito sa pamamagitan ng pagsunod sa mga opisyal na tagubilin. Pagkatapos, dapat mong i-update ang mga pakete:

$ sudo apt-get update

At i-install PostgreSQL command:

$ sudo apt-get install postgresql-x.x

  • x.x- kinakailangang bersyon

Maaari mong tingnan ang isang listahan ng lahat ng magagamit na mga bersyon gamit ang command:

$ sudo apt-cache search postgresql

1.2. Pag-install mula sa OS repository

Ang pag-install ng PostgreSQL mula sa repositoryo ng OS ay ginagawa sa pamamagitan ng pagdaragdag ng dalawang pangunahing pakete:

$ sudo apt-get install postgresql postgresql-contrib

2. PostgreSQL console

Ang lahat ng magagamit na mga operasyon sa mga database at user ay ginagawa mula sa console psql.

2.1. Mag-login sa console

Una kailangan mong mag-log in bilang isang user postgres, ito ay posible lamang sa mga karapatan ugat:

# su - postgres

Gumagamit postgres ay isang uri ng superuser para sa PostgreSQL database. Pagkatapos, mula sa ilalim ng gumagamit postgres maaari kang mag-log in sa console:

O mas madali, mag-log in lang sa console psql sa ilalim ng gumagamit postgres:

$ sudo -u postgres psql

2.2. Pag-alis sa console

Kapag ang lahat ng mga operasyon sa mga user at database ng PostgreSQL ay nakumpleto na sa psql console, hindi agad posible na malaman kung paano ito lalabas. Ang lahat ay napaka-simple dito:

Postgres=#\q

At, kung kinakailangan, iniiwan namin ang gumagamit postgres:

3. Mga gumagamit ng PostgreSQL

3.1. Paglikha ng isang gumagamit

Ang lahat ay medyo simple dito:

# GUMAWA NG USER username MAY PASSWORD "12345";

  • username- bagong user login
  • ‘12345’ - User password. Inilagay sa mga panipi

3.2. Pagtanggal ng user

Ito ay mas simple dito:

# DROP USER username;

  • username- login ng user na kailangang tanggalin.

4. Mga database

Ang lahat ng mga manipulasyon sa database ay ginagawa din sa console psql.

4.1. Paglikha ng isang Database

Ang lahat dito ay pareho sa paggawa ng user:

# GUMAWA NG DATABASE dbname;

4.2. Magtanggal ng database

# DROP DATABASE dbname;
  • dbname- pangalan ng database na tatanggalin

Pakitandaan na tatanggi ang database na tanggalin sa ilang partikular na kaso:

  • Kung may mga user na may karapatan sa database na ito. Bago tanggalin ang database, dapat bawiin ang kanilang mga karapatan. Higit pa tungkol dito mamaya.
  • Kung mayroong kahit isang bukas na session ng koneksyon sa database. Sa kasong ito, ang mga session ay kailangang isara. SA bilang huling paraan, maaari mo lamang ihinto ang mga server na nakikipag-ugnayan sa database na ito sa oras ng pag-alis nito (bagaman may maliit na punto sa pagsisimula sa mga ito pagkatapos tanggalin ang database)

4.3. Pagtatalaga ng mga karapatan sa mga gumagamit

Availability ng database at mga user sa PostgreSQL system sa kanyang sarili ay hindi gumagawa ng mga resulta. Para sa tamang operasyon tiyak na gumagamit na may isang tiyak na database, kailangan siyang italaga ng mga karapatan upang gumana dito. Upang gawin ito, patakbuhin ang utos:

# IBIGAY ANG LAHAT NG MGA PRIVILEGES SA DATABASE dbname SA username;

  • dbname- pangalan ng database kung saan dapat ibigay ang mga karapatan sa pag-access
  • username- ang pangalan ng user na bibigyan ng mga karapatan tinukoy na base datos

4.4. Pag-alis ng mga karapatan ng gumagamit

Minsan, kinakailangan na baguhin ang gumagamit na namamahala sa database, o bawiin lamang ang mga karapatan para sa kasunod na pagtanggal nito. Inirerekumenda kong huwag pabayaan ang utos na ito at kumilos ayon sa prinsipyong "Ang isang gumagamit ay namamahala ng isang database."

Pangangasiwa ng Sistema

Ang post na ito ay maikling tagubilin para sa mga nagsisimula, para sa mga nag-install ng PostgreSQL sa unang pagkakataon. Nandito na ang lahat kinakailangang impormasyon para makapagsimula sa PostgreSQL.

Pagkonekta sa DBMS

Ang unang bagay na dapat gawin ay upang makakuha ng access sa PostgreSQL, access bilang isang superuser.
Ang mga setting ng pagpapatunay ay matatagpuan sa pg_hba.conf file.
  1. lokal lahat ng mga kapantay ng postgres
Sinasabi ng linyang ito na ang gumagamit ng postgres ay maaaring kumonekta sa anumang lokal na database PostgreSQL DBMS sa pamamagitan ng socket. Hindi na kailangang magpasok ng password; ipapadala ng operating system ang username, at gagamitin ito para sa pagpapatunay.
Kumonekta tayo:
  1. $ sudo -u postgres psql postgres postgres
Upang makakonekta sa pamamagitan ng network, kailangan mong idagdag ang linya sa pg_hdba.conf:
  1. # TYPE DATABASE USER ADDRESS METHOD
  2. hostsl lahat lahat 0.0.0.0/0 md5
Paraan ng pagpapatunay md5 nangangahulugan na kailangan mong magpasok ng password para kumonekta. Ito ay hindi masyadong maginhawa kung madalas mong gamitin ang psql console. Kung gusto mong i-automate ang ilang aksyon, ang masamang balita ay hindi tumatanggap ang psql ng password bilang argumento. Mayroong dalawang paraan upang malutas ang mga problemang ito: pagtatakda ng naaangkop na variable ng kapaligiran at pag-iimbak ng password sa isang espesyal na file.pgpass.

Ang pagtatakda ng variable na kapaligiran ng PGPASSWORD

Sasabihin ko kaagad na mas mahusay na huwag gamitin ang pamamaraang ito, dahil pinapayagan ka ng ilang mga operating system na tingnan ordinaryong gumagamit mga variable ng kapaligiran gamit ang ps. Ngunit kung gusto mo, kailangan mong isulat sa terminal:
  1. i-export ang PGPASSWORD=mypasswd
Magiging available ang variable sa kasalukuyang session. Kung kailangan mong magtakda ng variable para sa lahat ng session, kailangan mong idagdag ang linya mula sa halimbawa sa .bashrc o .bash_profile file

Pag-imbak ng password sa .pgpass file

Kung Linux ang pinag-uusapan, kung gayon ang file ay dapat na matatagpuan sa $HOME (/home/username). Ang may-ari lamang (0600) ang dapat magkaroon ng mga karapatan sa pagsulat at pagbabasa. Kailangan mong magsulat ng mga linyang tulad nito sa file:
  1. hostname:port:database:username:password
Maaari mong isulat ang "*" sa unang apat na field, na nangangahulugang walang pag-filter (buong seleksyon).

Pagkuha ng impormasyon ng tulong

\? - ibibigay ang lahat magagamit na mga utos kasama ang kanilang maikling paglalarawan,
\h - ay magpapakita ng listahan ng lahat ng available na query,
\h CREATE - magbibigay ng tulong para sa isang partikular na kahilingan.

Pamamahala ng gumagamit ng DBMS

Paano makakuha ng isang listahan ng mga gumagamit ng PostgreSQL?
  1. O maaari mong i-query ang pg_user table.

PUMILI * MULA sa pg_user ;

Paglikha ng bagong user ng PostgreSQL Mula sa kabibi
  1. psql ito ay maaaring gawin gamit ang CREATE command.
GUMAWA NG USER username MAY password na "password" ;
  1. O maaari mong gamitin ang terminal.
createuser -S -D -R -P username

Ipo-prompt kang magpasok ng password.

  1. Pagbabago ng password ng user

BAGUHIN ANG USER username MAY PASSWORD "password" ;

Pagbabago ng mga tungkulin ng user
  1. Upang bigyan ang user ng pahintulot na lumikha ng mga database, patakbuhin ang sumusunod na query:

ALTER ROLE username MAY CREATEDB ;

Pamamahala ng database
  1. Pagpapakita ng listahan ng mga database sa psql terminal: Ang parehong mula sa Linux terminal:
psql -l
  1. Paglikha ng database mula sa psql (PostgreSQL Terminal)
GUMAWA NG DATABASE dbname OWNER dbadmin ;
  1. Paglikha ng bagong database gamit ang terminal:

nilikhab -O username dbname;

Pag-set up ng mga karapatan sa pag-access sa database Kung ang gumagamit ay ang may-ari ng database, kung gayon mayroon siyang lahat ng karapatan. Ngunit kung gusto mong magbigay ng access sa ibang user, magagawa mo ito gamit ang GRANT command. Ang query sa ibaba ay magbibigay-daan sa user na kumonekta sa database. Ngunit huwag kalimutan ang tungkol sa configuration file
  1. pg_hba.conf, dapat mayroon din itong naaangkop na mga pahintulot sa koneksyon.

MAGBIGAY NG KONEKTA SA DATABASE dbname SA dbadmin ;

Ang unang paraan upang suriin kung mayroon kang access sa server ng database ay subukang lumikha ng isang database. Ang isang tumatakbong PostgreSQL server ay maaaring pamahalaan ang maramihang mga database, na nagbibigay-daan sa iyong lumikha ng hiwalay na mga database para sa iba't ibang mga proyekto at user.

Maaaring nakagawa na ang iyong administrator ng database para sa iyo at binigyan ka ng pangalan nito. Sa kasong ito, maaari mong laktawan ang hakbang na ito at magpatuloy sa susunod na seksyon.

Upang lumikha ng isang database, na pinangalanang mydb sa halimbawang ito, patakbuhin ang sumusunod na command:

Kung wala kang makitang anumang mensahe, matagumpay ang operasyon at maaari mong laktawan ang pagpapatuloy sa seksyong ito.

Kung makakita ka ng mensahe tulad ng:

Createdb: command not found

Nangangahulugan ito na hindi na-install nang tama ang PostgreSQL. Alinman sa hindi ito naka-install, o ang direktoryo nito ay hindi kasama sa landas ng paghahanap ng shell command. Subukang tawagan ang parehong command sa pamamagitan ng pagtukoy ganap na landas:

Kung nakakuha ka ng isang bagay na katulad ng: createdb: command

Maaaring iba ang landas na ito para sa iyo. Makipag-ugnayan sa iyong administrator o suriin ang mga tagubilin sa pag-install na sinunod upang itama ang sitwasyon.

Isa pang posibleng sagot:

Createdb: nabigong kumonekta sa database ng postgres: nabigong kumonekta sa server: Walang ganoong file o direktoryo Talaga bang tumatakbo ito nang lokal at tumatanggap ng mga koneksyon sa pamamagitan ng socket ng domain na "/tmp/.s.PGSQL.5432"?

Nangangahulugan ito na ang server ay down o nilikhab hindi makakonekta dito. Sa kasong ito, suriin ang mga tagubilin sa pag-install o makipag-ugnayan sa iyong administrator.

Maaari mo ring matanggap ang sumusunod na mensahe:

Createdb: nabigong kumonekta sa database ng postgres: MAHALAGA: ang papel na "joe" ay wala

kung saan lumalabas ang iyong username. Ito ay nagpapahiwatig na ang administrator ay hindi gumawa ng isang PostgreSQL account para sa iyo. (Ang mga PostgreSQL account ay iba sa mga operating system user account.) Kung ikaw mismo ay isang administrator, basahin ang Kabanata 20 para sa mga tagubilin kung paano gumawa ng mga account. Upang lumikha ng bagong user, dapat kang maging user ng operating system kung saan naka-install ang PostgreSQL (karaniwan ay postgres). Posible rin na nabigyan ka ng pangalan Gumagamit ng PostgreSQL, na hindi tumutugma sa iyong pangalan sa OS; sa kasong ito kailangan mong tahasang tukuyin ang iyong PostgreSQL username gamit ang -U switch o setting variable ng kapaligiran PGUSER.

Kung mayroon ka account user ngunit walang mga karapatan na lumikha ng database, makikita mo ang mensahe:

Createdb: Nabigo ang paggawa ng database: ERROR: Walang karapatang gumawa ng database

Hindi lahat ng user ay pinapayagang lumikha ng mga database. Kung tumanggi ang PostgreSQL na lumikha ng mga database para sa iyo, kailangan mo ng pahintulot na gawin ito. Sa kasong ito, makipag-ugnayan sa iyong administrator. Kung ikaw mismo ang nag-install ng PostgreSQL, para sa mga layunin ng pagpapakilalang ito dapat kang naka-log in bilang user na nagpapatakbo ng database server.

Maaari ka ring lumikha ng mga database na may iba pang mga pangalan. Pinapayagan ka ng PostgreSQL na lumikha ng maraming mga database hangga't gusto mo. Ang mga pangalan ng database ay dapat magsimula sa isang titik at hindi lalampas sa 63 character. Maginhawang gamitin ang iyong kasalukuyang username bilang pangalan ng database. Ipapalagay ng maraming mga utility ang pangalang ito bilang default, upang mapadali mo ang mga utos sa pag-type. Upang lumikha ng isang database na may ganitong pangalan, ipasok lamang ang:

$nilikhab

Kung hindi mo na gustong gamitin ang iyong database, maaari mo itong tanggalin. Halimbawa, kung ikaw ang may-ari (tagalikha) ng mydb database, maaari mo itong sirain sa pamamagitan ng pagpapatakbo ng sumusunod na command:

$dropdb mydb

(Ang command na ito ay hindi nagde-default sa pangalan ng database ng kasalukuyang user; dapat mo itong tukuyin nang tahasan.) Pisikal nitong tatanggalin ang lahat ng mga file na nauugnay sa database, at dahil hindi na mababawi ang pagkilos na ito, huwag gawin ito nang hindi iniisip ang mga kahihinatnan.

Ang PostgreSQL ay isang cross-platform na object-relational na DBMS na may bukas source code. Ipapakita sa iyo ng artikulong ito kung paano i-install ang PostgreSQL sa Ubuntu Linux, kumonekta dito at magsagawa ng isang pares simpleng mga query sa SQL, pati na rin kung paano mag-set up ng mga backup.

Upang i-install ang PostgreSQL 9.2 sa Ubuntu 12.10, patakbuhin ang mga sumusunod na command:

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

Subukan nating magtrabaho kasama ang DBMS sa pamamagitan ng shell:

sudo -u postgres psql

Gumawa tayo ng isang pagsubok na database at isang pagsubok na gumagamit:

GUMAWA NG DATABASE test_database;
GUMAWA NG USER test_user NA MAY password na "qwerty" ;
IBIGAY LAHAT SA DATABASE test_database SA test_user;

Upang lumabas sa shell, ilagay ang command \q .

Ngayon subukan nating magtrabaho kasama ang nilikha na database sa ngalan ng test_user:

psql -h localhost test_database test_user

Gumawa tayo ng bagong talahanayan:

GUMAWA NG SEQUENCE user_id;
GUMAWA NG TABLE na mga user (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids") ,
login CHAR(64) ,
password CHAR(64));

Pakitandaan na, hindi tulad ng ilang iba pang DBMS, ang PostgreSQL ay walang mga column na may auto_increment property. Sa halip, ang Postgres ay gumagamit ng mga sequence. Naka-on sa ngayon sapat na na malaman na gamit ang nextval function na makukuha natin natatanging mga numero para sa isang naibigay na pagkakasunud-sunod:

SELECT NEXTVAL ("user_ids" );

Sa pamamagitan ng pagtatakda ng default na halaga para sa field ng id ng talahanayan ng mga user sa NEXTVAL("user_id"), nakamit namin ang parehong epekto na ibinibigay ng auto_increment. Kapag nagdaragdag ng mga bagong tala sa talahanayan, hindi namin kailangang tukuyin ang id, dahil ang isang natatanging id ay awtomatikong bubuo. Maaaring gumamit ng parehong pagkakasunud-sunod ang maramihang mga talahanayan. Sa ganitong paraan maaari naming ginagarantiya na ang mga halaga ng ilang mga patlang sa mga talahanayan na ito ay hindi magkakapatong. Sa ganitong kahulugan, ang mga pagkakasunud-sunod ay mas nababaluktot kaysa sa auto_increment.

Ang eksaktong parehong talahanayan ay maaaring malikha gamit lamang ang isang utos:

GUMAWA NG TABLE user2 (
id SERIAL PRIMARY KEY ,
login CHAR(64) ,
password CHAR(64));

Sa kasong ito, ang sequence para sa field ng id ay awtomatikong nilikha.

Ngayon gamit ang \d command makikita mo ang isang listahan ng lahat ng magagamit na mga talahanayan, at gamit ang \d mga user ay makikita mo ang isang paglalarawan ng talahanayan ng mga user. Kung hindi mo makuha ang impormasyong hinahanap mo, subukan ang \d+ sa halip na \d . Maaari kang makakuha ng listahan ng mga database gamit ang \l command, at lumipat sa isang partikular na database gamit ang \c dbname command. Upang ipakita ang tulong ng command, sabihin ang \?

. Mahalagang tandaan na sa PostgreSQL, bilang default, ang mga pangalan ng talahanayan at column ay na-cast sa maliit na titik

. Kung hindi mo gusto ang pag-uugaling ito, maaari kang gumamit ng mga double quote:

GUMAWA NG TALAAN "isa pang Talahanayan" ("someValue" VARCHAR (64 ) );

Ang isa pang tampok ng PostgreSQL na maaaring magdulot ng mga kahirapan kapag nagsimulang magtrabaho kasama ang DBMS na ito ay ang tinatawag na "schemas". Ang isang schema ay isang bagay tulad ng isang namespace para sa mga talahanayan, tulad ng isang direktoryo na may mga talahanayan sa loob ng isang database.

Paglikha ng schema:

GUMAWA ng mga booking ng SCHEMA;

Lumipat sa scheme:

Itakda ang search_path SA mga booking;

Maaari mong tingnan ang isang listahan ng mga umiiral nang scheme gamit ang command na \dn. Ang default na schema ay pinangalanang pampubliko. Sa prinsipyo, matagumpay mong magagamit ang PostgreSQL nang hindi nalalaman ang tungkol sa pagkakaroon ng mga schema. Ngunit kapag nagtatrabaho sa legacy code, at sa ilang mga gilid na kaso, ang pag-alam tungkol sa mga schema ay maaaring maging lubhang kapaki-pakinabang.

Kung hindi, ang pagtatrabaho sa PostgreSQL ay hindi gaanong naiiba sa pagtatrabaho sa anumang iba pang relational na DBMS:
INSERT INTO user (login, password)
VALUES ("afiskon" , "123456" );

PUMILI * MULA sa mga gumagamit;

Kung susubukan mo na ngayong kumonekta sa Postgres mula sa isa pang makina, mabibigo ka:

psql -h 192.168.0.1 test_database test_user Psql: hindi makakonekta sa server:
Tumanggi ang koneksyon
Gumagana ba ang server sa host na "192.168.0.1" at tumatanggap

Mga koneksyon sa TCP/IP sa port 5432?

Upang ayusin ito, idagdag ang linya:

listen_addresses = "localhost,192.168.0.1"