Sunteți pe pagina 1din 8

Depanarea procesului de instalare

In cazul n care ntmpinai probleme n timpul procesului de instalare a serverului


MySQL, primul loc unde ar trebui sa cutai o rezolvare este capitolul Problems end Common
Errors (Probleme si erori frecvente ) din manualul MySQL, manual disponibil la adresa Web
http://www.mysql.com/doc/P/r/Problems.html.

Urmtoarele sunt considerate probleme des ntlnite:
o Pe platforma Linux/Unix, permisiuni configurate incorect nu va permit sa pornii
serviciul MySQL. In acest caz, asigurai-v c ai schimbat proprietarul si grupurile
aa cum prevd instruciunile referitoare la procesul de instalare.
o n cazul n care primii mesajul Access denied (Accesul nu este perrnis) n
momentul n care ncercai s v conectai la serverul MySQL, asigurai-v c
folosii utilizatorul si parola corecta.
o n cazul n care mesajul primit este Can't connect to server (Nu va puteti conecta
la server), asigurai-v c serviciul MySQL a fost pornit c ruleaz fr probleme.
o Atunci cnd definii tabele, dac specificai lungimi pentru cmpuri ale cror tipuri
nu cer specificarea unei lungimi, tabela nu va fi creata. De exemplu, nu ar trebui sa
specificai o lungime atunci cnd definii cmpuri de tip text (spre deosebire de
CHAR sau VARCHAR).

In cazul n care ntmpinai n continuare probleme, chiar si dup ce ai citit manualul i ai
verificat toate erorile comune care sunt descrise, trimitei un mesaj e-mail ctre lista de discuii
MySQL i cu siguran va fi gsita o rezolvare la problema dumneavoastr. Putei, de asemenea,
s achiziionai contracte de asistent de la MySQL AB, la preturi avantajoase.

Considerente fundamentale de securitate
Indiferent dac rulai serverul MySQL pe o platforma Windows sau sub Linux Unix i
indiferent dac administrai propriul server sau folosii un sistem oferit de furnizorul
dumneavoastr de servicii Internet, trebuie sa nelegei considerentele fundamentale de securitate.
Daca accesai serverul MySQL prin furnizorul dumneavoastr de servicii Internet exist cteva
aspecte ale securitii serverului pe care pe care dumneavoastr ca utilizator non-root trebuie s
putei s le modificai sau s le ocolii. Din pcate muli dintre furnizorii de servicii Internet nu
acord nici o importan securitii severelor, lsndu-si clienii expui la riscuri, a cror existent,
de cele mai multe ori acetia nici nu o cunosc.

Pornirea serverului MySQL
Securizarea serverului MySQL ncepe chiar cu procedura de iniializare al acestuia. Daca nu
suntei administratorul serverului nu vei putea sa schimbai aceasta procedura, dar putei s o
analizai i s sesizai furnizorul dumneavoastr de servicii Internet cu privire la vulnerabilitile
identificate de dumneavoastr.
Daca instalarea MySQL s-a realizat pe o platforma Linux/Unix- in nici un caz acesta nu ar trebui
s fie utilizatorul root. Rularea serviciului sub un utilizator non-root, ca de exemplu mysql sau
database, limiteaz posibilitile indivizilor sau voitori de a dobndi acces la server i de a
suprascrie fiiere.
Puteti verifica proprietarul procesului folosind comanda ps (acronim pentru process status-
statutul proceselor) pe sistemul Linux/Unix. Urmtoarele linii va arata ca serverul MySQL ruleaz
sub un utilizator non-root (observati primul cuvant de pe linia a doua):
#> ps auxw | grep mysqld
mysql 153 0.0 0.6 12068 2624 ? S Nov16 0:00 /usr/local/bin/mysql/bin/mysqld
--defaults-extra-file=/usr/local/bin/mysql/data/my.conf
--basedir=/usr/local/bin/mysql datadir=/usr/local/bin/mysql/data
--user=mysql pid-file=/usr/local/bin/mysql/data/mike.pid skip-locking

Urmtoarele linii v arat c serverul MySQL ruleaz sub un utilizator root (asa cum va arta
primul cuvnt din cea de-a doua linia):
#> ps auxw | grep mysqld
root 21107 0.0 1.1 11068 1444 ? S Nov27 0:00 /usr/local/bin/mysql/bin/mysqld
--basedir=/usr/local/bin/mysql datadir=/usr/local/bin/mysql/data skip-locking

Dac remarcai c serverul MySQL ruleaz sub utilizator root pe3 sistemul dumneavoastr,
contactai de urgenta furnizorul de servicii Internet si reclamai acest lucru. Daca suntei
administratorul sistemului, trebuie sa iniializai serviciul MySQL sub un utilizator non-root sau
sa specificai utilizatorul in comanda de iniializare:
Mysqld user=non_root_usr_name

De exemplu, dac dorii s rulai MySQL sub utilizatorul mysql, folosii comanda:
Mysqld user+mysql

Metoda recomandat de iniializare este rularea scriptului seif_mysqld localizat in directorul bin
al instalrii aflate pe sistemul dumneavoastr:
#> /usr/local/bin/mysql/bin/seif_mysqld &.

Securizarea conexiunii la MySQL
Va putei conecta la programul MySQL monitor sau la alt aplicaie in mai multe moduri,
fiecare fiind supus unor riscuri de securitate. Daca instalarea serverului se afla pe calculatorul
dumneavoastr, avei mai puine griji in comparaie cu utilizatorii care trebuie sa se conecteze la
server prin reea.
Daca instalarea serverului se afla pe calculatorul dumneavoastr, cea mai mare grija este
de a nu lsa calculatorul nesupravegheat, si cu instrumente de administrare, MySQL monitor sau
MySQL GUI, pornite si la vedere. Intr-o astfel de situaie oricine trece prin zona poate sa stearga
date, sa introduc date false sau s opreasc serverul. Dac trebuie s lsai calculatorul
nesupravegheat in zone publice, folosii aplicaii de tipul screen-saver sau mecanisme de blocare
cu parola a ecranului.
Daca serverul MySQL este instalat pe o unitate din afara reelei dumneavoastr,
securizarea conexiunii ar trebui sa fie prima prioritate. Ca orice alta transmisiune de date prin
Internet si aceasta ar putea fi interceptata. Daca transmisiunea este necriptat, persoana care o
intercepteaz o poate reconstitui si folosi. Sa presupunem ca transmisia necriptat conine
informaia de autentificare pentru serverul MySQL. Un individ ruvoitor are acum acces la baza
dumneavoastr de date si poate ntreprinde diferite aciuni folosind acreditrile dumneavoastr.
O metod sigur de a preveni astfel de ntmplri este s v conectai la serverul
dumneavoastr MySQL folosind o conexiune securizata. In loc s v conectai la calculatorul aflat
la distanta folosind clasicul Telnet, conectai-v prin intermediul SSH. SSH arat si se comport
la fel ca Telnet, doar c transmisiunile de la si ctre calculatorul aflat la distant sunt criptate. De
asemenea dac folosii o interfaa de administrare bazat pe tehnologiile Web, cum este cazul
phpMyAdmin (pentru mai multe informaii accesai http://phpmyadmin.sourceforge.net) sau orice
alte instrumente puse la dispoziie de furnizorul de servicii Internet, avei grij s le accesai prin
intermediul unei conexiuni securizate.

Introducere in sistemul de privilegii al MySQL
Sistemul de privilegii al MySQL este ntotdeauna pornit. Prima dat cnd ncercai s v
conectai si ulterior pentru orice aciune ntreprins, serverul MySQL verifica urmtoarele trei
aspecte:
De unde accesai serverul (host-ul dumneavoastr);
Cine suntei sau pretindei ca a-ti fi (utilizatorul si parola);
Ce operaii avei dreptul sa ntreprindei (privilegiile dumneavoastr de comanda).
Toate aceste informaii sunt stocate intr-o baza de date numita mysql, care se creeaz
automat n momentul instalrii. In aceast baza de date mai multe tabele:

columns_priv - conine informaiile referitoare la privilegiile unui anumit utilizator
pentru anumite cmpuri dintr-o tabel;
db - conine informaiile referitoare la permisiunile pentru toate bazele de date de pe
server;
func - conine funciile create de utilizator;
host - conine lista tuturor staiilor (host-urilor) de unde sistemul poate accepta conexiuni;
tables_priv - conine informaiile cu privire la privilegiile unui anumit utilizator pe tabele
specifice dintr-o baz de date;
user - conine informaiile referitoare la comenzile pe care un anumit utilizator are
dreptul s le execute sau nu.

Aceste tabele vor cpta o mai mare importan ulterior n acest capitol pe masur ce vei
aduga exemple de utilizatori de MySQL. Pn atunci trebuie doar s reinei c aceste tabele
exist i c ele trebuie s conin datele necesare pentru ca un utilizator s poat ntreprinde o
anumit aciune.

Procesul de autentificare in doi pai
Asa cum ai aflat deja, serverul MySQL verific trei lucruri n cadrul procesului de autentificare.
Aciunile asociate cu aceste trei lucruri sunt efectuate n doi pai:

Serverul MySQL verific staia (host-ul) de unde v conectai, precum i perechea utilizator-
parol pe care ai furnizat-o. Dac staia dumneavoastr este autorizat s se conecteze, parola
corespunde utilizatorului i utilizatorul este cel asociat staiei respective, serverul MySQL trece la
pasul urmtor.
Pentru orice comand SQL pe care ncercai s o rulai, serverul MySQL verific dac suntei
autorizat s executai respectiva comand asupra bazei de date, tabelei sau cmpului vizat.

Dac sunt ntlnite erori la pasul 1, vei vedea un mesaj care descrie respectivele erori i nu vei
putea trece la pasul 2. De exemplu: s presupunem c v conectai la serverul MySQL folosind
numele de utilizator student i parola abc123 i c dorii s accesai o baza de date intitulat
myDB. Vei primi un mesaj de eroare dac oricare dintre aceste variabile de conectare sunt
incorecte, din cauza unuia dintre urmtoarele motive:
parola este incorect;
utilizatorul student nu exist;
utilizatorul student nu are dreptul de a se conecta de pe staia localhost;
utilizatorul student are dreptul de a se conecta de pe staia localhost, dar nu are dreptul
s utilizeze baza de date myDB.

Exista si posibilitatea sa vedeti o eroare precum cea de mai jos:

#> /usr/local/mysql/bin/mysql -h localhost -u joe -pabc123 test
Error 1045: Access denied for user: 'joe@localhost' (Using password: YES)

Dac utilizatorului student cu parola abc123 i este permis conectarea de la statia
localhost, precum i utilizarea bazei de date myDB, MySQL va verifica la pasul 2 al
procesului de conectare aciunile pe care student are dreptul s le ntreprinda. In scop
demonstrativ, s presupunem c student are dreptul de a selecta (SELECT) datele dar nu
are dreptul de a introduce (INSERT) date noi. Secvena de evenimente si erori ar arta precum
n liniile de cod de mai jos:

#> /usr/local/mysql/bin/mysql -h localhost -u joe -pabc123 test Reading table informat ion for complet ion of
table and column names You can turn off this feature to get a quicker startup with -A

Welcome to the MySOL monitor. Commands end with ; or Ig.
Your MySOL connection id is 61198 to server version: 4.0.15-10g Type 'help;' or '\h' for help. Type '\c' to
clear the buffer.

mysql> select * from test_table;
+-------+----------------+
| id | test_field |
+-------+- - - - - - - - - +
+------+- - - - - -- - - -+
| 1 | blah |
| 2 | blah blah |
+- - - -+- - - - - - - - - +
2 rows in set (0.0 sec)

mysql> insert into test_table values (", 'my text');
Error 1044: Access denied for user: 'student@localhost' (Using password: YES)

Permisiunile bazate pe aciuni sunt foarte des ntlnite n aplicaiile cu mai multe
nivele de administrare. De exemplu, dac ai creat o aplicaie care contine informaii
financiare personale, ai putea alege s oferii personalului normal doar posibilitatea de a
selecta (SELECT) date, dar de asemenea ai putea oferi personalului de conducere, care
beneficiaz de autorizrile necesare, posibilitatea i de a insera (INSERT) sau terge
(DELETE) date.

Lucrul cu privilegiile acordate utilizatori

n cele mai multe cazuri, atunci cnd accesai serverul MySQL prin intermediul
furnizorului dumneavoastr de servicii Internet, vei avea la dispoziie doar un utilizator i o
singur baz de date. Iniial, acel utilizator va avea acces la toate tabelele din acea baz de
date i va fi acreditat s efectueze orice aciune asupra ei. n acest caz, responsabilitatea de a
crea prin programare o aplicaie sigura va aparine dumneavoastr ca dezvoltator.

Dac suntei administratorul serverului propriu de baze de date sau sunteti abilitat s
adugai oricte baze de date i utilizatori dorii, precum i s modificati drepturile i
privilegiile de acces ale utilizatorilor dumneavoastr, atunci urmtoarele seciuni v vor oferi
informaii foarte importante despre aceti pai.

Adugarea utilizatorilor

Administrarea serverului dumneavoastr cu ajutorul unui instrument dezvoltat de o
ter parte v-ar putea oferi metode foarte simple de adugare a utilizatorilor, cu ajutorul unor
procese de tipul utilitarelor de asisten sau a unei interfee grafice specifice. Totui,
aduqarea de utilizatori cu ajutorul utilitarului MySQL monitor nu este deloc dificil, mai
ales dac suntei deja familiarizat cu conceptele de securitate ale serverului MySQL care v-au
fost prezentate anterior.

Cea mai simpl metod de a aduga un utilizator nou este comanda GRANT.
Conectndu-v la serverul MySQL ca utilizator root putei s tastai aceast comand care v
permite adugarea de noi utilizatori. Cealalt metod este utilizarea comenzii INSERT asupra
tuturor tabelelor relevante din baza de date mysql, caz n care este necesar o cunoatere
temeinic a cmpurilor i tabelelor in care sunt stocate permisiunile. Metoda comenzilor
INSERT succesive produce acelasi rezultat dar este puin mai laborioas i mai complicat
dect comanda clasica GRANT.

Sintaxa simpl a comenzii GRANT este urmtoarea:

GRANT privilegii
ON baza_de_date.nume_ tabela
TO nume_utilizator@host
IDENTIFIED BY "parola";

Prilegiile pe care le putei oferi utilizatorilor prin intermediul comenzii GRANT sunt
urmtoorele:

ALL - confer utilizatorului toate privilegiile de mai jos;
ALTER - utilizatorii pot modifica tabele, coloane i indexuri;
CREATE - utilizatorii pot crea baze de date, tabele i indexuri noi;
DELETE - utilizatorii pot terge nregistrri din tabele;
DROP - utilizatorii pot muta tabele i baze de date;
FILE - utilizatorii pot citi i scrie fiiere; procedur folosit la importul i
exportul (dump) datelor din baza de date;
INDEX - utilizatorii pot aduga sau terge indexuri;
INSERT - utilizatorii pot introduce date noi n tabele;
PROCESS - utilizatorii pot vizualiza i interaciona cu procesele de sistem,
oprindu-le, resetndu-le sau pornindu-le; ca msur de securitate, doar
administratorii i utilizatorii de mare ncredere ar trebui s poat beneficia de
aceast facilitate;
REFERENCES - opiune a nu este utilizat n prezent de ctre serverul MySQL;
exist totui n tabelul user o coloan rezervat pentru privilegii privind
referinele;
RELOAD - utilizatorii pot comanda resetarea serverului (FLUSH); opiunea este
recomandat numai administratorilor i utilizatorilor de mare ncredere;
SELECT - utilizatorii pot selecta i vizualiza nregistrri din baza de date;
SHUTDOWN - utilizatorii pot opri serverul MySQL; opiune recomandat numai
administratorilor i utilizatorilor de mare ncredere;
UPDATE - utilizatorii pot modifica i actualiza datele din tabelele bazei de date;
USAGE - utilizatorii se pot conecta la serverul MySQL, dar nu au nici un alt fel
de privilegiu.

Dac, de exemplu, dorii s creai un utilizator numit john cruia s i fie asociat parola 99h
iei care s aib privilegiile de a selecta (SELECT) i introduce (INSERT) date n toate tabelele
din baza de date numit myDB i dorii, de asemenea, ca acest utilizator s se poat conecta de la
orice staie, ar trebui s scriei o comand ca cea de mai jos:

GRANT SELECT, INSERT
ON myOB.*
TO john@'%"
IDENTIFIED BY "99hjc";

Observai utilizarea celor dou caractere generale "joker" * i %. Aceste caractere generale
sunt utilizate pentru a nlocui toate valorile posibile. n acest exemplu * nlocuiete ntreaga list
de tabele din baza de date myDB, iar % nlocuiete lista tuturor numelor de staii cunoscute n
ntreaga lume -list, de altfel, extrem de lung.

Iat un alt exemplu de adugare a unui utilizator pe un server MySQL folosind comanda
GRANT, de aceast dat pentru a aduga un utilizator numit jane cu parola 45sdg11, care s aib
toate (ALL) privilegiile pentru o tabel numit employees din baza de date numit myCompany.
Acest nou utilizator se va putea conecta doar de la o staie predefinit:
GRANT ALL
ON myCompany.employees
TO jane@janescomputer.company.com
IDENTIFIED BY "45sdg11";

n cazul n care tii c staia janescomputer.company.com are adresa de IP 63.124.45.2,
putei nlocui aceast adres n poriune a din comanda GRANT dedicat numelui staiei
(hostname), la fel ca n exemplul de mai jos:
GRANT ALL
ON myCompany.employees
TO jane@'63.124.45.2
IDENTIFIED BY "45sdg11";


Trebuie avut n vedere un amnunt foarte important cu privire la adugarea de utilizatori:
folosii ntotdeauna parole i avei grij ca aceste parole s ndeplineasc cerinele generale de
securitate! Serverul MySQL v permite s adugai utilizatori fr a le defini o parol, dar acest
lucru las ua deschis acelor indivizi rau intenionai care pot deduce un nume de utilizator din
sistemul dumneavoastr care are toate privilegiile asociate.

In cazul n care folosii comanda GRANT pentru a aduga utilizatori, modificrile vor
intra imediat n vigoare. Pentru a v asigura complet de acest lucru, putei comanda FLUSH
PRIVILEGES din interfaa MySQL monitor, care duce la reincarcarea tabelei de privilegii

Revocarea privilegiilor
Revocarea privilegiilor este la fel de simpl ca i adugarea lor; singura deosebire este c
n locul comenzii GRANT vom utiliza comanda REVOKE. Sintaxa comenzii REVOKE este
urmtoarea:
REVOKE privileges
ON nume_baza_de_date . nume_ tabela
FROM nume_utilizator@nume_host;

De asemenea, n acelai mod n care putei conferi privilegii utiliznd comanda INSERT la
nivelul tabelelor de sistem, le putei i revoca folosind comanda DELETE pentru a terge
nregistrrile aferente din tabelele de sistem din baza de date mysql.
Totui aceast metod presupune o foarte bun cunoatere a tabelelor i cmpurilor
aferente fiecrui privilegiu, de aceea recomandm utilizarea comenzii REVOKE, aceasta oferind
o metod mult mai uoar i mai sigur de revocare a privilegiilor.

Pentru a revoca abilitatea utilizatorului john de a introduce nregistrri noi n baza de date
myCompany, ar trebui s utilizai comanda REVOKE, aa cum v este ea prezentat n exemplul
de mai jos:
REVOKE INSERT
ON myDB.*
FROM john@%;

Modificrile fcute cu ajutorul comenzii REVOKE intr n vigoare imediat, dar pentru ca
serverul s afle despre aceste modificri trebuie s utilizai n interfaa MySQL monitor comanda
FLUSH PRIVILEGES.

Concluzii:
Instalarea serverului MySQL pe platforma Windows este extrem de simpl datorita unei
metode de instalare bazat pe utilitare de asisten. MySQL AB pune la dispoziia utilizatorilor
sistemului de operare Windows o interfa grafic de administrare, numit WinMySQLadmin.
Utilizatorii de Linux/Unix nu beneficiaz de o instalare bazat pe utilitare de asisten, dar nu este
foarte dificil s urmeze o succesiune simpl de instruciuni care despacheteaz i instaleaz
fiierele binare ale serverului i clientului MySQL. Utilizatorii unui sistem de operare de tipul
Linux/Unix pot folosi i pachete RPM pentru instalarea serverului MySQL.

Securitatea este ntotdeauna o prioritate i exist o succesiune predefinit de pai pe care
putei s o urmai pentru a v asigura c dispunei de o instalare sigur i securizat. Chiar dac nu
suntei administratorul serverului, ar trebui sa fii capabil s testai i s identificai eventualele
bree de securitate, pe care s le sesizai ulterior administratorului serverului dumneavoastr
MySQL.
Serviciul de server MySQL nu ar trebui s ruleze sub utilizatorul root. De asemenea
utilizatorii nregistrai pe serverul MySQL ar trebui s aib ntotdeauna o parola iar privilegiile lor
de acces ar trebui s fie ntotdeauna foarte bine definite.
MySQL folosete tabelele de privilegii ntr-un proces n doi pai pentru fiecare solicitare
fcut. MySQL trebuie s tie cine suntei i de unde v conectai si fiecare poriune de informaie
pe care o oferii n cadrul acestui proces trebuie s se corespund cu informaiile stocate n baza
de date mysql, n tabelele de privilegii. De asemenea, utilizatorul trebuie s beneficieze de
permisiuni explicite pentru a executa un anumit tip de comand.
Putei aduga utilizatori prin intermediul comenzii GRANT, care utilizeaz o sintax
simpl pentru a aduga intrri n tabela user din baza de date mysql. Comanda REVOKE, cu o
sintax la fel de simpl, se folosete pentru a terge aceste privilegii.

S-ar putea să vă placă și