× Aktuálně z oboru

Programátoři po celém světě dnes slaví Den programátorů [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]
Celá zprávička [ clanek/2018091300-programatori-po-celem-svete-dnes-slavi-den-programatoru/ ]

Úvod do systému uživatelských práv MySQL

[ http://programujte.com/profil/3420-tomas-horvath/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/14523-martin-simecek/ ]Google [ ?rel=author ]       13. 2. 2009       25 536×

Popis základních principů práce se systémem uživatelských práv v MySQL.

Poslední dobou se stále častěji setkávám s uživateli MySQL, kteří přehlíží anebo vůbec nevědí, že MySQL má svůj vlastní systém uživatelských práv. Do značné míry je to zapříčiněno tím, že webhosting vám již přidělí účet a práva na používání vaší databáze, kde již nemůžete žádné účty vytvářet. Můžete se však lehce dostat do situace, kdy po vás vedení bude chtít, abyste ve firmě realizovali databázový server, který bude určen pro více aplikací. A v tomto případě nemůžete ukládat data z více aplikací do jednoho účtu kvůli přehlednosti. Pro tyto a další situace má MySQL systém uživatelských práv.

Nejdříve si musíme zadefinovat pojem privilegium - je to oprávnění provádět určitou činnost s určitým objektem a je vázána na konkrétního uživatele. Vždy při vytváření uživatele v MySQL mu musíte přidělit privilegia (práva). S vytvářením nových uživatelů se váže pojem princip nejnižšího oprávnění. Tento princip se aplikuje především kvůli zvýšení bezpečnosti databáze. Princip nejnižšího oprávnění říká, že: uživatel nebo procedura by měl mít nejnižší možná oprávnění, která mu umožní provést patřičný úkol. Do praxe převedeno: nebudete přidělovat uživatelům, kteří potřebují data z databáze pouze zobrazit pravomoc DROP, která může databázi nebo tabulku smazat.

Pro přidělování práv máme v MySQL příkaz GRANT. A REVOKE pro odebírání. Tyto příkazy fungují na čtyřech úrovních:

  • Global - globální
  • Database - pro určitou databázi
  • Table - pro určitou tabulku
  • Column - pro určitý sloupec
Obecná syntaxe příkazu GRANT :
GRANT práva [sloupce]
ON položka
TO uživatel [IDENTIFIED BY 'heslo' ]
[REQUIRE volby_ssl]
[WITH [GRANT OPTION | volby_omezení] ]

Typy a úrovně práv

Každému novému uživateli můžeme přidělit poměrně mnoho práv, ne všechna jsou však vhodná pro běžné uživatele. Abychom zachovali princip nejnižšího oprávnění, je vhodné vytvořit uživatele bez práv a po konzultaci s ním mu potřebná práva nastavit. Toto řešení však nelze aplikovat vždy, proto můžeme rozdělit práva na:

  • uživatelská
  • administrátorská
  • zvláštní
Právo Vztahuje se na Popis
SELECT tabulky, sloupce Povoluje vybírat záznamy z tabulek.
INSERT tabulky, sloupce Povoluje vkládat nové řádky do tabulky.
UPDATE tabulky, sloupce Povoluje obnovovat hodnoty záznamů v tabulkách.
DELETE tabulky Povoluje odstraňovat záznamy (řádky) z tabulek.
INDEX tabulky Povoluje vytvářet a odstraňovat indexy z tabulek.
ALTER tabulky Povoluje měnit strukturu stávajících tabulek (přejmenovávat nebo přidávat sloupce, měnit datové typy sloupců).
CREATE databáze, tabulky Povoluje vytvářet nové databáze a tabulky.
DROP databáze, tabulky Povoluje odstranit databáze a tabulky.

Uživatelská práva

Práva Popis
CREATE TEMPORARY TABLES Povoluje administrátorovi používat v příkazu CREATE TABLE klíčové slovo TEMPORARY.
FILE Povoluje načítání dat do tabulky ze souborů a obráceně.
LOCK TABLES Povoluje explicitní použití příkazu LOCK TABLES.
PROCESS Povoluje administrátorovi zobrazit si procesy serveru patřící libovolnému uživateli.
RELOAD Povoluje administrátorovi znovu načíst tabulky práv a synchronizovat práva, hostitele, protokoly a tabulky.
REPLICATION CLIENT Povoluje používat na řídicích a podřízených serverech SHOW STATUS.
REPLICATION SLAVE Povoluje podřízeným serverům se připojit k řídicímu serveru.
SHOW DATABASES Povoluje prohlížet si všechny databáze. Pokud není nastaven, vidí uživatel pouze databáze, ke kterým má práva.
SHUTDOWN Povoluje administrátorovi ukončit MySQL server.
SUPER Povoluje administrátorovi ukončit vlákna patřící libovolnému uživateli.

Administrátorská práva

Práva Popis
ALL Přidělí všechna předešlá práva.
USAGE Nepřidělí žádná práva, uživatel se může pouze přihlásit.

Zvláštní práva

Jednoduchý příklad použití:

mysql> grant all
-> on *
-> to Admin identifed by '123456'
-> with grant option ;

Takto vytvoříme uživatele Admin, který má všechny práva. V běžném světě však přidělujete většinou jen určitou množinu práv.

mysql> grant usage
-> on horv_db.*
-> to horv identifed by '123456';

Tímto příkazem jsme vytvořili uživatele horv bez jakýchkoliv práv pro práci s databází horv_db. Po konzultaci s uživatelem horv zjistíte, že potřebuje většinu práv.

mysql> grant select, insert, update, delete, index, alter, create, drop
-> on horv_db.*
-> to horv;

Může se vám stát, že uživatel horv po neuvážené operaci omylem smazal jednu tabulku. Tímto si podepsal ortel a odeberete mu právo DROP na mazání tabulek a databází.

mysql> revoke drop
-> on horv_db.*
-> from horv ;

Problematika systému uživatelských práv je složitější, ale tento úvod by vám měl pro pochopení principu a využítí poskytnout kvalitní základ.


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2008090900-uvod-do-systemu-uzivatelskych-prav-mysql/ ].