Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Sisteme de baze de date: PostgreSQL si MySQL

linux


Sisteme de baze de date: PostgreSQL si MySQL



MySQL si PostgreSQL sunt sisteme relationale de gestiune a bazelor de date, compatibile SQL (Structured Query Language, cel mai raspāndit limbaj standardizat de interogare a bazelor de date), cu arhitectura client-server. Spre deosebire de alte sisteme similare disponibile īn Linux, cu 11211i89l m ar fi Oracle, DB2 sau Informix, acestea doua sunt open source.

2.1. Sistemul PostgreSQL

O sesiune Postgres este alcatuita din urmatoarele trei componente:

un proces supervizor de tip daemon (numit postmaster);

aplicatia care utilizeaza serviciile SQL (cum ar fi programul psql);

unul sau mai multe servere (procesele postgres).

Un proces postmaster gestioneaza o colectie de baze de date pe o masina, colectie denumita cluster. Aplicatiile utilizeaza biblioteca postgresql. Aceasta trimite cereri prin retea daemonului postmaster. Astfel, pentru fiecare asemenea conexiune este pornit cāte un server postgres.

Atāt daemonul postmaster, cāt si serverele postgres ruleaza sub un utilizator special, de regula postgres. īn nici un caz acest utilizator special nu trebuie sa fie root. De asemenea, toate fisierele din cadrul bazelor de date trebuie sa apartina acestui utilizator special.

La prima pornire a daemonului postmaster va fi verificata existenta clusterului de baze de date. īn general, acesta este localizat īn /var/iib/pgsqi/data. Daca acesta nu exista, el va fi creat automat de catre scripturile de pornire, apelānd programul initdb.

Fisierul- de configurare se afla īn directorul de date si are numele postgresql. conf. Atunci cānd daemonul primeste semnalul SIGHUP, fisierul de configurare este recitit.

Optiunile importante sunt urmatoarele:

Optiuni generale

FSYNC daca aceasta optiune este activata, Postgres va utiliza apelul

de sistem fsync() pentru a se asigura ca datele sunt scrise pe

Setari avansate ale sistemului

disc. Aceasta va creste siguranta datelor, īncetinind īnsa sistemul datorita utilizarii mai intense a discului. Implicit: false.

MAX_CONNECTIONS stabileste numarul maxim de conexiuni acceptat de

server. Implicit: 32.
PORT
stabileste portul TCP pe care serverul va astepta cereri.

Implicit: 5432. SHARED_BUFFERS stabileste numarul de zone-tampon de memorie comuna

utilizate de server. O zona contine 8192 de octeti. Implicit:

KB). SORT_MEM         specifica cantitatea de memorie utilizata pentru sortarHe

interne, īnainte de a recurge la fisiere temporare. Este

exprimata īn kilobytes si are valoarea implicita 512 KB. TCPIP_SOCKET daca aceasta optiune este activata, serverul va accepta

conexiuni TCP/IP (adica si de pe alte masini). Implicit: Off.

Optiuni privind informatiile de depanare si jurnalizarea

DEBUG_LEVEL stabileste nivelul informatiilor de depanare generate. Implicit este O, adica serverul nu va genera informatii de depanare.

HOSTNAME_LOOKUP determina numele masinii de unde se fac conexiuni, nu doar adresa IP, atunci cānd conexiunile sunt jurnalizate. De mentionat ca activarea acestei optiuni va creste traficul prin retea. Implicit: Off.

LOG_CONNECTIONS jumalizeaza fiecare conexiune reusita la server. Implicit este Off.

LOG_TIMESTAMP pentru fiecare linie din jurnal precizeaza si momentul īn care s-a petrecut evenimentul. Implicit este Off.

SYSLOG precizeaza modalitatea de jurnalizare. Daca are valoarea l,

mesajele vor fi trimise atāt sistemului syslog, cāt si catre iesirea standard. Pentru valoarea 2, mesajele vor fi trimise numai sistemului syslog. Implicit este O, ceea ce īnseamna ca mesajele vor fi trimise doar la iesirea standard.

SYSLOG_FACILITY stabileste clasa de jurnalizare utilizata de syslog (LOCALO, ..., LOCALT). Implicit este LOCALO. Pentru detalii privind clasele de jurnalizare, vezi cap. 10.

SYSLOG_IDENT atunci cānd este utilizat sistemul syslog, stabileste numele programului folosit pentru identificarea mesajelor PostgreSQL. Implicit estepostgres.

Iata un fragment dintr-un fisier postgresqi. conf:

l*

l # Acest fisier este alcatuit din linii de forma:

Administrarea si configurarea sistemelor Linux


optiune = valoare
#

Caracterul "=" este optional.

t Caracterul "f" desemneaza īnceputul unui comentariu.

Nu conteaza daca sunt folosite litere mari sau mici.
l

Parametri legati de conexiune
tcpip_socket = true
max_connections = 1024

port = 5432 hostname_lookup = false

Parametri legati de performanta
sort_mem = 2048

shared_buffers = 2048 fsync = false

Parametri legati de jurnalizare
syslog = 2

syslog_facility = 'LOCAL7'

Oprirea serverului

SIGTERM dupa primirea semnalului SIGTERM, daemonul va refuza

cererile de conectare, permitānd totusi serverelor sa-si continue executia. Postmaster-u\ se va opri doar atunci cānd toate serverele s-au oprit īn urma cererii clientilor.

SIGINT dupa receptionarea acestui semnal, daemonul va refuza

cererile de conectare si va trimite tuturor serverelor pornite semnalul SIGTERM, iar acestea vor renunta la tranzactiile curente si īsi vor īncheia executia. Daemonul se va opri dupa ce toate serverele vor fi oprite.

SIGOUIT daemonul va trimite serverelor semnalul SIGQUIT si apoi īsi

va īncheia imediat executia, fara a salva eventualele modificari asupra sistemului de baze de date. Nu este recomandata utilizarea acestui semnal.

Autentificarea clientilor

Autentificarea este procedura prin care serverul de baze de date stabileste identitatea clientului, determinānd daca se permite conectarea aplicatiei-client.

Numele de utilizatori PostgreSQL sunt separate logic de numele de utilizatori Linux de pe masina pe care ruleaza serverul.

Autentificarea clientilor se configureaza īn fisierul pg_hba.conf (HBA īnseamna Host-Based Authentication), localizat īn directorul de date postgres, Acest fisier este alcatuit din mai multe īnregistrari, cāte una pe linie, formate, la

Setari avansate ale sistemului

rāndul lor, din mai multe cāmpuri. Cāmpurile sunt separate prin spatii sau tab-uri. Liniile īncepānd cu "#" sunt considerate comentarii, īnregistrarile pot lua trei forme:

local baza_de_date metoda_de_autentificare

host baza_de_date adresa_IP masca_retea metoda de_autentificare

hostssl baza_de_date adresa_IP mascā_retea metoda__de_autentificare

unde:

local conexiunea se face local, de pe aceeasi masina;

host conexiunea se face de pe o alta masina;

hostssl conexiunea se face de pe o alta masina, prin intermediul

SSL;

baza_de_date        specifica numele bazei de date la care se refera īnregistrarea.

Valoarea all permite accesul la toate bazele de date;

samenser semnifica baza de date cu acelasi nume cu al

utilizatorului;

adresa_IP, masca_retea specifica adresa IP si masca de retea a masinii de pe

care se face conexiunea;

metoda_de_autentificare stabileste metoda pe care trebuie sa o foloseasca utilizatorul pentru a se autentifica atunci cānd se conecteaza la baza de date. Sunt posibile urmatoarele metode:

trust - este permis accesul oricarui utilizator de pe

masina-client;

reject - conexiunea nu este permisa;

password - clientul trebuie sa trimita o parola pentru a se

putea conecta. Dupa cuvāntul password se poate

specifica un nume de fisier care contine o lista de

utilizatori si eventual parole, carora le este permis

accesul. Parola este trimisa īn clar prin retea, fara a fi

criptata;

crypt - este similara metodei password, īnsa parolele vor

fi criptate īnainte de a fi trimise.

Prima īnregistrare pentru care se potrivesc adresa IP, masca de retea si numele bazei de date va fi utilizata pentru autentificare. Daca nu se potriveste nici o īnregistrare, conexiunea este refuzata.

Iata un exemplu de fisier pg_hba. conf:

accepta orice conexiune locala

local       all trust

accepta utilizatorii de pe masina 193.226.26.10 sa acceseze orice

baza de date, fara a specifica o parola

host       all 193.226.26.10 255.255.255.0 crypt

Administrarea si configurarea sistemelor Linux

accepta utilizatorii de pe orice masina sa acceseze orice baza de

date, īn conditia corectitudinii parolei

host       all crypt

Administrarea utilizatorilor PostgreSQL

Initial, dupa prima pornire a daemonului PostgreSQL, doar utilizatorul postgres este definit. Pentru a crea un nou utilizator, operatiunea trebuie facuta de sub acest utilizator, spre exemplu:

| su -c postgres "createuser root"

Adaugarea de utilizatori se face fie folosind comanda SQL create user, fie din shell-u\ de comenzi, prin comanda createuser:

CREATE USER utilizator [ WITH

[ SYSID uid ] [ PASSWORD 'parola' ) ]

[ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ] [ IN GROUP lista_grupuri ] [ VALID UNTIL ' timp' ]

unde:

utilizator este numele utilizatorului care va fi creat;

uid este identificatorul utilizatorului, īn mod uzual, acest parametru

nu este necesar;

parola specifica parola de acces;

CREATEDB, NOCREATEDB acorda / nu acorda utilizatorului dreptul de a crea

noi baze de date. Implicit este NOCREATEDB; CREATEUSER, NOCREATEUSER acorda / nu acorda utilizatorului dreptul de a

crea noi utilizatori. Implicit este NOCREATEUSER;
grup
lista de grupuri īn care va fi introdus utilizatorul;

timp specifica data pāna la care utilizatorul va fi valid.

| createuser t optiuni ] utilizator

unde optiuni pot fi:

-d, -createdb acorda utilizatorului dreptul de a crea baze de date; -D, -no-create-db nu acorda utilizatorului dreptul de a crea baze de date; -a, -adduser permite utilizatorului sa adauge utilizatori; A, -no-adduser nu permite utilizatorului sa adauge utilizatori; -P, -pwprompt solicita parola pentru noul utilizator creat; -i, --sysid id     specifica identificatorul utilizatorului. Nu este necesar īn mod normal.

Setari avansate ale sistemului

Prezentam īn continuare un exemplu de executie a comenzii createuser:

l createuser dragos

īs the new user allowed to create databases? (y/n) y

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

CREATE USER

stergerea de utilizatori se face fie prin intermediul comenzii SQL drop user, fie din shell-ul de comenzi, prin comanda dropuser:

| DROP USER utilizator

sau

| dropuser utilizator

De asemenea, PostgreSQL permite folosirea de grupuri de utilizatori, similar grupurilor UNIX. Adaugarea de grupuri se face prin comanda SQL create group, iar stergerea,

CU DROP GROUP.

Gestiunea privilegiilor

PostgreSQL ofera si posibilitatea de acorda fiecarui utilizator privilegii pentru fiecare tip de interogare īn parte. Aceasta se poate face folosind comanda SQL grant, avānd sintaxa:

I

GRANT lista_jDrivi2egii ON lista_ojbiecte TO

unde:

lista_privilegii este o lista de privilegii, separate prin virgula, putānd lua

valorile:

SELECT (accesarea cāmpurilor);

INSERT (inserarea de īnregistrari);

UPDATE (modificarea datelor);

DELETE (stergerea de īnregistrari);

RULE (definirea de reguli);

ALL (toate privilegiile); listajobiecte     este o lista de obiecte la care se refera privilegiile, separate prin

virgula:

table

view

sequence',

Administrarea si configurarea sistemelor Linux

PUBLIC se refera la toti utilizatorii;

GROUP grup acorda privilegiile grupului specificat;

utilizator specifica numele utilizatorului caruia i se acorda privilegiile.

De exemplu, comanda urmatoare SQL va acorda tuturor utilizatorilor dreptul de introducere de īnregistrari noi īn tabela facturi:

| GRANT INSERT ON facturi TO PUBLIC;

Revocarea privilegiilor se face cu revoke, avānd sintaxa:

I

REVOKE lista^privilegii ON lista_obiecte FROM

semnificatia parametrilor fiind aceeasi ca la grant.

Iata si un exemplu care retrage dreptul de stergere de īnregistrari din tabela facturi utilizatorului sabin:

REVOKE DELETE ON facturi TO sabin;

2.2. Sistemul MySQL

O sesiune MySQL este alcatuita din urmatoarele doua componente:

serverul mysqld;

aplicatia care utilizeaza serviciile SQL (cum ar fi programul mysql).

De remarcat ca, spre deosebire de PostgreSQL, MySQL nu foloseste cāte un proces separat pentru fiecare conexiune, ci un singur server, ce utilizeaza fire de executie (threads).

La prima pornire a serverului mysqld va fi verificata existenta clusterului de baze de date. īn general, acesta este localizat īn /var/iib/mysqi/data. Daca acesta nu exista, el va fi creat automat de catre scripturile de pornire, apelānd programul mysql_install_db.

Fisierul de configurare se poate afla fie īn directorul /etc, fie īn directorul de date, fie īn directorul home, si are numele my.cnf. Fisierul de configurare contine mai multe linii, avānd unul dintre urmatoarele formate:

[ grup ]

optiune

optiune =. valoare

set-variable = variabila = valoare

Setari avansate ale sistemului

unde grup reprezinta numele unui program sau grup pentru care se stabilesc optiunile. Grupul client se refera la toti clientii mysqld; mysqld se refera la serverul mysql.

Furnizam mai jos un fisier global my. cnf:

[client] port=3306

[mysqld]

port=3306

set-variable = key_buffer_size = 16M

set-variable = max_allowed_packet = IM

[mysqldump] quick

Autentificarea clientilor

Autentificarea este procedura prin care serverul de baze de date stabileste identitatea clientului, determinānd daca se permite conectarea aplicatiei-client.

Numele de utilizatori MySQL sunt separate logic de numele de utilizatori Linux de pe masina pe care ruleaza serverul.

Autentificarea clientilor se face prin intermediul unor ACL-m\ (Access Control List), si anume utilizānd tabelele host, user si db, respectiv tabies_priv si columns_priv. Acestea se gasesc īn baza de date mysql. MySQL ofera si posibilitatea de acorda fiecarui utilizator privilegii pentru fiecare tip de interogare īn parte.

Tabela user determina daca sunt acceptate sau respinse conexiuni. Pentru conexiunile acceptate, orice drepturi acordate īn aceasta tabela indica privilegii globale. Aceste privilegii se refera la toate bazele de date.

Tabelele db si host sunt utilizate īmpreuna, astfel:

tabela db determina ce utilizatori conectati de pe anumite masini pot accesa
fiecare baza de date si ce operatiuni pot efectua;

tabela host este folosita ca o extensie a tabelei db, daca se doreste ca o
īnregistrare īn tabela db sa se refere la mai multe masini.

De mentionat ca drepturile administrative (reload, shutdown etc.) sunt specificate doar īn tabela user. Cāmpurile din aceste tabele sunt prezentate īn cele ce urmeaza:

Tabelul 2.1. Tabelele interne utilizate pentru autentificarea clientilor


Numele tabelei

user

db

host

Cāmpuri de destinatii

Host User Password

Host Db User

Host Db


Administrarea si configurarea sistemelor Linux


Cāmpuri de




privilegii

Select_priv

Select_priv

Select_priv


InsertjDriv

Insert_priv

Insert_priv


Update_priv

Update_priv

Update_priv


Delete_priv

Delete_priv

Delete_priv


Index_priv

Index_priv

Index_priv


Alter_priv

Alter_priv

Alter_priv


Create_priv

Create_priv

Create_priv


Drop_priv

Drop_priv

Drop_priv


Grant_priv

Grant_priv

Grant_priv


References_priv




Reload_priv




Shutdown_priv




Process_priv




File_priv



I

Tabelele tables_priv si coiumns_priv sunt similare cu db, īnsa se refera la nivel de tabel (respectiv coloana) īn loc de baza de date.

Cāmpurile din tabela user se completeaza astfel:

Host este numele masinii sau adresa sa de IP. Poate fi localhost pentru a indica masina locala. Pot fi folosite si caracterele wildcard "%" (orice sir) sau "_" (orice caracter). Valoarea vida semnifica faptul ca privilegiul trebuie confruntat cu īnregistrarea din tabela host pentru care se potriveste numele masinii specificat; User este numele utilizatorului. Daca este vid, este acceptat orice nume;

Password este parola de acces. Daca este vida, utilizatorul nu trebuie sa
furnizeze nici o parola.

Tabelele db si host se completeaza astfel:

Cāmpul Host se completeaza ca la tabela user. Valoarea "%" īn tabela db
īnseamna "orice masina". Valoarea vida īn tabela db īnseamna "consulta
tabela db". Valoarea "%" sau vida īn tabela host īnseamna "orice masina";

Db este numele bazei de date la care se permite accesul. Valoarea "%" sau
vida īnseamna "orice baza de date";

User este numele utilizatorului. Daca este vid, este acceptat orice nume.

Tabelele db si host sunt citite la pornirea serverului MySQL. Pentru a reciti aceste tabele dupa ce s-au efectuat modificari, trebuie apelata comanda SQL flush

PRIVILEGES.

Cāmpurile din tabelele tables_priv si columns_priv se specifica dupa cum urmeaza:

Setari avansate ale sistemului

Cāmpul Host se completeaza ca la tabela user. Valoarea "%" sau vida
īnseamna "orice masina";

Cāmpurile Db, Tablejiame si Columnjiame nu pot contine caractere
wildcard si nu pot fi vide. Ele specifica numele bazei de date, numele tabelei
si numele coloanei la care se refera regula de acces.

Modificarea acestor table se face cu ajutorul comenzilor SQL GRANT si REVOKE, a caror sintaxa este:

GRANT privilegiu [ lista_coloane ] ON TO utilizator [ IDENTIFIED BY 'parola' ] [ WITH GRANT OPTION ]

REVOKE prilegiu [ lista_coloane ]

ON FROM utilizator

unde privilegiu poate fi:

ALL PRIVILEGES  toate privilegiile

ALTER modificarea cāmpurilor unei tabele

CREATE creare de noi tabele

DELETE stergere īnregistrari dintr-o tabela

DROP stergere de tabele

GRANT OPTION apelul comenzii GRANT

INSERT introducere de noi īnregistrari īntr-o tabela

RELOAD repornirea serverului MySQL

SELECT citirea de īnregistrari dintr-o tabela

SHUTDOWN oprirea serverului MySQL

UPDATE modificarea valorilor cāmpurilor

USAGE nici un privilegiu

De exemplu, comanda:

|GRANT ALL PRIVILEGES on biosfarm%.* to dragos@'10.O.O.%';

permite accesul utilizatorului dragos, de pe orice masina din reteaua 10.0.0.0, la bazele de date care īncep cu biosfarm.

Administrarea utilizatorilor MySQL

Utilizatorii MySQL nu au legatura cu utilizatorii sistemului UNIX, ca de altfel nici parolele acestora. Numele utilizatorilor pot avea maxim 16 caiac! o lungime. ; ;a,'.;i de date cu utilizatorii se afla īn tabela mysql.user, la care acestia nu trebuie sa aiba acces.

Administrarea si configurarea sistemelor Linux

Spre deosebire de PostgresSQL, la prima pornire a serverului MySQL este creat doar utilizatorul root, fara parola, avānd toate privilegiile. Se recomanda stabilirea imediata a unei parole pentru acest utilizator.

Crearea de noi utilizatori MySQL se face tot prin intermediul comenzii GRANT. Daca utilizatorul exista, sunt modificate privilegiile acestuia, īn caz contrar, el este creat. De exemplu, comanda:

I

GRANT ALL PRIVILEGES ON *.* TO dragos@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;

creeaza utilizatorul dragos, care se poate conecta de pe masina locala, avānd toate drepturile, inclusiv dreptul de apelare GRANT. Parola initiala este 123456.

Modificarea parolei unui utilizator se poate face cu ajutorul comenzii:

| SET PASSWORD FOR utilizator = PASSWORDt'parola' )

Spre exemplu:

| SET PASSWORD FOR dragos@localhost = PASSWORD('ppaarroollaa'}



Document Info


Accesari: 3781
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )