SQL - DCL
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
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.
Privilege | Meaning |
---|---|
ALL [PRIVILEGES] | Grant all privileges at specified access level except GRANT OPTION |
ALTER | Enable use of ALTER TABLE |
ALTER ROUTINE | Enable stored routines to be altered or dropped |
CREATE | Enable database and table creation |
CREATE ROUTINE | Enable stored routine creation |
CREATE TABLESPACE | Enable tablespaces and log file groups to be created, altered, or dropped |
CREATE USER | Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES |
CREATE VIEW | Enable views to be created or altered |
DELETE | Enable use of DELETE |
DROP | Enable databases, tables, and views to be dropped |
EXECUTE | Enable the user to execute stored routines |
INSERT | Enable use of INSERT |
SELECT | Enable use of SELECT |
SHOW DATABASES | Enable SHOW DATABASES to show all databases |
SHOW VIEW | Enable use of SHOW CREATE VIEW |
SUPER | Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command |
TRIGGER | Enable trigger operations |
UPDATE | Enable use of UPDATE |
USAGE | Synonym for "no privileges" |
REVOKE
Zdroje a odkazy
- ↑ GRANT (mysql) http://dev.mysql.com/doc/refman/5.5/en/grant.html