Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
PHP část XXIII. - MySQL - přístupová práva
15. prosince 2000, 00.00 | správně nastavená práva v SQL jsou základem úspěchu. Jak na to v mysql vám poradí tento článek.
V této části se budeme zabývat bezpečnostními otázkami databází. Jelikož většinou databáze obsahují osobní data, jako např. uživatelské jméno a heslo, adresu, telefon atd., je třeba tato data chránit před nechtěnými zraky. Proto většina databázových serverů vyžaduje před začátkem práce s databází přihlášení daného uživatele. Pokud přistupujeme k databázi v PHP skriptech, k databázi se za nás přihlašuje PHP funkce, která jako parametry obsahuje rovněž přihlašovací údaje k databázi (MySQL_Connect();). Ani touto cestou se tedy do databází bez prověření přístupových práv nedostaneme. Pro nastavení přístupových práv k databázi existuje v jazyce SQL funkce GRANT. Samotná MySQL databáze sice tento SQL standard podporuje (nevypisuje chybné hlášky při použití této funkce), ale práva takto nastavená absolutně ignoruje, protože používá vlastní bezpečnostní systém pro řízení přístupů k databázím, založený na databázi se jménem 'mysql' a třech tabulkách v ní obsažených, které se jmenují 'user', 'db' a 'host'. Pro zachování standardu jazyka SQL se tedy nyní podíváme na nastavování přístupových práv pomocí funkcí SQL.
Nastavování přístupových práv pomocí SQL příkazů
K přidělení přístupových práv k tabulce slouží SQL příkaz GRANT. Tento příkaz nastavuje přístupová práva k jednotlivým tabulkám !!! (ne k celé databázi). Syntaxe tohoto příkazu:
|
Jako práva se zde uvádějí SQL příkazy pro manipulaci s daty v databázi, které může v této tabulce daný uživatel provádět. Př.:
|
Tímto SQL příkazem bychom uživateli franta udělili práva pro provádění SQL příkazů SELECT a UPDATE v tabulce zamestnanci.
Pokud bychom některému uživateli chtěli přidělit všechna práva, můžeme místo výpisu povolených SQL příkazů použít slovo ALL, které zajistí nastavení práv pro provádění všech operací.
Na stejném principu rovněž funguje odebírání práv. V tomto případě se SQL příkaz jmenuje REVOKE. Má velmi podobnou syntaxi příkazu GRANT:
|
V podstatě je příkaz stejný, až na název klíčových slov REVOKE a FROM, není tedy třeba vysvětlovat jeho použití.
Nastavování přístupových práv v MySQL
Jak jsem uvedl již na začátku článku, MySQL používá vlastní mechanismus pro nastavování přístupových práv. Hlavní rozdíl spočívá v tom, že pomocí SQL se nastavují přístupová práva pro jednotlivé tabulky, kdežto v MySQL se práva nastavují pro celou databázi. Abychom mohli práva nastavit, musíme se nejdříve přihlásit jako správce databáze, tedy uživatel root:
mysql -u root -p mysql
Nyní se přístupová práva nastavují již standardními SQL příkazy pro manipulaci s daty. Data se však ukládají do speciální databáze s názvem 'mysql', která obsahuje tabulky 'user', 'db' a 'host'. Pokud tedy chceme přidat uživatele franta, provedeme to následujícím SQL příkazem:
|
Tímto jsme uživateli franta přidělili heslo maminka a také jsme zadali, že k databázi může přistupovat pouze z lokálního počítače (localhost). To pro nás v PHP znamená, že PHP skripty, které chtějí přistupovat k databázi, musí být umístěny na stejném počítači jako MySQL. Jinak by místo localhost musela být uvedena jiná adresa, ze které by bylo možné přistupovat k databázi.
Uživatel franta ale ještě nemá přidělena práva k žádné databázi. To napravíme pomocí dalšího SQL příkazu:
|
Tímto jsme tomuto uživateli přidělili práva provádět v databázi zamestnanci tyto SQL příkazy: INSERT, SELECT, UPDATE a DELETE. Vidíte, že položky jednotlivých práv odpovídají názvům SQL příkazů.
Také jste si určitě všimli, že v tomto případě mají SQL příkazy poněkud nestandardní syntaxi.
Po změně přístupových práv je nutné restartovat MySQL, aby se načetla nová přístupová práva.
Příště se jen lehce podíváme do světa PostgreSQL...
Obsah seriálu (více o seriálu):
- PHP část I. - Úvod do jazyka
- PHP část II. - Instalace
- PHP - Část V. (Operátory)
- PHP - Část VIII.
- PHP - Část IX. (Vlastní funkce)
- PHP - Část X. (Proměnné ve funkcích)
- PHP - Část XI.
- PHP - Část XII. (Regulární výrazy)
- PHP - Část XIII. (Regulární výrazy podruhé)
- PHP - Část XIV. (PHP a databáze)
- PHP - Část XV. (Instalace MySQL ve Windows)
- PHP - Část XVI. (Instalace MySQL na LINUXu)
- PHP - Část XVII. (MySQL - vytvoření nové databáze)
- PHP - Část XVIII. (Vkládání dat do databáze)
- PHP - Část XIX. (MySQL - získávání dat z databáze)
- PHP - Část XX. (SQL - získávání dat z databáze II.)
- PHP - Část XXI. (SQL - získávání dat z databázových tabulek III)
- PHP - Část XXII. (MySQL - modifikace a mazání dat v tabulce)
- PHP část XXIII. - MySQL - přístupová práva
- PHP část XXIV. - PostgreSQL
- PHP část XXV. - Cookies
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007