V tomto tutoriálu přidáme nového uživatele do MySQL a udělíme různé typy oprávnění pro databázi MySQL.
Server MySQL nám umožňuje vytvářet četné uživatelské účty a udělovat příslušná oprávnění, aby uživatelé mohli přistupovat k databázím a spravovat je. Jakmile máte na serveru nainstalovanou MySQL, musíte vytvořit databázi a další uživatelské účty.
Chcete-li spustit následující příkazy, musíte se nejprve přihlásit k serveru MySQL pomocí kořenového účtu MySQL.
mysql -u root -p
Jak vytvořit nového uživatele MySQL
Položka CREATE USER
vytvoří nového uživatele na databázovém serveru MySQL. Zde je základní syntaxe příkazu:
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
Ve výše uvedené syntaxi nezapomeňte nahradit uživatelské jméno a heslo s požadovaným uživatelským jménem a heslem.
Nastavte hostname
na localhost
pokud chcete, aby se uživatel mohl připojit k serveru MySQL pouze z localhost, což znamená „tento počítač“. Pokud chcete, aby se uživatel mohl připojit z libovolného hostitele, použijte %
zástupný znak jako název hostitele.
Vytvoříme například uživatele s názvem james
a heslo MyStrongPass123
pomocí následujícího příkazu:
CREATE USER 'james'@'localhost' IDENTIFIED BY 'MyStrongPass123';
Tento uživatel však nebude moci pracovat s žádnou z databází MySQL, dokud mu nebudou udělena další oprávnění.
Jak udělit oprávnění uživateli MySQL
Ihned po úspěšném vytvoření nového uživatele můžeme tomuto novému uživateli udělit oprávnění. Ve většině případů budete uživatelům MySQL udělovat oprávnění na základě konkrétní databáze, ke které by měl mít účet přístup.
Existuje několik typů oprávnění, která lze udělit uživatelskému účtu. Úplný seznam oprávnění podporovaných MySQL naleznete zde.
ALL PRIVILEGES
– Uděluje veškerá oprávnění uživatelskému účtu.ALTER
– Uživatel může změnit strukturu tabulky nebo databáze.CREATE
– Uživatelský účet může vytvářet databáze a tabulky.DROP
– Uživatelský účet může rušit databáze a tabulky.DELETE
– Uživatelský účet může mazat řádky z konkrétní tabulky.INSERT
– Uživatelský účet může vkládat řádky do konkrétní tabulky.SELECT
– Uživatelský účet má povoleno číst databázi.UPDATE
– Uživatelský účet může aktualizovat řádky tabulky.
Chcete-li uživateli poskytnout přístup k databázi MySQL a udělit oprávnění, obecně musíte použít následující GRANT
prohlášení:
GRANT permission_type ON privilege_level TO 'username'@'hostname';
Pro udělení všech oprávnění uživateli james
na jamesdb
databáze, použijte následující příkaz:
GRANT ALL PRIVILEGES ON jamesdb.* TO 'james'@'localhost';
Zadejte následující, chcete-li udělit pouze SELECT
a INSERT
oprávnění pro uživatele james
na jamesdb
databáze:
GRANT SELECT, INSERT ON jamesdb.* TO 'james'@'localhost';
Velký SELECT
oprávnění pro uživatele james
pouze na salaries
tabulky na employees
databáze:
GRANT SELECT ON employees.salaries TO 'james'@'localhost';
V některých případech můžete chtít vytvořit dalšího „super uživatele“. Udělit uživateli stejná oprávnění jako root uživatel MySQL , použijte následující příkaz, který uděluje globální oprávnění uživateli james připojení přes localhost :
GRANT ALL ON *.* TO 'james'@'localhost' WITH GRANT OPTION;
Změna hesla uživatelského účtu MySQL
Předpokládejme, že chcete změnit heslo pro james
uživatel, který se připojuje z localhost
na NewStrongPass123
, musíte provést následující příkaz SQL:
ALTER USER 'james'@'localhost' IDENTIFIED BY 'NewStrongPass123';
Ve výše uvedeném příkazu SQL nezapomeňte změnit james
s uživatelem vaší databáze a localhost
s hostitelem uživatele.
Zobrazit práva pro uživatele v MySQL
V MySQL můžete použít SHOW GRANTS
příkaz k zobrazení všech informací o udělení pro uživatele. Vezměme si několik příkladů.
Následující prohlášení používá SHOW GRANTS
příkaz k zobrazení oprávnění udělených aktuálnímu uživateli:
SHOW GRANTS;
Chcete-li zobrazit granty pro uživatele MySQL, můžete použít SHOW GRANTS
při zadávání uživatelského jména:
SHOW GRANTS FOR 'james'@'localhost';
Odebrat oprávnění z uživatelského účtu MySQL
Syntaxe pro odebrání jednoho nebo více oprávnění z uživatelského účtu je téměř stejná jako při udělování oprávnění.
Pokud potřebujete odebrat oprávnění uživateli james
na jamesdb
databáze, použijte syntaxi podobnou té, kterou jste použili při udělování oprávnění:
REVOKE ALL PRIVILEGES ON jamesdb.* FROM 'james'@'localhost';
Odebrat uživatele z MySQL
Namísto odebrání oprávnění můžete chtít odebrat také daného uživatele. Uživatele databáze tedy můžete odebrat pomocí následujícího příkazu:
DROP USER 'james'@'localhost';
Výše uvedený příkaz odstraní uživatele james
spolu se všemi jeho výsadami.
Uložení změn
Jako poslední krok se při každé aktualizaci nebo změně oprávnění ujistěte, že používáte FLUSH PRIVILEGES
příkaz.
FLUSH PRIVILEGES;
Závěr
Po dokončení tohoto tutoriálu byste měli mít přehled o tom, jak přidávat nové uživatele a udělovat jim různá oprávnění v databázi MySQL.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.