Chcete-li začít upravovat oprávnění v MySQL, musíte se nejprve přihlásit k serveru a poté se připojit k mysql
klienta. Obvykle se budete chtít připojit pomocí root
nebo podle toho, který účet je vaším primárním, počátečním „superuživatelským“ účtem, který má plný přístup po celou dobu instalace MySQL.
Obvykle root
uživatel bude mít přiděleno ověřovací heslo při instalaci MySQL, ale pokud tomu tak není, měli byste podniknout kroky ke zvýšení zabezpečení přidáním root
hesla, jak je znázorněno v oficiální dokumentaci.
Připojení k nástroji příkazového řádku MySQL
V tomto příkladu budeme předpokládat root
je primární MySQL účet. Chcete-li začít používat nástroj příkazového řádku MySQL (mysqlcli
), připojte se k vašemu serveru jako root
poté zadejte mysql
příkaz:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Pokud bude úspěšná, uvidíte nějaký výstup o vašem připojení MySQL a budete směřovat dolů k mysql
výzva.
Poznámka:V případě, že se nemůžete připojit přímo k serveru jako root
před připojením k mysql
, můžete zadat uživatele, ke kterému se chcete připojit jako přidáním --user=
vlajka:
$ mysql --user=username
Udělování oprávnění
Nyní, když jste v mysqlcli
stačí zadat pouze GRANT
příkaz s nezbytnými možnostmi pro použití příslušných oprávnění.
Typy oprávnění
GRANT
příkaz je schopen aplikovat širokou škálu oprávnění, vše od schopnosti CREATE
tabulky a databáze, číst nebo zapisovat FILES
a dokonce SHUTDOWN
server. Pro příkaz je k dispozici široká škála příznaků a voleb, takže se možná budete chtít seznámit s tím, co GRANT
můžete skutečně provést procházením oficiální dokumentace.
Oprávnění specifická pro databázi
Ve většině případů udělíte oprávnění uživatelům MySQL na základě konkrétní database
tento účet by měl mít přístup. Je to běžná praxe například pro každou jedinečnou database
MySQL na serveru, aby měl svého vlastního jedinečného user
s ním spojené, takže pouze jeden user
má autentizační přístup k jediné database
a naopak.
Chcete-li GRANT ALL
oprávnění pro user
, což uživateli umožňuje plnou kontrolu nad konkrétní database
, použijte následující syntaxi:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Tímto příkazem jsme MySQL řekli:
GRANT
PRIVILEGES
typuALL
(tedy vše samozřejmě). Poznámka:Většina moderních instalací MySQL nevyžaduje volitelnáPRIVILEGES
klíčové slovo.- Tato oprávnění platí pro
database_name
a vztahuje se na všechny tabulky této databáze, což je označeno.*
to následuje. - Tato oprávnění jsou přiřazena uživateli
username
když totousername
je připojen lokálně, jak je uvedeno v@'localhost'
. Chcete-li zadat libovolného platného hostitele, nahraďte'localhost'
s'%'
.
Spíše než poskytovat všechna oprávnění celé databázi, možná budete chtít dát tolkien
uživatel pouze možnost číst data (SELECT
) od authors
tabulka books
databáze. To by se dalo snadno provést takto:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Vytvoření dalšího superuživatele
I když to není nijak zvlášť bezpečné, v některých případech si možná budete přát vytvořit dalšího „super uživatele“, který má VŠECHNA oprávnění ve VŠECH databázích na serveru. To lze provést podobně jako výše, ale nahrazením database_name
se zástupnou hvězdičkou:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Nyní tolkien
má stejná oprávnění jako výchozí root
účet, pozor!
Uložení změn
Jako poslední krok po každé aktualizaci uživatelských oprávnění nezapomeňte uložit změny vydáním FLUSH PRIVILEGES
příkaz z mysql
výzva:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)