Správa a zabezpečení databáze (tabulky databáze MySQL, přidání uživatele databáze, práva, role, zamykání tabulek, transakce)
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Přidání všech oprávnění pro všechny databáze a jejich tabulky.
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
Odebrání oprávnění na DROP pro všechny databáze a jejich tabulky.
REVOKE DROP ON *.* TO 'username'@'localhost';
Přidání oprávnění měnit oprávnění uživatelů (může přidělovat prává, která sám má).
GRANT USAGE ON *.* 'username'@'localhost' WITH GRANT OPTION;
PAD Programování a databáze
Téma 18
Školní rok 2017/2018
2/2
Jan Švábík, V4D
Role
Aby nebylo nutné přidělovat oprávnění každému uživateli zvlášť, existují role. Jde o jakési skupiny
oprávnění a tuto roli pak je možné snadno přidělit uživatelům, kteří mají disponovat oprávněními
takové role. Jako příklad lze uvést role admin, která by měla přidělena všechna oprávnění. Nyní je
možné uživatelům, kteří mají mít všechna oprávnění (mají být administrátory) přidělit roli admin.
Abychom nemuseli přidělovat oprávnění všem uživatelům zvlášť (což by bylo zdlouhavé), existují
role. Role jsou takové “šablony na oprávnění”. Například můžeme vytvořit roli admin, které
povolíme vše. Následně uživatelům, ze kterých chceme udělat administrátory přidělíme tuto roli
a ti automaticky získají tato práva. MySQL role nepodporuje. Mnoho databázových systémů jako
Oracle, Sybase nebo MS SQL ale ano.
Nastavování rolí může vypadat přibližně následovně.
CREATE ROLE 'app_developer', 'app_read', 'app_write';
GRANT ALL ON app_db.* TO 'app_developer';
GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';
CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';
CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';