Postgresql ბრძანებები. საცნობარო ინფორმაციის მიღება. აწყობა და მონტაჟი

PostgreSQL არის მრავალპლატფორმული ობიექტურ-რელაციური DBMS ღია საწყისი კოდი. ეს სტატია გაჩვენებთ, თუ როგორ დააინსტალიროთ PostgreSQL Ubuntu Linux, დაუკავშირდით მას და შეასრულეთ წყვილი მარტივი SQL მოთხოვნები, ასევე როგორ დააყენოთ სარეზერვო ასლები.

PostgreSQL 9.2 Ubuntu 12.10-ზე დასაყენებლად, გაუშვით შემდეგი ბრძანებები:

sudo apt-add-repository ppa:pitti/ postgresql
sudo apt-get განახლება
sudo apt-get დააინსტალირე postgresql-9.2

შევეცადოთ ვიმუშაოთ DBMS-თან ჭურვის მეშვეობით:

sudo -u postgres psql

მოდით შევქმნათ სატესტო მონაცემთა ბაზა და ტესტის მომხმარებელი:

მონაცემთა ბაზის შექმნა ტესტ_მონაცემთა ბაზა;
შექმენით მომხმარებლის test_user პაროლით "qwerty" ;
მინიჭება ყველა ON DATABASE test_database TO test_user;

ჭურვიდან გასასვლელად შეიყვანეთ ბრძანება \q.

ახლა შევეცადოთ ვიმუშაოთ შექმნილ მონაცემთა ბაზასთან test_user-ის სახელით:

psql -h localhost test_database test_user

შევქმნათ ახალი ცხრილი:

CREATE SEQUENCE user_ids;
CREATE TABLE მომხმარებლები (
id მთელი ძირითადი გასაღები ნაგულისხმევი NEXTVAL ("user_ids") ,
შესვლა CHAR(64),
პაროლი CHAR(64));

გთხოვთ გაითვალისწინოთ, რომ ზოგიერთი სხვა DBMS-ისგან განსხვავებით, PostgreSQL-ს არ აქვს სვეტები auto_increment თვისებით. ამის ნაცვლად, Postgres იყენებს თანმიმდევრობებს. ჩართულია ამ მომენტშისაკმარისია ვიცოდეთ, რომ nextval ფუნქციის გამოყენებით შეგვიძლია მივიღოთ უნიკალური რიცხვები მოცემული მიმდევრობისთვის:

SELECT NEXTVAL ("user_ids" );

ID ველის ნაგულისხმევ მნიშვნელობად დაყენებით მომხმარებლების ცხრილებიმნიშვნელობა NEXTVAL ("მომხმარებლის_იდენტიფიკატორი"), ჩვენ მივაღწიეთ იგივე ეფექტს, რასაც auto_increment იძლევა. ცხრილზე ახალი ჩანაწერების დამატებისას არ გვიწევს ID-ის მითითება, რადგან უნიკალური id გენერირებული იქნება ავტომატურად. რამდენიმე ცხრილს შეუძლია გამოიყენოს ერთი და იგივე თანმიმდევრობა. ამ გზით შეგვიძლია გარანტირებული ვიყოთ, რომ ამ ცხრილებში ზოგიერთი ველის მნიშვნელობები ერთმანეთს არ ემთხვევა. ამ გაგებით, თანმიმდევრობები უფრო მოქნილია ვიდრე auto_increment.

ზუსტად იგივე ცხრილი შეიძლება შეიქმნას მხოლოდ ერთი ბრძანების გამოყენებით:

შექმენით TABLE მომხმარებლები2 (
id სერიული ძირითადი გასაღები,
შესვლა CHAR(64),
პაროლი CHAR(64));

ამ შემთხვევაში, id ველის თანმიმდევრობა იქმნება ავტომატურად.

ახლა \d ბრძანების გამოყენებით შეგიძლიათ ნახოთ ყველა ხელმისაწვდომი ცხრილის სია, ხოლო \d მომხმარებლების გამოყენებით შეგიძლიათ იხილოთ მომხმარებლების ცხრილის აღწერა. თუ ვერ მიიღებთ ინფორმაციას, რომელსაც ეძებთ, სცადეთ \d+ ნაცვლად \d. შეგიძლიათ მიიღოთ მონაცემთა ბაზების სია \l ბრძანებით და გადახვიდეთ კონკრეტულ მონაცემთა ბაზაზე \c dbname ბრძანებით. ბრძანების დახმარების საჩვენებლად, თქვით \? .

მნიშვნელოვანია აღინიშნოს, რომ PostgreSQL გარდაქმნის ცხრილებისა და სვეტების სახელებს ნაგულისხმევად. თუ არ გსურთ ეს ქცევა, შეგიძლიათ გამოიყენოთ ორმაგი ციტატები:

შექმენით ცხრილი "სხვა ცხრილი" ("someValue" VARCHAR (64) );

PostgreSQL-ის კიდევ ერთი მახასიათებელი, რამაც შეიძლება გამოიწვიოს სირთულეები ამ DBMS-თან მუშაობის დაწყებისას, არის ე.წ. სქემა არის ცხრილების სახელთა სივრცის მსგავსი, ისევე როგორც დირექტორია, ცხრილებით მონაცემთა ბაზაში.

სქემის შექმნა:

შექმენით SCHEMA ჯავშნები;

სქემაზე გადართვა:

დააყენეთ ძიების_გზა დაჯავშნამდე;

თქვენ შეგიძლიათ ნახოთ არსებული სქემების სია \dn ბრძანების გამოყენებით. ნაგულისხმევი სქემა დასახელებულია საჯარო. პრინციპში, თქვენ შეგიძლიათ წარმატებით გამოიყენოთ PostgreSQL სქემების არსებობის ცოდნის გარეშე. მაგრამ მოძველებულ კოდთან მუშაობისას და ზოგიერთ შემთხვევაში, სქემების შესახებ ცოდნა შეიძლება ძალიან სასარგებლო იყოს.

წინააღმდეგ შემთხვევაში, PostgreSQL-თან მუშაობა დიდად არ განსხვავდება სხვა რელაციური DBMS-თან მუშაობისგან:

INSERT INTO მომხმარებლებს (შესვლა, პაროლი)
VALUES ("afiskon", "123456");
SELECT * FROM მომხმარებლებისგან;

თუ ახლა ცდილობთ Postgres-თან დაკავშირებას სხვა აპარატიდან, ვერ შეძლებთ:

psql -h 192.168.0.1 test_database test_user

Psql: ვერ შეძლოსერვერთან დაკავშირება: კავშირი უარყოფილია
სერვერი მუშაობს ჰოსტზე "192.168.0.1" და იღებს
TCP/IP კავშირები 5432 პორტზე?

ამის გამოსასწორებლად, დაამატეთ ხაზი:

listen_addresses = "localhost,192.168.0.1"

... /etc/postgresql/9.2/main/postgresql.conf ფაილზეც.

ამ სტატიაში მე გაჩვენებთ 15 ყველაზე მეტად სასარგებლო ბრძანებებიმართვისთვის postgreSQL.

1. როგორ შევცვალოთ root პაროლი PostgreSQL-ში?

$ /usr/local/pgsql/bin/psql postgres postgresპაროლი: (ძველი პაროლი) # შეცვალეთ მომხმარებლის პოსტები პაროლით 'tmppassword'; $ /usr/local/pgsql/bin/psql postgres postgresპაროლი: (tmppassword)

რეგულარული მომხმარებლისთვის პაროლის შეცვლა ანალოგიურად ხდება. root მომხმარებელიშეუძლია შეცვალოს პაროლი ნებისმიერი მომხმარებლისთვის.

# მომხმარებლის სახელის შეცვლა პაროლით 'tmppassword';

2. როგორ დავაყენოთ PostgreSQL ავტომატურ დაწყებაში?

$ su - root # tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # cp contrib/start-scripts/linux /etc/rc.d/init.d/postgresql # chmod a+x / etc/rc.d/init.d/postgresql

3. შეამოწმეთ სერვერის სტატუსი

$ /etc/init.d/postgresql სტატუსიპაროლი: pg_ctl: სერვერი მუშაობს (PID: 6171) /usr/local/pgsql/bin/postgres “-D” “/usr/local/pgsql/data” [ კომენტარი: ეს შეტყობინება მიუთითებს, რომ სერვერი მუშაობს და ნორმალურად მუშაობს] $ /etc/init.d/postgresql სტატუსიპაროლი: pg_ctl: სერვერი არ მუშაობს [ კომენტარი: ეს შეტყობინება მიუთითებს, რომ სერვერი არ მუშაობს]

4. როგორ დავიწყოთ, შეწყვიტოთ, გადატვირთოთ PostgreSQL?

# სერვისის postgresql გაჩერება PostgreSQL-ის შეჩერება: სერვერი გაჩერდა OK # სერვისის დაწყება postgresqlიწყება PostgreSQL: კარგი # სერვისის postgresql გადატვირთვა PostgreSQL-ის გადატვირთვა: სერვერი გაჩერდა OK

5. როგორ ვნახო PostgreSQL-ის რომელი ვერსია მუშაობს?

$ /usr/local/pgsql/bin/psql ტესტიკეთილი იყოს თქვენი მობრძანება psql 8.3.7-ში, PostgreSQL ინტერაქტიულ ტერმინალში. ტიპი: \საავტორო უფლება განაწილების ტერმინებზე \h SQL ბრძანებების დახმარებისთვის\? psql ბრძანებების დასახმარებლად \g ან შეწყვიტოთ მძიმით შეკითხვის შესასრულებლად \q ტესტის გასვლა=# აირჩიეთ ვერსია();ვერსია ————————————————————————————————— PostgreSQL 8.3.7 i686-pc-linux-gnu-ზე, შედგენილი GCC gcc (GCC) 4.1.2 20071124 ( წითელი ქუდი 4.1.2-42) (1 რიგი) ტესტი=#

5. როგორ შევქმნათ მომხმარებელი PostgreSQL-ში?

ამისთვის ორი მეთოდია..

მეთოდი 1:ჩვენ ვქმნით მომხმარებელს PSQL გარსის გამოყენებით CREATE USER ბრძანების გამოყენებით.

# შექმენით მომხმარებლის ramesh პაროლით 'tmppassword';როლის შექმნა

მეთოდი2: ჩვენ ვქმნით მომხმარებელს createuser shell ბრძანების გამოყენებით.

$ /usr/local/pgsql/bin/createuser sathiyaახალი როლი იქნება სუპერმომხმარებელი? (y/n) n შეიძლება თუ არა ახალ როლს მონაცემთა ბაზების შექმნის უფლება? (y/n) n შეიძლება თუ არა ახალ როლს მეტი ახალი როლის შექმნის უფლება? (y/n) n როლის შექმნა

6. როგორ შევქმნათ მონაცემთა ბაზა PostgreSQL-ში?

ამისათვის არსებობს 2 მეთოდი.

მეთოდი1: ჩვენ ვქმნით მონაცემთა ბაზას PSQL გარსის მეშვეობით CREATE DATABASE ბრძანების გამოყენებით.

# მონაცემთა ბაზის შექმნა mydb მფლობელთან ramesh;მონაცემთა ბაზის შექმნა

მეთოდი2: ჩვენ ვიყენებთ createb ბრძანებას.

$ /usr/local/pgsql/bin/createdb mydb -O rameshმონაცემთა ბაზის შექმნა

7. ვიღებთ თუ არა ყველა მონაცემთა ბაზის ჩამონათვალს Postgresql-ში?

# \ ლმონაცემთა ბაზების სია დასახელება | მფლობელი | კოდირება ———-+———-+———- სარეზერვო | პოსტგრესი | UTF8 mydb | რამეში | UTF8 პოსტგრესი | პოსტგრესი | UTF8 თარგი0 | პოსტგრესი | UTF8 თარგი1 | პოსტგრესი | UTF8

8. როგორ წავშალოთ მონაცემთა ბაზა PostgreSQL-ში?

# \ ლმონაცემთა ბაზების სია დასახელება | მფლობელი | კოდირება ———-+———-+———- სარეზერვო | პოსტგრესი | UTF8 mydb | რამეში | UTF8 პოსტგრესი | პოსტგრესი | UTF8 თარგი0 | პოსტგრესი | UTF8 თარგი1 | პოსტგრესი | UTF8# DROP DATABASE mydb;ჩამოაგდეს მონაცემთა ბაზა

9. გამოიყენეთ ჩაშენებული დახმარება ბრძანებებისთვის

გუნდი \? აჩვენებს დახმარების ხაზს PSQL ბრძანებისთვის. \h CREATE აჩვენებს დახმარებას ყველა ბრძანებისთვის, რომელიც იწყება CREATE-ით.

# \? # \h შექმნა # \h ინდექსის შექმნა

10. როგორ მივიღოთ ყველა ცხრილის სია მოცემულ მონაცემთა ბაზაში Postgresql-ში?

# \ დ

ცარიელი მონაცემთა ბაზისთვის, თქვენ მიიღებთ შეტყობინებას "კავშირები არ არის ნაპოვნი".

11. როგორ გავიგო მოთხოვნის შესრულების დრო?

# \time - ამ ბრძანების შესრულების შემდეგ ყოველი მომდევნო მოთხოვნა აჩვენებს შესრულების დროს.

# \დროის განაწილებადრო ჩართულია. # SELECT * pg_catalog.pg_attribute-დან;დრო: 9.583 ms

12. როგორ შევქმნათ სარეზერვო და აღვადგინოთ მონაცემთა ბაზები და ცხრილები PostgreSQL-ში?

ეს კითხვა საკმაოდ დიდია და მოგვიანებით ცალკე სტატიაში გამოვაქვეყნებ.

13. როგორ ვნახო PostgreSQL-ში არსებული ფუნქციების სია?

სიის მისაღებად ხელმისაწვდომი ფუნქციებითქვით \df+

# \df # \df+

14. როგორ დაარედაქტირო PostgreSQL მოთხოვნა რედაქტორში?

# \ ე

\e გახსნის რედაქტორს, სადაც შეგიძლიათ შეცვალოთ მოთხოვნა და შეინახოთ იგი.

15. სად ვიპოვო postgreSQL ისტორიის ფაილი?

~/.bash_history ფაილის მსგავსად, postgreSQL ინახავს ყველაფერს sql ბრძანებებიფაილში ~/.psql_history.

$ კატა ~/.psql_historyმომხმარებლის პოსტგრესის შეცვლა პაროლით 'tmppassword'; \h შეცვალოს მომხმარებლის შერჩეული ვერსია(); შექმენით მომხმარებლის ramesh პაროლით "tmppassword"; \Timing აირჩიეთ * pg_catalog.pg_attribute-დან;

სისტემის ადმინისტრირება

ეს პოსტი არის მოკლე ინსტრუქციებიდამწყებთათვის, მათთვის, ვინც პირველად დააინსტალირა PostgreSQL. ყველაფერი აქ არის საჭირო ინფორმაციარომ დაიწყოთ PostgreSQL.

DBMS-თან დაკავშირება

პირველი, რაც უნდა გააკეთოთ, არის წვდომა PostgreSQL-ზე, წვდომა როგორც სუპერმომხმარებელზე.
ავთენტიფიკაციის პარამეტრები განთავსებულია pg_hba.conf ფაილში.
  1. ადგილობრივი ყველა პოსტგრესის თანატოლები
ეს ხაზი ამბობს, რომ პოსტგრესის მომხმარებელს შეუძლია დაუკავშირდეს ნებისმიერ ადგილობრივ მონაცემთა ბაზას PostgreSQL DBMSსოკეტის საშუალებით. არ არის საჭირო პაროლის შეყვანა, ოპერაციული სისტემა გადასცემს მომხმარებლის სახელს და ის გამოყენებული იქნება ავთენტიფიკაციისთვის.
მოდით დავაკავშიროთ:
  1. $ sudo -u postgres psql postgres postgres
იმისათვის, რომ შეძლოთ ქსელში დაკავშირება, თქვენ უნდა დაამატოთ ხაზი pg_hdba.conf:
  1. # აკრიფეთ მონაცემთა ბაზის მომხმარებლის მისამართის მეთოდი
  2. hostssl ყველა ყველა 0.0.0.0/0 md5
ავთენტიფიკაციის მეთოდი md5ნიშნავს, რომ დასაკავშირებლად დაგჭირდებათ პაროლის შეყვანა. ეს არ არის ძალიან მოსახერხებელი, თუ ხშირად იყენებთ psql კონსოლს. თუ გსურთ ზოგიერთი მოქმედების ავტომატიზაცია, ცუდი ამბავი ის არის, რომ psql არ იღებს პაროლს არგუმენტად. ამ პრობლემების გადაჭრის ორი გზა არსებობს: შესაბამისი გარემოს ცვლადის დაყენება და პაროლის შენახვა სპეციალურ .pgpass ფაილში.

PGPASSWORD გარემოს ცვლადის დაყენება

მაშინვე ვიტყვი, რომ უმჯობესია არ გამოიყენოთ ეს მეთოდი, რადგან ზოგიერთი OSსაშუალებას გაძლევთ ნახოთ ჩვეულებრივი მომხმარებლები გარემოს ცვლადები ps-ის საშუალებით. მაგრამ თუ გინდა, ტერმინალში უნდა ჩაწერო:
  1. ექსპორტი PGPASSWORD=mypasswd
ცვლადი ხელმისაწვდომი იქნება მიმდინარე სესიაზე. თუ თქვენ გჭირდებათ ცვლადის დაყენება ყველა სესიისთვის, მაშინ თქვენ უნდა დაამატოთ ხაზი მაგალითიდან .bashrc ან .bash_profile ფაილში

პაროლის შენახვა .pgpass ფაილში

თუ ვსაუბრობთ Linux-ზე, მაშინ ფაილი უნდა განთავსდეს $HOME-ში (/home/username). მხოლოდ მფლობელს (0600) უნდა ჰქონდეს წერისა და წაკითხვის უფლება. თქვენ უნდა დაწეროთ ფაილში ასეთი სტრიქონები:
  1. ჰოსტის სახელი: პორტი: მონაცემთა ბაზა: მომხმარებლის სახელი: პაროლი
პირველ ოთხ ველში შეგიძლიათ დაწეროთ "*", რაც ნიშნავს ფილტრაციის გარეშე (სრული შერჩევა).

დახმარების ინფორმაციის მიღება

\? - ყველაფერს გაჩუქებს ხელმისაწვდომი ბრძანებებიმათ მოკლე აღწერასთან ერთად,
\h - აჩვენებს ყველა ხელმისაწვდომი მოთხოვნის ჩამონათვალს,
\h CREATE - გაგიწევთ დახმარებას კონკრეტული მოთხოვნისთვის.

DBMS მომხმარებლის მენეჯმენტი

როგორ მივიღოთ PostgreSQL მომხმარებლების სია? ან შეგიძლიათ მოითხოვოთ pg_user ცხრილი.
  1. SELECT * FROM pg_user ;

ახალი PostgreSQL მომხმარებლის შექმნა

დან ჭურვი psql ეს შეიძლება გაკეთდეს CREATE ბრძანების გამოყენებით.
  1. შექმენით მომხმარებლის მომხმარებლის სახელი პაროლით "პაროლი" ;
ან შეგიძლიათ გამოიყენოთ ტერმინალი.
  1. createuser -S -D -R -P მომხმარებლის სახელი
თქვენ მოგეთხოვებათ პაროლის შეყვანა.

მომხმარებლის პაროლის შეცვლა

  1. შეცვალეთ მომხმარებლის სახელი PASSWORD "პაროლით" ;

მომხმარებლის როლების შეცვლა

იმისათვის, რომ მომხმარებელს მისცეთ მონაცემთა ბაზის შექმნის ნებართვა, გაუშვით შემდეგი მოთხოვნა:
  1. ALTER ROLE მომხმარებლის სახელი WITH CREATEDB ;

მონაცემთა ბაზის მართვა

psql ტერმინალში მონაცემთა ბაზების სიის ჩვენება: იგივე Linux ტერმინალიდან:
  1. psql -l
მონაცემთა ბაზის შექმნა psql-დან (PostgreSQL Terminal)
  1. მონაცემთა ბაზის შექმნა dbname OWNER dbadmin ;
შემოქმედება ახალი ბაზამონაცემები ტერმინალის გამოყენებით:
  1. createb -O მომხმარებლის სახელი dbname;

მონაცემთა ბაზაზე წვდომის უფლებების დაყენება

თუ მომხმარებელი არის მონაცემთა ბაზის მფლობელი, მაშინ მას აქვს ყველა უფლება. მაგრამ თუ გსურთ სხვა მომხმარებლისთვის წვდომის მიცემა, ამის გაკეთება შეგიძლიათ GRANT ბრძანების გამოყენებით. ქვემოთ მოყვანილი შეკითხვა მომხმარებელს საშუალებას მისცემს დაუკავშირდეს მონაცემთა ბაზას. მაგრამ არ დაივიწყოთ კონფიგურაციის ფაილი pg_hba.conf, მას ასევე უნდა ჰქონდეს შესაბამისი კავშირის ნებართვები.
  1. GRANT CONNECT მონაცემთა ბაზაზე dbname TO dbadmin ;


გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: