Vyhledávání na webu

Jak vytvořit nového uživatele a udělit oprávnění v MySQL


MySQL je oblíbený a široce používaný systém správy databází, který ukládá a organizuje data a umožňuje uživatelům je získávat. Dodává se s širokou škálou možností, které uživatelům udělují určitá oprávnění k tabulkám a databázím.

V této příručce se dozvíte, jak vytvořit nového uživatele a udělit oprávnění v databázi MySQL.

Jak vytvořit nového uživatele v MySQL

Chcete-li vytvořit nového uživatele, nejprve se přihlaste do prostředí MySQL.

sudo mysql -u root -p

Zadejte heslo sudo následované heslem, které jste zadali při nastavování databáze MySQL, a stiskněte ENTER. Poté se zobrazí tato výzva.

Chcete-li vytvořit nového uživatele, použijte syntaxi zobrazenou níže:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Chcete-li například v databázi vytvořit nového uživatele s názvem „tecmint“, vyvolejte příkaz:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Několik bodů, které je třeba mít na paměti

Při místním přidávání uživatele, tj. v systému, ve kterém jste nainstalovali MySQL, je hostitel uživatele zadán jako localhost, nikoli adresa IP. Klíčové slovo „localhost“ znamená „tento počítač“ a MySQL s ním zachází jedinečně. V zásadě je localhost používán klientem mysql k navázání připojení k lokálně nainstalovanému databázovému serveru MySQL.

Dosud uživatel tecmint nemá žádná oprávnění k interakci s databázemi. Ve skutečnosti se uživatel nemůže dostat ani do shellu MySQL.

Chcete-li uživateli udělit plný přístup ke všem databázím, včetně tabulek, spusťte.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

Ve výše uvedeném příkazu hvězdičky ukazují na databázi a tabulku, ke které má uživatel přístup. Uděluje uživateli všechna práva k databázi – čtení, zápis, úpravy a spouštění včetně provádění všech úlohy napříč jinými databázemi a tabulkami.

Doposud jsme uživateli udělili plný přístup k databázi. I když je to užitečné při vysvětlování pojmů MySQL, obecně se to nedoporučuje, protože by to mohlo představovat bezpečnostní riziko pro vaše databáze. Jen pomyslete na to, co by se mohlo stát, kdyby se hacker zmocnil hesla uživatele. Budeme pokračovat dále a probereme, jak přidělit konkrétní oprávnění v další části.

Až budete s přidělováním oprávnění uživateli hotovi, znovu načtěte všechna oprávnění, jak je uvedeno, aby se změny projevily.

MariaDB [none]> FLUSH PRIVILEGES

Jak udělit různá uživatelská oprávnění

Zde je rozpis možných oprávnění, která můžete uživatelům udělit:

  • ALL PRIVILEGES – Jak jsme viděli dříve, toto poskytuje uživateli MySQL plný přístup ke konkrétní databázi.
  • VYTVOŘIT – Umožňuje uživatelům vytvářet nové databáze nebo tabulky.
  • DROP – umožňuje uživatelům smazat databáze nebo uživatele.
  • INSERT – Umožňuje uživatelům vkládat řádky do tabulek.
  • DELETE – Umožňuje uživatelům odstraňovat řádky z tabulek.
  • SELECT – s oprávněním „SELECT“ mohou uživatelé číst obsah tabulky.
  • AKTUALIZACE – umožňuje uživatelům aktualizovat řádky v tabulce.
  • MOŽNOST UDĚLENÍ – Uživatelé mohou udělit nebo odebrat oprávnění jiným uživatelům.

Chcete-li udělit oprávnění konkrétnímu uživateli, použijte syntaxi:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Navíc můžete přiřadit oprávnění všem tabulkám v databázi pomocí jedné hvězdičky, jak je znázorněno:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Chcete-li například přiřadit oprávnění SELECT uživateli „tecmint“ ve všech tabulkách databáze testdb, spusťte příkaz.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Poté vyprázdněte oprávnění, aby se změny projevily.

MariaDB [none]> FLUSH PRIVILEGES;

Kromě toho můžete přiřadit více oprávnění najednou tak, že je oddělíte čárkou, jak je znázorněno.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Jak zrušit oprávnění MySQL

Chcete-li zrušit oprávnění od uživatele, použijte syntaxi:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Chcete-li například zrušit oprávnění INSERT uživateli „tecmint“, spusťte příkaz.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Chcete-li nahlédnout do aktuálních oprávnění uživatele, proveďte:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Z níže uvedeného výstupu můžeme vidět, že oprávnění INSERT bylo uživateli 'tecmint' odebráno a zůstaly pouze SELECT a UPDATE práva na databázi testdb.

Chcete-li vyzkoušet přihlášení do prostředí MySQL pomocí nového uživatele, nejprve se odhlaste.

MariaDB [none]> quit;

Poté se znovu přihlaste.

sudo mysql -u tecmint -p

Zadejte heslo uživatele a stiskněte ENTER pro přístup k shellu.

Chcete-li uživatele zahodit, použijte příkaz DROP, stejně jako při mazání databáze.

MariaDB [none]> DROP USER 'username'@'localhost';

Můžete si také přečíst následující články související s MySQL:

  • Užitečné tipy pro řešení běžných chyb v MySQL
  • Mytop – Užitečný nástroj pro sledování výkonu MySQL/MariaDB v Linuxu
  • Jak změnit výchozí port MySQL/MariaDB v Linuxu
  • Jak resetovat kořenové heslo MySQL nebo MariaDB v Linuxu
Závěr

Doufejme, že nyní můžete vytvářet uživatele na databázových serverech MySQL a pohodlně přidělovat nebo odebírat oprávnění.