První/čerstvá instalace MySQL na jakýkoli operační systém považuje pouze uživatele root za výchozího uživatele databáze. První databázové transakce/aktivity provádí pouze uživatel root.
Proto není ideální pro žádného uživatele, který potřebuje přístup k databázi MySQL, aby získal přístup přes přihlašovací údaje uživatele root. Přístup uživatele root by měl být vyhrazen administrátorovi databáze, který poté použije pověření uživatele root k vytvoření uživatelů databáze a udělení oprávnění ke spouštění různých databázových dotazů.
Pro administrátora databáze je také ideální praxe vyhnout se používání uživatele root pro přístup k MySQL databáze, ale místo toho vytvořte jiného uživatele a udělte tomuto uživateli stejná přístupová a spouštěcí práva jako uživateli root.
Tento průvodce článkem je ideální pro MariaDB , MySQL Enterprise Edition a MySQL Community Edition uživatelů. Abychom předvedli, jak zkontrolovat uživatelská oprávnění MySQL, nejprve vytvoříme různé testovací uživatele s různými oprávněními MySQL.
Vytvořit nového uživatele MySQL
Nejprve získejte přístup root ke svému MySQL databázi z vašeho linuxového terminálu pomocí příkazu:
$ mysql -u root -p
Syntaxe příkazu pro vytvoření uživatele MySQL je následující:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'your_user_password';
Výše uvedený případ použití platí pro MySQL nainstalovaný na místním počítači. Pokud byste používali vzdálený počítač/server, museli byste nahradit ‘username’@’localhost’ s ‘username’@’remote_machine_ip_address’ .
Pokud chcete uživatele, který se může připojit k libovolnému nainstalovanému systému MySQL bez zadání názvu hostitele nebo IP adresy, dodržujte syntaxi příkazu:
CREATE USER 'username'@'%' IDENTIFIED BY 'your_user_password';
Pojďme nyní vytvořit několik uživatelů databáze MySQL.
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1'; CREATE USER 'user2'@'localhost' IDENTIFIED BY 'password2'; CREATE USER 'user3'@'%' IDENTIFIED BY 'password3';
Všimněte si, že tito uživatelé jsou pro účely ukázky, a proto zvažte vytvoření silnějších hesel uživatelů databáze pro vaše produkční prostředí.

Udělte oprávnění novému uživateli MySQL
Dalším krokem je přiřadit těmto vytvořeným uživatelům databáze různé role (uživatelská oprávnění). Tato uživatelská oprávnění se vztahují k akcím databáze, které mohou provádět různí uživatelé databáze.
Tato oprávnění můžeme rozdělit na:
- Všechna oprávnění :Uživatel, kterému bylo přiděleno toto oprávnění, může vykonávat všechny databázové role.
- Vložit :Uživatel, kterému bylo přiděleno toto oprávnění, může vkládat data řádků databázové tabulky.
- Smazat :Uživatel, kterému bylo přiděleno toto oprávnění, může smazat data řádků databázové tabulky.
- Vytvořit :Uživatel, kterému bylo přiděleno toto oprávnění, může vytvářet neexistující databáze a tabulky.
- Upustit :Uživatel přiřazený k této roli může odstranit existující databáze a tabulky.
- Vyberte :Uživatel, kterému bylo přiděleno toto oprávnění, může číst informace z databází.
- Aktualizovat :Uživatel, kterému bylo přiděleno toto oprávnění, může upravovat data řádků databázové tabulky.
- Možnost grantu :Uživatel, kterému bylo přiděleno toto oprávnění, může měnit oprávnění jiných uživatelských účtů databáze.
Pokud bychom například udělili uživatel1 všechna oprávnění ke všem databázím a tabulkám, abychom byli jako uživatel root, provedli bychom příkaz:
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
Pokud bychom měli udělit uživatel2 všechna oprávnění ke všem databázovým tabulkám konkrétní databáze (např. mysql ), provedli bychom příkaz:
GRANT ALL PRIVILEGES ON mysql.* TO 'user2'@'localhost';
Pokud bychom měli udělit user3 oprávnění vytvářet pouze nové uživatele MySQL, provedli bychom příkaz:
GRANT INSERT ON mysql.user TO 'user3'@'%';
Kontrola uživatelských oprávnění v MySQL
Chcete-li zkontrolovat databázová oprávnění uživatele, použijte syntaxi příkazu:
SHOW GRANTS FOR username;
Kontrola těchto tří uživatelských oprávnění:
SHOW GRANTS FOR user1@localhost; SHOW GRANTS FOR user2@localhost; SHOW GRANTS FOR user3;

Chcete-li zrušit oprávnění přiřazená uživateli, použijte syntaxi příkazu:
REVOKE permission_type ON database.table FROM 'username'@'hostname';
Například;
REVOKE INSERT ON mysql.user FROM user3;

[ Mohlo by se vám také líbit:Cheat Sheet příkazů databáze MySQL pro Linux ]
S tímto článkem nyní rozumíte všemu, co je třeba vědět o uživatelských oprávněních MySQL.