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í:
CREATEDROPDELETEINSERTSELECTUPDATEALL 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';