| |
[ 24. July 2000]
- Martin_Nemecek
MySQL Φas¥ jedenßsta - nastavovanie prφstupov²ch prßv
Databßzu a tabu╛ky mßme hotovΘ, naplnili sme si ich aj ·dajmi, r⌠znym sp⌠sobom sme si ich sk·Üali vybera¥, ∩alej sme ich modifikovali a mazali, menili Ütrukt·ru tabu╛ky. Dnes naÜim tabu╛kßm pridelφme zodpovedaj·ce prφstupovΘ prßva.
Hlavn²m d⌠vodom je ich zabespeΦenie pred nepovolan²m a neautorizovan²m prφstupom. Pre ka₧d· tabu╛ku v databßze m⌠₧eme nadefinova¥, ktor² u₧φvate╛ mß k nej prφstup a na akej ·rovni. ╚i₧e akΘ operßcie s ≥ou m⌠₧e vykonßva¥. K nastaveniu t²chto prφstupov²ch prßv sl·₧i prφkaz GRANT. Jeho pou₧itie je nasledovnΘ:
GRANT /prßva/
ON /nazov_tabulky/
TO /meno_uzivatela/
Polo₧ka /prßva/ zodpovedß nastaveniu prφstupov²ch prßv na dan· tabu╛ku. Na tomto mieste m⌠₧eme pou₧i¥ nieko╛ko prφkazov MySQL, na ktorΘ sa bude pridelenie prφstupovΘho prßva vz¥ahova¥. Jednß sa o tieto prφkazy: SELECT, INSERT, UPDATE a DELETE. Ak chceme prideli¥ vÜetky prφstupovΘ prßva na dan· tabu╛ku, pou₧ijeme prφkaz ALL.
Za ON v naÜom prφklade musφ nasledova¥ meno tabu╛ky, pre ktor· danΘ oprßvnenia nastavujeme. Na zßver, za TO, zadßme u₧φvate╛a na ktorΘho sa danΘ nastavenie vz¥ahuje.
Nad databßzou, ktor· ·₧φvate╛ vytvoril mß vΣΦÜinou absol·tne prßva a je oprßvnen² na nej vykonßva¥ akΘko╛vek operßcie. Ak vÜak vytvorφme script, pomocou ktorΘho budeme otvßra¥ naÜu db a pracova¥ s ≥ou, je v²hodnejÜie - z bespeΦnostnΘho h╛adiska vytvori¥ novΘho u₧φvate╛a a prideli¥ mu len tie prßva, ktorΘ s· nevyhnutnΘ na prßcu s db.
Ak teda chceme u₧φvate╛ovi "nobody" povoli¥ pln² prφstup k tabu╛ke "Videofilmy", pou₧ijeme nasledovn² prφkaz:
GRANT ALL ON Videofilmy TO nobody
Ke∩ budeme chcie¥ u₧φvate╛ovi "nobody" da¥ iba prφstup na prezeranie tabu╛ky, pou₧ijeme nasledovn² zßpis:
GRANT SELECT ON Videofilmy TO nobody
Ak budeme potrebova¥ z nejakΘho d⌠vodu odobra¥ urΦitΘmu u₧φvate╛ovi prφstupovΘ prßva do nejakej tabu╛ky, urobφme to jednoducho pomocou prφkazu REVOKE:
REVOKE /prßva/
ON /nazov_tabulky/
TO /meno_uzivatela/
Nie je vÜak vÜetko takΘ jednoduchΘ ako na prv² poh╛ad vypadß. Tento systΘm pride╛ovania a odoberania prφst. prßv nefunguje na vÜetk²ch serveroch. Prφkaz GRANT toti₧ vÜetky serveri nepodporuj·. Aj ke∩ sa sφce tvßria ₧e ßno (ke∩ prφstupovΘ prßvo pomocou GRANT pridelφte, vÜetko vypadß o.k, server neprotestuje a₧ na jednu drobnos¥ - prφstup nefunguje...)
P⌠jdeme na to teda inak. A sφce takto:
Najsk⌠r sa prihlßsφme do db ako root:
mysql - u root -p mysql
Teraz pridßme u₧φvate╛a "deep" s heslom "214@abc" a predpokladajme ₧e sa bude m⌠c¥ hlßsi¥ len z lokßlnΘho stroja. To znamenß, ₧e web server musφ be₧a¥ na lokßlnom poΦφtaΦi, teda tom na ktorom sa bude hlßsi¥ u₧φvate╛ "deep". Teraz pridßme u₧φvate╛a "deep" do tabu╛ky u₧φvate╛ov "user":
INSERT INTO user (host, user, password)
VALUES ('localhost', 'deep', password('214@abc'));
U₧φvate╛a sme pridali, teraz nßm u₧ zostßva prida¥ mu prφstupovΘ prßva (rozhodneme sa pre Φφtanie z db-moja_databaza):
INSERT INTO db (host, db, user, select_priv)
VALUES ('%', 'moja_databaza', 'deep', 'Y');
Ak by sme chceli u₧φvate╛ovi "deep" prideli¥ aj inΘ prφstupovΘ prßva, pomocou prφkazu INSERT s prφznakom 'Y' nastavφme ∩alÜie polo₧ky: insert_priv, delete_priv, update_priv.
Po zmene prφstupov²ch prßv je potrebnΘ aby si ich MySQL server znovu naΦφtal. To m⌠₧eme uskutoΦni¥ pomocou nasledovnΘho prφkazu:
mysql -u root -p reload
|
|
| |
|
"MySQL Φas¥ jedenßsta - nastavovanie prφstupov²ch prßv" | Login / vytvor konto | 3 Komentßrov |
|
Za obsah komentßrov je zodpovedn² u₧φvate╛, nie prevßdzkovate╛ t²chto strßnok. |
chyba (Sk≤re: 0) k²m: Anonym d≥a 26. April 2001 | posledni prikaz by podle mne mel znit mysqladmin -u root -p reload. honza p. |
[ Odpove∩ ] Re: MySQL Φas¥ jedenßsta - nastavovanie prφstupov²ch prßv (Sk≤re: 0) k²m: Anonym d≥a 19. May 2001 | Uz je to nejaky dlouhy cas, co jsem tu cetl takovyto clanek ohledne pridelovani prav, a ze je nutne MySQL reloadnout a pote take uplne vypnout a zapnout. Literatury sice uvadeji, ze to staci jen reloadnout, ale zkusenost je takova, ze je potreba server po reloadu vypnout a zapnout. Opravdu mi to podle toho navodu fungovalo. Ale pokud to zkousim nyni, tak mi to nefunguje a nevim, kde delam chybu. pokud napisu: myslq -u root -p reload, tak se rpesi prihlasuju do DB reload a nasledne me to vyzve k zapsani hesla. Rozhodne tim nereloadnu server. Nejak si nyni nemohu vzpomenout, jak je prikaz pro reload, a proto sem vlastne pisi. Nemohu najit totiz ten clanek, co zde byl uveden a opravdu mi to podle neho fungovalo.
Diky.
debak@hkcz.cz |
[ Odpove∩ ] |