Příkazy DCL
DCL obsahuje mimo jiné příkazy, které umožňují správu uživatelů a jejich oprávnění na vytvořených databázích. Vytvoření uživatele, nastavení hesla a smazání uživatele provádíme následovně:
- vytvoření uživatele
CREATE USER "cerny.ma.2024" IDENTIFIED BY "Prosi2024nec"; - nastavení hesla
SET PASSWORD FOR "cerny.ma.2024" = PASSWORD("Cerve2025nec"); - smazání uživatele
DROP USER "hosta.pe.2025";
Aktuálně přihlášeného uživatele zobrazíme pomocí příkazu:
SELECT USER();
Jeho oprávnění zobrazíme pomocí příkazu:
SHOW GRANTS;
Oprávnění přiřazujeme a odebíráme pomocí příkazů GRANT, resp. REVOKE:
GRANT ALL PRIVILEGES ON db24cerny . * TO "cerny.ma.2024"; | příklad příkazu přidělující všechna oprávnění na databázi db24cerny uživateli „cerny.ma.2024“ |
GRANT SELECT ON db24cerny . * TO "bily.on.2024"; | příklad příkazu přidělující pouze jeden typ oprávnění na databázi db24cerny uživateli „bily.on.2024“ |
Základní typy oprávnění jsou:
| ALL PRIVILEGES | všechna oprávnění |
| CREATE | vytváření nových db tabulek či databázi |
| ALTER | změna struktury db tabulek |
| DROP | výmaz db tabulek či databází |
| DELETE | výmaz záznamů z db tabulek |
| INSERT | vkládání záznamů do db tabulek |
| SELECT | výběr dat z db tabulek |
| UPDATE | změna existujících záznamů v db tabulkách |
| EXECUTE | spouštění uložených procedur a funkcí |
| TRIGGER | vytváření triggerů |
Odebrání oprávnění probíhá pomocí příkazu REVOKE:
REVOKE SELECT ON db24cerny . * FROM "bily.on.2024";
Jakákoliv oprávnění, která přidělíme, přidělujeme pouze danému uživateli a ten defaultně nemá možnost je přidělovat dále. Pokud chceme, aby uživatel mohl část (nebo všechna) svá oprávnění přidělovat dále, je nezbytné využít dodatek WITH GRANT OPTION:
GRANT SELECT ON db24cerny . * TO "bily.on.2024" WITH GRANT OPTION;
Je také možné jít ještě do většího detailu a nepřidělovat oprávnění na čtení všech relací, ale pouze konkrétní relace nebo dokonce pouze konkrétních atributů v relaci:
GRANT SELECT ON db24cerny . 01cars TO "bily.on.2024";GRANT SELECT (VIN, brand, colour) ON db24cerny . 01cars TO "bily.on.2024";
Příklad příkazu zobrazující oprávnění konkrétního uživatele:
SHOW GRANTS FOR "cerny.ma.2024";
Někdy je potřeba po změně oprávnění ještě oprávnění znovu načíst (provést reload) – to se provádí příkazem:
FLUSH PRIVILEGES;