Podívejme se, jak udělit oprávnění (tzv. privilegia) uživateli databáze MySQL
Ve výchozím nastavení, když vytvoříte nového uživatele MySQL pomocí syntaxe
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
uživatel toho moc nezmůže. Můžeme říci, že to vlastně nemůže nic.
Nemůže číst data z žádné existující databáze, natož data upravovat. A nemůže ani vytvořit novou databázi.
Chcete-li uživatele přimět k jakékoli činnosti, musíte mu udělit oprávnění k tomu.
Můžete tak učinit pomocí GRANT
příkaz.
Můžeme použít GRANT <permission>
pomocí následujících klíčových slov pro oprávnění:
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Udělte uživateli oprávnění k vytváření nových databází
GRANT CREATE ON *.* TO '<username>'@'localhost';
Udělte uživateli oprávnění vytvářet nové tabulky v konkrétní databázi
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Udělte uživateli oprávnění ke čtení (dotazování) konkrétní databáze
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Udělte oprávnění ke čtení konkrétní tabulky databáze uživateli
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Udělte oprávnění vkládat, aktualizovat a mazat řádky v konkrétní databázi uživatel
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Udělte uživateli oprávnění k mazání tabulek v konkrétní databázi
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Udělte uživateli oprávnění k mazání databází
GRANT DROP ON *.* TO '<username>'@'localhost';
Udělte uživateli všechna oprávnění ke konkrétní databázi
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Udělte všechna oprávnění uživateli
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Odebrat oprávnění
Příklad pro zrušení DROP
oprávnění na <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
Chcete-li zrušit všechna oprávnění, spusťte:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Oprávnění jednoho uživatele můžete zobrazit spuštěním:
SHOW GRANTS FOR '<username>'@'localhost';