Portál AbcLinuxu, 13. května 2025 04:13

Dotaz: MySQL privilegia kontrolujici

1.2.2011 15:10 Petr Docekal
MySQL privilegia kontrolujici
Přečteno: 263×
Odpovědět | Admin
Dobry den.

Mam databazi, k niz bude pristupovat rada uzivatelu a to celou radou cest: PHP, skripty, ... Ne vsichni budou mit pravo vkladat/upravovat data a ne vsichni budou mit pravo vsechna data vybirat.

Rad bych kontrolu privilegii prenechal na samotnem MySQL. Nicmene vubec nevim, jak se neco takoveho resi. Pravdepodobne budu muset mit na vsechny selecty a inserty procedury, ktere budou v tabulkach mysql.user, mysql.db, ... kontrolovat co ktery uzivatel smi a co ne. Nema na to MySQL uz nejake nastroje/funkce?

Mam-li totiz napr. uzivatele "kocour", ktery z tabulky "konzervy" smi videt pouze policko "ziviny", ale uz ne policko "slozeni", nemuzu pro neho vybirat data pomoci SELECT * FROM konzervy, protoze to skonci chybou. Jak pohodlne vybrat vsecha policka, ktera smi "kocour" videt?

Mate s timto prosim nekdo zkusenost? Jak se resi prace s databazi s takto jemne nastavenymi pravy?

Dekuji za Vas cas. -Petr
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.2.2011 16:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL privilegia kontrolujici
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud potřebujete řídit přístup až na úroveň řádků, musíte použít uložené procedury (a otázka je, jestli to s nimi v MySQL půjde, myslím, že ne všechny databázové systémy umí spouštět uložené procedury jménem někoho jiného). Jinak prostředky samotné MySQL můžete řídit přístup až na úroveň sloupečků.
nemuzu pro neho vybirat data pomoci SELECT * FROM konzervy, protoze to skonci chybou. Jak pohodlne vybrat vsecha policka, ktera smi "kocour" videt?
Nedoporučuju používat hvězdičku jinde, než pro nějaké testování či ladění. Ono je to sice pohodlné, ale když se vám pak změní pořadí sloupců nebo jejich názvy, bude vám program dělat divy. Takže radši vyjmenujte sloupečky, které potřebujete – je to pracnější, ale spolehlivější. Navíc při tom rovnou budete přemýšlet o tom, zda opravdu potřebujete tahat z databáze všechny sloupečky :-)
1.2.2011 17:24 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: MySQL privilegia kontrolujici
Pokud čistě na straně DB, tak Vám nic jiného než procedury nezbude…, ale v začátku si raději ujasněte jestli budete definovat i oprávnění „na akce“, ty nemusí souviset s oprávněním na data (nebo se s nimi kříží) a to by mohlo znamenat další definice různých oprávněních, které je obvykle snazší vyřešit, možná nečistě, aplikačně. Na nějakou malou aplikačku to může být pak časově náročné, byť super.

Doplnění k MySQL:
U MySQL je to DEFINER a SQL SECURITY INVOKER v příkazu CREATE PROCEDURE co řeší na koho se procedura spouští a v zásadě by se o default-u dalo hovořit „kdo definuje proceduru pod jeho rolí se procedura provádí“.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
2.2.2011 12:14 Petr Docekal
Rozbalit Rozbalit vše Re: MySQL privilegia kontrolujici
Super, ja Vam panove obema dekuji za pomoc. Zamerim tedy svoji pozornost na procedury.

S pozdravem, -Petr

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.