SQL - DCL: Rozdiel medzi revíziami
d |
|||
| Riadok 1: | Riadok 1: | ||
{{Skripta_dbs}} | {{Skripta_dbs}} | ||
| − | |||
Data Control Language (DCL) je podskupina príkazov SQL, ktoré riadia prístup do databázy, objektov a dát. | Data Control Language (DCL) je podskupina príkazov SQL, ktoré riadia prístup do databázy, objektov a dát. | ||
| Riadok 42: | Riadok 41: | ||
| tbl_name | | tbl_name | ||
| db_name.routine_name | | db_name.routine_name | ||
| + | |||
| + | user_specification: | ||
| + | user [IDENTIFIED BY [PASSWORD] 'password'] | ||
| + | |||
</source> | </source> | ||
kde: | kde: | ||
| Riadok 125: | Riadok 128: | ||
|} | |} | ||
| + | |||
| + | Príklady: | ||
| + | |||
| + | <source lang="sql"> | ||
| + | GRANT ALL PRIVILEGES ON myDatabase.* TO newuser@192.168.0.2 | ||
| + | </source> | ||
| + | Pridelia sa všetky privilégiá používateľovi ''newuser'' pre databázu ''myDatabase'' z IP adresy ''192.168.0.2''. | ||
| + | |||
| + | <source lang="sql"> | ||
| + | GRANT SELECT, UPDATE (Title, Start_date) | ||
| + | ON test.Employee TO 'user1'@'domain1.com' | ||
| + | REQUIRE SSL; | ||
| + | </source> | ||
| + | Pridelia sa privilégiá SELECT, UPDATE len pre atribúty Title a Start_date nad tabuľkou Employee v databáze test používateľovi user1 pristupujúceho z domény domain1.com. Je vyžadované zabezpečené spojenie pomocou SSL | ||
| + | |||
===REVOKE=== | ===REVOKE=== | ||
Príkaz REVOKE odstráni nastavených prístupových práv alebo oprávnenie k databáze objektov. | Príkaz REVOKE odstráni nastavených prístupových práv alebo oprávnenie k databáze objektov. | ||
| + | <source lang="sql"> | ||
REVOKE | REVOKE | ||
| − | + | priv_type [(column_list)] | |
| − | + | [, priv_type [(column_list)]] ... | |
| − | + | ON [object_type] priv_level | |
| + | FROM user [, user] ... | ||
| + | </source> | ||
| + | Kde: | ||
| + | * priv_type - určuje privilégiá, ktoré sa majú odstrániť. | ||
| + | * ON - určuje na ktorých objektoch sa mujú privilégiá odstrániť | ||
| + | ** object_type - určuje sa datáza, resp. tabuľka pre odstránenie privilégií danému používateľovi | ||
| + | * FROM user - určenie používateľa, ktorému sa odoberajú oprávnenia | ||
| + | Príklad: | ||
| + | <source lang="sql"> | ||
| + | REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'; | ||
| + | </source> | ||
| + | Odoberieme privilégium INSERT používateľovi jeffrey zo všetkých databáz a tabuliek. Toto obmedzenie je platné len pri prihlásení z lokálneho počítača (localhostu). | ||
| + | |||
| + | <source lang="sql"> | ||
| + | REVOKE ALL PRIVILEGES ON widgets.* FROM widgetAdmin@localhost; | ||
| + | </source> | ||
| + | Odoberú sa všetky privilégiá používateľovi widgetAdmin. Obmedzenia platia len pre localhost. | ||
==Zdroje a odkazy== | ==Zdroje a odkazy== | ||
<references/> | <references/> | ||
Verzia zo dňa a času 21:38, 29. december 2010
Data Control Language (DCL) je podskupina príkazov SQL, ktoré riadia prístup do databázy, objektov a dát.
DCL poskytuje ochranu databázy pred poškodením. Poskytuje možnosť zabezpečenia a ochrany integrity dát databáz. Stupeň ochrany je v závislý od samotného nastavenia používateľských práv a prístupov. Patri sem štyri príkazy: GRANT, REVOKE, ROLLBACK a COMMIT.
Prideľovanie oprávnení
Databázový systém mySQL je viacpoužívateľský, čo znamená že sú vňom definovaný používatelia, ktorí majú určité oprávnenia nad databázovými objektami. MySQL definuje 2 základné skupiny používateľov
- používateľ s úplnými oprávneniami
- používateľ s obmedzenými oprávneniami
Ad 1: Po inštalácii servera MySQL je vytvorený používateľ root, ktorému sú pridelené všetky oprávnenia. Teda vytvárať, modifikovať a mazať databázové objekty. Pod databázovými objektami sa myslí samotné databázy, tabuľky, ale aj používatelia.
Ad 2: Používateľovi s obmedzenými oprávneniami sú odopreté niektoré akcie, ako napríklad vytváranie nových databáz, používateľov, ďalej jednotlivé databázy môžu byť pridelené len na čítanie, aj na zapisovanie, alebo žiaden prístup k databáze.
Jednou z možností ako správne nastaviť používateľské oprávnenia je pravidlo:
- novému používateľovi zakážem všetko
- a povolím mu prístup len k nevyhnutným databázam (resp. k jeho databáze).
GRANT
Príkaz GRANT udeľuje oprávnenia (práva, ktoré majú byť pridelené) existujúcim používateľom v databázovom systéme. Syntax je príkazu GRANT [1]nasledujúca:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
kde:
- column_list - doplniť
- object_type - doplniť
- priv_level - doplniť
- priv_type - Typ oprávnenia. Zoznam najpoužívanejších oprávnení je v nasledujúcej tabuľke.
| Oprávnenie | Vysvetlenie |
|---|---|
| ALL [PRIVILEGES] | Pridelí všetky oprávnenia. |
| ALTER | Povolí použitie príkazu ALTER TABLE |
| ALTER ROUTINE | Povolí zmenu a zmazanie uložených procedúr. |
| CREATE | Povolí vytváranie nových databáz a tabuliek. |
| CREATE ROUTINE | Povolí vytváranie uložených procedúr. |
| CREATE USER | Povolí použitie príkazu CREATE USER, DROP USER, RENAME USER, a REVOKE ALL PRIVILEGES |
| CREATE VIEW | Povolí vytvorenie a modifikovanie pohľadov. |
| DELETE | Povolí použitie príkazu DELETE |
| DROP | Povoľuje mazanie databáz, tabuliek a pohľadov. |
| EXECUTE | Povoľuje spúšťanie uložených procedúr. |
| INSERT | Povolí použitie príkazu INSERT |
| SELECT | Povolí použitie príkazu SELECT |
| SHOW DATABASES | Povolí použitie príkazu SHOW DATABASES pre zobrazenie všetkých databáz. |
| SHOW VIEW | Povolí použitie príkazu SHOW CREATE VIEW, ktorý zobrazí SQL príkaz ktorým bol pohľad vytvorený. |
| SUPER | Povolí použitie ďalších administrtívnych operácií ako CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, a programu mysqladmin. |
| TRIGGER | Povolí operácie súvisiace s automatickým spúšťaním procedúr (triggery). |
| UPDATE | Povolí použitie príkazu UPDATE |
| USAGE | Synonymum pre Synonym "no privileges" |
Príklady:
GRANT ALL PRIVILEGES ON myDatabase.* TO newuser@192.168.0.2
Pridelia sa všetky privilégiá používateľovi newuser pre databázu myDatabase z IP adresy 192.168.0.2.
GRANT SELECT, UPDATE (Title, Start_date)
ON test.Employee TO 'user1'@'domain1.com'
REQUIRE SSL;
Pridelia sa privilégiá SELECT, UPDATE len pre atribúty Title a Start_date nad tabuľkou Employee v databáze test používateľovi user1 pristupujúceho z domény domain1.com. Je vyžadované zabezpečené spojenie pomocou SSL
REVOKE
Príkaz REVOKE odstráni nastavených prístupových práv alebo oprávnenie k databáze objektov.
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
Kde:
- priv_type - určuje privilégiá, ktoré sa majú odstrániť.
- ON - určuje na ktorých objektoch sa mujú privilégiá odstrániť
- object_type - určuje sa datáza, resp. tabuľka pre odstránenie privilégií danému používateľovi
- FROM user - určenie používateľa, ktorému sa odoberajú oprávnenia
Príklad:
REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
Odoberieme privilégium INSERT používateľovi jeffrey zo všetkých databáz a tabuliek. Toto obmedzenie je platné len pri prihlásení z lokálneho počítača (localhostu).
REVOKE ALL PRIVILEGES ON widgets.* FROM widgetAdmin@localhost;
Odoberú sa všetky privilégiá používateľovi widgetAdmin. Obmedzenia platia len pre localhost.
Zdroje a odkazy
- ↑ GRANT (mysql) http://dev.mysql.com/doc/refman/5.5/en/grant.html