background image

Tworzenie baz i użytkowników.

Mając   już   za   sobą   żmudny   proces   analizy   wymagań   stawianych   bazie   danych   i 

stworzenia jej projektu, mo e

ż my zająć się fizycznym tworzeniem naszej bazy.   Aby 

rozpocząć pracę konieczne jest posiadanie konta użytkownika serwera PostgreSQL 

oraz dostępu do bazy danych. Przeważnie jest to do uzyskania dzięki kontaktowi z 

administratorem   serwera.   Jednakże   jeśli   mamy   stosowne   uprawnienia,   lub   sami 

jesteśmy   administratorem,   warto   znać   sposoby   tworzenia   użytkowników   i   baz 

danych. 

Zacznijmy od tworzenia użytkowników.
Użytkowników   mogą   tworzyć   tylko   użytkownicy     posiadający   prawo   tworzenia 

użytkowników ( super­użytkownicy). Są dwa sposoby zakładania kont użytkowników 

serwera   PostgreSQL.   Pierwszy   to   polecenie   zewnętrzne  

createuser

,   drugi   to 

polecenie  

CREATE   USER

  dostępne po zalogowaniu do serwera (np. przy użyciu 

programu 

psql

). 

Składnia polecenia 

createuser

 jest następująca:

createuser [opcje...] [nazwa_uzytkownika]

Gdzie:

nazwa_uzytkownika

 – to nazwa uzytkownika do utworzenia.

Opcje mog  by  nast puj ce:

ą

ć

ę

ą

-a,   --adduser

    -     nowy     u ytkownik   b dzie   uprawniony   do

ż

ę

 

tworzenia   nowych   u ytkowników.   Jest   to   równowa ne   z   nadaniem

ż

ż

 

uprawnie  super-u ytkownika ( zatem nale y nadawa  je z rozwag )

ń

ż

ż

ć

ą

-A, --no-adduser

   - nowy  

 użytkownik nie będzie mógł tworzyć 

użytkowników. Będzie zatem zwykłym użytkownikiem. Ta opcja jest 

domyślna.

-d, --cratedb

  ­ nowy użytkownik będzie mógł tworzyć bazy.

-D, -no-created

b   ­ nowy użytkownik nie będzie mógł tworzyć 

baz. Ta opcja jest domyślna.

-P,   --pwpromp

t     ­   wygeneruje   zapytanie   o   hasło   dla   nowego 

użytkownika.

1

background image

Program zapyta o nazwę użytkownika i inne brakujące parametry, jeśli 

nie zostaną podane z linii  poleceń.
Istnieją też opcje dotyczące połączenia z serwerem:

-h, --host

 -  to nazwa maszyny na której jest uruchomiony serwer.

-p,   --port  

–   okre la   port   po czenia   TCP,   na   którym   serwer

ś

łą

 

oczekuje po cze .

łą

ń

-U, --username

  – nazwa u ytkownika do po czenia z baz  (nie

ż

łą

ą

 

nazwa u ytkownika do utworzenia).

ż

Przed   przej ciem   do   przyk adów,   warto   jeszcze   raz   wspomnie   o   tym,   e   tylko

ś

ł

ć

ż

 

super-u ytkownicy mog  zak ada  konta nowym u ytkownikom. Istotna jest tak e

ż

ą

ł

ć

ż

ż  

informacja   i   domy ln   metod   autoryzacji   u ytkowników   jest   metoda  

ż

ś ą

ą

ż

IDENT

polegaj ca na dopuszczeniu tylko po czenia u ytkowników o takiej samej nazwie

ą

łą

ż

 

jak u ytkownik wykonuj cy po czenie. Na przyk ad  u ytkownik systemu o nazwie

ż

ą

łą

ł

ż

 

student

  mo e   po czy   si   z   baz   danych   tylko   jako   u ytkownik   serwera

ż

łą

ć

ę

ą

ż

 

PostgreSQL   o   identycznej   nazwie   czyli:

  student

.   Wi cej   o   metodach

ę

 

uwierzytelniania w rozdziale “ Administrowanie serwerem PostgreSQL”.

Przyk ady:

ł

 Maj c do czynienia z nowym (pustym) serwerem, dysponujemy tylko jednym super-

ą

u ytkownikiem   o   nazwie  

ż

postgres

.   Nale y   zatem   zmieni   bie

cego

ż

ć

żą

 

u ytkownika   na   u ytkownika  

ż

ż

postgres

  poleceniem  

su

.   (   Prawdopodobnie 

b dziemy musieli dokona  tego korzystaj c z konta 

ę

ć

ą

root

)

$ su postgres

Zacznijmy wi c od  najprostszej postaci polecenia.

ę

$ createuser

Enter name of user to add: administrator

Shall the new user be allowed to create databases? (y/n) 

y

Shall the new user be allowed to create more new users? 

(y/n) y

CREATE USER

2

background image

 Po wydaniu polecenia, program zapyta nas o nazw  u ytkownika do utworzenia, w

ę ż

 

przyk adzie by  to  

ł

ł

administrator

. Nast pnie musimy zadecydowa  czy nowy

ę

ć

 

u ytkownik ma posiada  prawo tworzenia baz oraz u ytkowników, w powy szym

ż

ć

ż

ż

 

przyk adzie  zosta a  wyra ona  zgoda  na  obydwa  uprawnienia.   Utworzenie  nowego

ł

ł

ż

 

u ytkownika sygnalizowane jest przez napis 

ż

CREATE USER

.

Spróbujmy ograniczy  teraz ilo

 pyta  stawianych przez program 

ć

ść

ń

createuser

.

Na pocz tek podajmy nazw  u ytkownika.

ą

ę ż

$ createuser administrator

Program zada nam pytania dotycz ce mo liwo ci tworzenia baz i u ytkowników

ą

ż

ś

ż

 

przez nowego u ytkownika.

ż

Mo emy tak e zadecydowa  o mo liwo ciach tworzenia baz danych ju  na etapie

ż

ż

ć

ż

ś

ż

 

wydawania polecenia,  opcja  

-d

  je li wyra amy  zgod   na to  uprawnienie  lub  

ś

ż

ę

-D 

je li si  nie zgadzamy.

ś

ę

$createuser administrator -d

Zostaniemy   zapytani   tylko   o   mo liwo

  tworzenia   nowych   u ytkowników,a

ż

ść

ż

 

u ytkownik administrator b dzie móg  tworzy  nowe bazy.

ż

ę

ł

ć

Decyzj  o przyznaniu uprawnienia do tworzenia nowych u ytkowników mo emy

ę

ż

ż

 

podj

  przy   u yciu   opcji  

ąć

ż

-a

,   je li   wyra amy   zgod ,   lub  

ś

ż

ę

-A

  je li   zgody   nie

ś

 

wyra amy.

ż

$ createuser administrator -d -a

Wszystkie   decyzje   zosta y   ju   podj te   i     program   nie   zada   nam   adnych

ł

ż

ę

ż

 

dodatkowych pyta . Natomiast nasz 

ń

administrator

 b dzie móg  tworzy  nowe

ę

ł

ć

 

bazy i u ytkowników.

ż

Dobrym   pomys em   jest   zabezpieczenie   konta     u ytkownika  

ł

ż

administrator 

has em

ł

. W tym celu należy dodać parametr 

-P

.

$ createuser administrator -a -d -P

Enter password for new user:

Enter it again:

CREATE USER

Zostaniemy   poproszeni   o   dwukrotne  wprowadzenie   has a.  Mo na   ustawi   sposób

ł

ż

ć

 

autoryzacji, tak aby jako administrator móg  pracowa  dowolny u ytkownik systemu

ł

ć

ż

 

znaj cy   has o   (   patrz     rozdzia   “Administrowanie   serwerem   PostgreSQL”).

ą

ł

ł

 

3

background image

Utwórzmy   zatem   konto  

telewizja

  korzystając   z   konta  

administrator 

pracując w powłoce jako dowolny użytkownik.

$ createuser telewizja -d -A -U administrator

Password:

CREATE USER

Zosta a   u yta   opcja  

ł

ż

-U

  która   powoduje   wykonanie   polecenia   jako   podany 

u ytkownik, w tym przypadku  

ż

administrator

.     Poniewa  konto administrator

ż

 

zosta o   zabezpieczone   has em,   zostali my   poproszeni   o   jego   podanie.   Utworzony

ł

ł

ś

 

u ytkownik telewizja mo e tworzy  bazy i nie mo e tworzy  u ytkowników.

ż

ż

ć

ż

ć ż

Drugim   sposobem   tworzenia   u ytkowników   jest   wykonanie   polecenia  

ż

CREATE 

USER

  po   zalogowaniu   do   serwera   PostgreSQL.   Za ó my,   e   tak   jak   poprzednio

ł ż

ż

 

dysponujemy   nowym   serwerem,   w   którym   jedynym   super-u ytkownikiem   jest

ż

 

postgres

. Zatem zmieniamy u ytkownika na 

ż

postgres

,

$ su postgres

nast pnie 

czymy   si   z baz  

ę

łą

ę

ą

template1

  (  tworzona domy lnie)  przy  pomocy

ś

 

programu psql.

$ psql -d template1

Opis programu psql znajduje si  w innym rozdziale.

ę

Sk adnia polecenia  

ł

CREATE USER

  ( j zyk SQL nie jest czu y na wielko

 liter,

ę

ł

ść

 

polecenia SQL piszemy du ymi literami zgodnie z panuj c  konwencj ):

ż

ą ą

ą

CREATE USER nazwa [  [ WITH ] opcje [ . . . ] ]

Gdzie :

nazwa

  –   to   nazwa   u ytkownika   do   utworzenia,   jak   wida   jest

ż

ć

 

konieczna..

Opcje mog  by  nast puj ce:

ą

ć

ę

ą

CREATEDB

 – u ytkownik mo e tworzy  bazy,

ż

ż

ć

NOCREATEDB

 – u ytkownik nie mo e tworzy  baz,

ż

ż

ć

CREATEUSER

 – u ytkownik mo e tworzy  u ytkowników,

ż

ż

ć ż

NOCREATEUSER

 – u ytkownik nie mo e tworzy  u ytkowników,

ż

ż

ć ż

PASSWORD 'haslo'

 – ustalenie has a dla u ytkownika,

ł

ż

IN   GROUP     nazwa_grupy   [   ,   .   .   .   ]

  -   do czenie

łą

 

u ytkownika   do   grupy   lub   grup   (   informacje   o   grupach   w   rozdziale

ż

 

“Administrowanie serwerem PostgreSQL”).

SYSID   numer

  –   nadanie   u ytkownikowi   okre lonego   numeru

ż

ś

 

u ytkownika.

ż

VALID UNTIL 'data'

 – okre lenie daty wa no ci konta.

ś

ż ś

4

background image

Przy podaniu samej nazwy u ytkownika, np.:

ż

=# CREATE USER pracownik;

przyjmowane  s   jako  domy lne brak  mo liwo ci tworzenia baz  i u ytkowników,

ą

ś

ż

ś

ż

 

oraz   automatycznie   nadawany   jest   numer   u ytkownika.   Przypomnijmy   o

ż

 

konieczno ci   ko czenia   polece

  znakiem   rednika.   Aby   wy wietli   list

ś

ń

ń

ś

ś

ć

ę 

u ytkowników u ywamy polecenia

ż

ż

  \du,

  jest to polecenie wewn trzne programu

ę

 

psql

.

=# \du

                List of database users

   User name   | User ID |         Attributes

---------------+---------+----------------------------

 administrator |   101   | superuser, create database

 postgres      |    1    | superuser, create database

 pracownik     |   103   |

 telewizja     |   102   | create databas

e

Przyk ady:

ł

Najprostsz   wersj   polecenia   mamy   ju   za   sob .   Stwórzmy   u ytkownika   który

ą

ę

ż

ą

ż

 

b dzie móg  tworzy  bazy.

ę

ł

ć

=# CREATE USER uzytkownik_1 WITH CREATEDB;

Je li zechcemy aby u ytkownik móg  dodatkowo tworzy  innych u ytkowników, to

ś

ż

ł

ć

ż

 

dok adamy 

ł

CREATEUSER

 

=# CREATE USER uzytkownik_2 WITH CREATEDB CREATEUSER;

Za ó my teraz konto u ytkownika wa ne do 01.01.2010

ł ż

ż

ż

=# CREATE USER uzytkownik_3 WITH VALID UNTIL

   '01.01.20010';

Stwórzmy u ytkownika nale

cego do grup 

ż

żą

projekt

 i 

administratorzy

5

background image

=# CREATE USER uzytkownik_3 WITH IN GROUP projekt,
   administratorzy;

Gdy poznaliśmy już sposoby tworzenia kont użytkowników, poznamy w jaki sposób 

konta   te   można   skasować.   Podobnie   jak   poprzednio   mamy   do   wyboru   dwie 

możliwości.   Pierwsza   to   polecenie   zewnętrzne  

  dropuser

  –   przeciwieństwo 

polecenia 

createuser

, o następującej składni:

dropuser [ ocje . . . ]  nazwa_uzytkownika 

Gdzie 

nazwa_uzytkownika

 – to nazwa uzytkownika do usuni cia.

ę

Wa niejsze opcje:

ż

-h, --host

 -  to nazwa maszyny na której jest uruchomiony serwer.

-p,   --port  

–   okre la   port   po czenia   TCP,   na   którym   serwer

ś

łą

 

oczekuje po cze .

łą

ń

-U, --username

  – nazwa u ytkownika do po czenia z baz  (nie

ż

łą

ą

 

nazwa u ytkownika do  usuni cia).

ż

ę

Oczywi cie   musimy   posiada   odpowiednie   uprawnienia.   Obowi zuj   te   same

ś

ć

ą

ą

 

zasady co przy poleceniu 

createuser.

Najprostsza wersja polecenia

$ dropuser uzytkownik_4

usunie konto użytkownika o nazwie uzytkownik_4.

Drugim sposobem jest wykonanie polecenia SQL ­  

DROP   USER

, oczywiście po 

zalogowaniu się do serwera. Składnia polecenia jest bardzo prosta i nie wymaga 

komentarza:

DROP USER nazwa_uzytkownika;

Przejdźmy teraz do tworzenia baz.

Bazy   mo na   tworzy   na   mo na   na   dwa   sposoby   (   podobnie   jak   tworzenie

ż

ć

ż

 

u ytkowników).

ż

6

background image

Sposób   pierwszy   to   użycie   zewnętrznego   programu   serwera   PostgreSQL   – 

createdb 

dost pnego z pow oki. Sk adnia tego polecenia jest nast puj ca:

ę

ł

ł

ę

ą

createdb [opcje ... ] [nazwa] [opis]

Polecenie   tworzy   now   baz   o   domy lnej   nazwie   u ytkownika   wydaj cego

ą

ę

ś

ż

ą

 

polecenie b d cej tak e jego w asno ci . Oczywi cie je eli u ytkownik systemu

ę ą

ż

ł

ś ą

ś

ż

ż

 

istnieje tak e w systemie bazy danych ( a tak by  nie musi) i ma uprawnienia do

ż

ć

 

tworzenia   bazy   danych   (   te   nie   musi   ich   posiada ).   Za ó my,   e   w   systemie

ż

ć

ł ż

ż

 

pracujemy jako u ytkownik o nazwie  

ż

student

, który jest tak e u ytkownikiem

ż

ż

 

serwera   bazy   danych   posiadaj cym   uprawnienia   do   tworzenia   tabel.   Wówczas

ą

 

wykonanie polecenia

 

createdb

zako czy si  wy wietleniem informacji o prawid owym utworzeniu bazy:

ń

ę

ś

ł

CREATE DATABASE

Utworzyli my zatem baz  o nazwie 

ś

ę

student

 której w a cicielem jest 

ł ś

student

.

Za ó my teraz  e u ytkownik student nie jest u ytkownikiem w systemie bazy

ł ż

ż

ż

ż

 

danych, otrzymamy wówczas nast puj cy komunikat o b dzie: 

ę

ą

łę

createdb: could not connect to database 

template1: FATAL:  user "student" does not exist  

Natomiast gdy u ytkownik jest tak e u ytkownikiem w systemie bazy danych, ale

ż

ż

ż

 

nie posiada uprawnie  do tworzenia nowych baz, otrzymamy nast puj cy

ń

ę

ą  

komunikat:

createdb: database creation failed: ERROR:  
permission denied to create database

Poniewa  pierwszy przypadek wyst puje stosunkowo rzadko warto pozna  opcje

ż

ę

ć

 

polecenia  

createdb

.

Opcje:

nazwa

 – to nazwa bazy do utworzenia. Nazwa musi by  unikalna

ć

 

w ród wszystkich baz serwera PostgreSQL. Domy lnie pobierana jet

ś

ś

 

nazwa u ytkownika wydaj cego polecenie.

ż

ą

7

background image

opis

 – to mo liwy opis który b dzie przechowywany z nowo

ż

ę

 

utworzon  baz .

ą

ą

 

-O, --owner

 – w a ciciel utworzonej bazy danych.

ł ś

-q, --quiet 

– nie wy wietla  adnych komunikatów.

ś

ż

-h, --host

 -  to nazwa maszyny na której jest uruchomiony serwer.

-p, --port 

– okre la port po czenia TCP, na którym serwer

ś

łą

 

oczekuje po cze .

łą

ń

-E, --encoding kodowanie

 – okre la jakiego kodowania

ś

znaków b dzie u ywa  baza.

ę

ż

ć

-T, --template wzorzec 

– okre la na podstawie jakiej

ś

 

wzorcowej bazy ma zosta  utworzona nowa baza, domy lnie template1.

ć

ś

-U, --username

 – nazwa u ytkownika do po czenia z baz , gdy

ż

łą

ą

 

tworzymy baz  dla innego u ytkownika ni  u ytkownik pow oki.

ę

ż

ż ż

ł

Przyk ady:

ł

Zak adamy  e pracujemy w pow oce jako u ytkownik 

ł

ż

ł

ż

student

.

createdb baza_testowa

utworzy baz  o nazwie

ę

 baza_testowa

 której w a cicielem b dzie u ytkownik

ł ś

ę

ż

 

student

.

createdb -U admin baza_testowa

utworzy baz  o nazwie 

ę

baza_testowa

  cz c si  z serwerem jako u ytkownik

łą ą

ę

ż

 

admin

, w a cicielem bazy b dzie 

ł ś

ę

admin

.

 

createdb -U admin -O student baza_testowa

utworzy baz  o nazwie 

ę

baza_testowa

  cz c si  z serwerem jako u ytkownik

łą ą

ę

ż

 

admin

, w a cicielem b dzie

ł ś

ę

 student

.

czenie si  jako inny u ytkownik jest bardzo cz sto praktykowane, gdy  jak ju

Łą

ę

ż

ę

ż

ż 

8

background image

wspomniano, nie jest wymagana zbie no

 nazw u ytkowników systemu i serwera

ż ść

ż

 

bazy danych. Tworzenie bazy danych z innym, ni  tworz cy w a cicielem, jest tak e

ż

ą

ł ś

ż  

praktyk  bardzo powszechn . Wi kszo

 u ytkowników serwera bazy danych nie

ą

ą

ę

ść ż

 

ma uprawnie  do tworzenia baz, jedyn  mo liwo ci  utworzenia przez nich bazy

ń

ą

ż

ś ą

 

jest zwrócenie si  do administratora z uprzejm  pro b  o jej utworzenie.

ę

ą

ś ą

Drugim sposobem na utworzenie bazy danych jest wykonanie polecenia 

CREATE 

DATABASE

 np. w programie 

psql

. Sk adnia polecenia

ł

CREATE DATABASE nazwa

[ [ WITH] [OWNER [=] wlasciciel_bazy ]

[ LOCATION [=] 'sciezka' ]

[ TEMPLATE [=] wzorzec ]

[ ENCODING [=] kodowanie ] ]

Gdzie:

nazwa – nazwa tworzonej bazy ( obowi zkowa).

ą

OWNER – w a ciciel  utworzonej bazy ( domy lnie tworz cy).

ł ś

ś

ą

LOCATION – inna od standardowej lokacja bazy danych, lokację 

nale y najpierw utworzy

ż

ć

TEMPLATE – wzorzec na podstawie ktrego zostanie utworzona baza.

ENCODING – okre lenie kodowania znaków w bazie.

ś

Przyk ady:

ł

=# CREATE DATABASE baza_testowa  TEMPLATE  wzorzec;

Utworzy baz  o nazwie 

ę

baza_testowa

 na podstawie bazy 

wzorzec

.  

=# CREATE DATABASE baza_testowa OWNER student ENCODING 

latin1;

Utworzy baz  o nazwie 

ę

baza_testowa

, której w a cicielem b dzie u ytkownik

ł ś

ę

ż

 

student

, a znaki b d  kodowane w systemie 

ę ą

latin1

.

Pozosta o jeszcze tylko wyja ni  w jaki sposób mo na usun

 bazy. Podobnie jak

ł

ś ć

ż

ąć

 

przy usuwaniu u ytkowników istniej  dwie metody. Pierwsza to polecenie

ż

ą

 

zewn trzne:

ę

dropdb [ opcje . . . ] nazwa_bazy

9

background image

Gdzie 

nazwa_bazy

 – to nazwa bazy do usuni cia.

ę

Wa niejsze opcje:

ż

-h, --host

 -  to nazwa maszyny na której jest uruchomiony serwer.

-p,   --port  

–   okre la   port   po czenia   TCP,   na   którym   serwer

ś

łą

 

oczekuje po cze .

łą

ń

-U, --username

 – nazwa u ytkownika do po czenia z baz .

ż

łą

ą

Przyk ad:

ł

$ dropdb -U administrator  baza_testowa

Polecenie   usunie   baz   o   nazwie  

ę

baza_testowa

,  

cz c   si   z   serwerem   jako

łą ą

ę

 

u ytkownik 

ż

administrator

.

Drugi   sposób   to   polecenie   DROP   DATABASE   o   bardzo   prostej   sk adni   nie

ł

 

wymagaj cej wyja nie :

ą

ś

ń

DROP DATABASE nazwa_bazy

Na zako czenie ustalmy jakie konta u ytkowników i bazy b d  potrzebne do dalszej

ń

ż

ę ą

 

nauki. Powinni my posiada  konto administratora utworzone np. poleceniem:

ś

ć

$ createuser administrator -d -a

 

konto zwyk ego u ytkownika mog cego tworzy  bazy:

ł

ż

ą

ć

$ createuser telewizja -d -A

oraz baza   o nazwie telewizja, której w a cicielem b dzie u ytkownik o tej samej

ł ś

ę

ż

 

nazwie:

$ createdb -O telewizja  telewizja

Pozosta e tworzone w trakcie nauki konta i bazy mo na usun

.

ł

ż

ąć

10


Document Outline