sql >> Databáze >  >> RDS >> Mysql

Jak udělit všechna oprávnění k databázi v MySQL

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 typu ALL (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ž toto username 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)

  1. Knihovna není načtena:/usr/local/opt/readline/lib/libreadline.6.2.dylib

  2. Jak nainstalovat a zabezpečit MariaDB na CentOS 8

  3. Webrick reaguje velmi pomalu. Jak to urychlit?

  4. Jak napsat skript pro vložení Oracle s jedním polem jako CLOB?