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 ( superuż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
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
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
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
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
=# 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
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
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
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
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