MySQL je populární a široce používaný systém pro správu 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 MySQL databáze.
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 vytvořit nového uživatele s názvem „tecmint ’ v databázi 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 přidávání uživatele lokálně, tj. v systému, ve kterém jste nainstalovali MySQL , hostitel uživatele je zadán jako localhost a ne IP adresu. 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.
Zatím tecmint uživatel nemá žádná oprávnění k interakci s databázemi. Ve skutečnosti nemůže uživatel ani přistupovat k 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 má uživatel přístup. Uděluje uživateli všechna práva k databázi – čtení , pište , upravit a provést včetně provádění všech úkolů v jiných databázích a tabulkách.
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:
- VŠECHNA PRIVILEGIA – 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.
- SMAZAT – Umožňuje uživatelům odstraňovat řádky z tabulek.
- VYBRAT – 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 SELECT oprávnění k „tecmint ‘ uživatel na 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;
Navíc můžete přiřadit několik 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 INSERT oprávnění od uživatele „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, spusťte:
MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';
Z výstupu níže vidíme, že INSERT oprávnění bylo odstraněno z „tecmint ’ uživatel zanechá pouze VYBRAT a AKTUALIZOVAT práva na testdb databáze.
Chcete-li otestovat 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 upustit, použijte 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 odstraňování běžných chyb v MySQL
- Mytop – Užitečný nástroj pro monitorování výkonu MySQL/MariaDB v Linuxu
- Jak změnit výchozí port MySQL/MariaDB v systému Linux
- Jak resetovat kořenové heslo MySQL nebo MariaDB v systému Linux
Závěr
Doufejme, že již můžete vytvářet uživatele na svých databázových serverech MySQL a pohodlně přidělovat nebo odebírat oprávnění.