GNU/Linux >> Znalost Linux >  >> Linux

Průvodce správou uživatelů MySQL pro začátečníky

Správa uživatelů v MySQL vám dává možnost řídit, co uživatelé mohou a nemohou dělat.

  • Vytvářejte uživatelské účty s různými oprávněními, která jsou vhodná pro jejich funkci.
  • Vyhněte se používání účtu root – Omezte ohrožené aplikace a chraňte se před chybami během běžné údržby.
  • Zajistěte integritu dat správným přiřazením individuálních uživatelských oprávnění. Povolit oprávněným uživatelům dělat jejich práci. Zabraňte neoprávněným uživatelům v přístupu k datům nad rámec jejich oprávnění.

Ověření uživatelského účtu

Když se připojíte k serveru MySQL a spustíte dotaz, ověří vás a autorizuje vaši aktivitu.

  • Ověření :Ověřuje identitu uživatele. Toto je první fáze řízení přístupu. Při každém připojení se musíte úspěšně ověřit. Pokud se vám nepodaří ověřit, vaše připojení se nezdaří a váš klient se odpojí.
  • Autorizace :Ověřuje uživatelská oprávnění. Tato druhá fáze řízení přístupu probíhá pro každý požadavek na aktivní připojení, u kterého byla autentizace úspěšná. Pro každý požadavek MySQL určí, jakou operaci chcete provést, a poté zkontroluje, zda k tomu máte dostatečná oprávnění.

Zobrazit nastavení uživatelského účtu

– Dotazem na databázi mysql zobrazíte identifikační údaje uživatele:

mysql> SELECT user, host, password
-> FROM mysql.user WHERE user='root'; 
+------+-----------+-------------------------------------------+ 
| user | host      | password                                  | 
+------+-----------+-------------------------------------------+ 
| root | localhost | *2447D497B9A6A15F2776055CB2D1E9F86758182F | 
| root | 127.0.0.1 | *2447D497B9A6A15F2776055CB2D1E9F86758182F | 
| root | ::1       | *2447D497B9A6A15F2776055CB2D1E9F86758182F |
+------+-----------+-------------------------------------------+ 
3 rows in set (0.00 sec)

Zobrazit všechny informace o uživateli, včetně oprávnění:

mysql> SELECT * FROM mysql.user\G 
***************** 1. row ***************** 
...
   Select_priv: Y
   Insert_priv: Y
   Update_priv: Y
   Delete_priv: Y
...

Databáze mysql obsahuje informace o všech uživatelských účtech na serveru. Chcete-li zobrazit tyto informace, spusťte příkazy SELECT uvedené výše. Hodnota Y v *_priv pole označuje, že oprávnění je povoleno. Účet root má plný přístup. Všechny jeho sloupce oprávnění mají hodnotu Y.

Kromě oprávnění obsahuje tabulka uživatelů další informace, které jsou užitečné v procesu ověřování. V následujícím výstupu můžete například vidět, že uživatel testeru:

  • Má heslo (viditelné v zašifrované podobě ve sloupci Heslo) a toto heslo nevypršelo (označeno písmenem N ve sloupci password_expired)
  • Nemá definované limity zdrojů (označené nulami ve sloupcích max_*)
  • Nemá žádné nastavení SSL nebo x509 (označeno prázdnými hodnotami ve sloupcích ssl_* a x509_*)
  • K ověření používá plugin mysql_native_password (Název pluginu je uveden ve sloupci pluginu.)
*************************** 1. row ***************************
                  Host: localhost
                  User: testuser
              Password: *14E65567ABDB5135D0CFD9A70B3032C179A49EE7
           Select_priv: Y
           Insert_priv: N
...
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string:
      password_expired: N

Nativní ověřování

Když se připojíte k serveru MySQL pomocí nativního pluginu pro ověřování heslem (výchozí mechanismus ověřování), bude odpovídat zadanému uživatelskému jménu, hostiteli, ze kterého se připojujete, a vašemu heslu s řádky v tabulce mysql.user, aby se zjistilo, zda můžete se připojit a provádět akce.

Chcete-li se připojit k místnímu serveru pomocí klienta mysql, zadejte uživatelské jméno a heslo pro účet, který chcete použít:

shell> mysql -u[username] -p[password]
Poznámka že název hostitele přidružený k vašemu uživateli v tabulce mysql.user odkazuje na název hostitele, ze kterého se připojujete, nikoli na hostitele serveru.

Chcete-li se připojit k serveru, který není nainstalován na místním hostiteli vašeho klienta, zadejte název hostitele serveru, ke kterému se připojujete:

shell> mysql -u[username] -p[password] -h[server_host]

Vytvoření uživatelského účtu

Název účtu se skládá z uživatelského jména a názvu klientského počítače, ze kterého se musí uživatel připojit k serveru. Názvy účtů mají formát ‚uživatelské_jméno‘@‘název_hostitele ‘. Uživatelská jména mohou mít až 16 znaků. Pokud uživatelská jména a názvy hostitelů obsahují speciální znaky, jako jsou pomlčky, musíte používat jednoduché uvozovky. Pokud je hodnota platná jako neuvedený identifikátor, jsou uvozovky volitelné. Vždy však můžete použít uvozovky.

Například k vytvoření účtu použijte příkaz CREATE USER…IDENTIFIED BY:
– Pro uživatele jménem jim
– Pro připojení z localhost
– Pomocí hesla Abc123

CREATE USER 'jim'@'localhost' IDENTIFIED BY 'Abc123';

Vyhněte se možným bezpečnostním rizikům při vytváření účtů:

  • Nevytvářejte účty bez hesla.
  • Nevytvářejte anonymní účty.
  • Pokud je to možné, vyhněte se při zadávání názvů hostitelů účtů zástupným znakům.

Vzory názvu hostitele

Použijte vzor hostitele obsahující % nebo _ zástupné znaky pro nastavení účtu, který umožňuje uživateli připojit se z libovolného hostitele v celé doméně nebo podsíti. Pokud při psaní prohlášení o správě účtu vynecháte hostitelskou část názvu účtu, MySQL předpokládá název hostitele %.

Hodnota hostitele %.example.com odpovídá libovolnému hostiteli v doméně example.com. Hodnota hostitele 192.168.% odpovídá libovolnému hostiteli v podsíti 192.168. Hodnota hostitele % odpovídá libovolnému hostiteli, což uživateli umožňuje připojit se z libovolného hostitele. Pomocí adresy IP s maskou podsítě umožníte uživateli připojit se z libovolného hostitele s adresou v této podsíti. Například hodnota 10.0.0.0/255.255.255.0 odpovídá libovolnému hostiteli s 10.0.0 v prvních 24 bitech jeho IP adresy.

Nepoužívejte zástupné znaky v názvech hostitelů s výjimkou případů, kdy je to nezbytně nutné a řádně auditované, aby se zabránilo zneužití nebo náhodnému vystavení. Pravidelné kontroly provádějte následovně:

mysql> SELECT User, Host FROM mysql.user WHERE Host LIKE '%\%%';

Příklady uživatelského jména a názvu hostitele:

  • [email protected]
  • john@’10.20.30.%’
  • john@’%.ourdomain.com’
  • john@’10.20.30.0/255.255.255.0′

Chcete-li zadat účet anonymního uživatele (tj. účet, který odpovídá libovolnému uživatelskému jménu), zadejte prázdný řetězec pro část uživatelského jména v názvu účtu:

mysql> CREATE USER ''@'localhost';

Vyhněte se vytváření anonymních účtů, zejména těch, které nemají žádné heslo (jako ve výše uvedeném příkladu). To pomáhá vyhnout se bezpečnostním rizikům, která by pocházela z otevření přístupu k instalaci MySQL. Pokud hostitel odpovídá dvěma nebo více vzorům, MySQL vybere nejkonkrétnější vzor.

Nastavení hesla účtu

Nejběžnějším způsobem, jak změnit heslo stávajícího účtu bez změny jakýchkoli jeho oprávnění, je použití SET PASSWORD tvrzení. Chcete-li například nastavit heslo pro jim na místním hostiteli na NewPass, použijte následující příkaz:

mysql> SET PASSWORD FOR jim@localhost = PASSWORD('NewPass');

Pokud jste přihlášeni jako uživatel bez oprávnění root a váš uživatel nemá oprávnění UPDATE pro databázi mysql, můžete změnit pouze své vlastní heslo. To provedete pomocí příkazu SET PASSWORD bez klauzule FOR:

mysql> SET PASSWORD = PASSWORD('NewPass');

Při použití SET PASSWORD použijte PASSWORD() funkce pro zašifrování hesla. Všimněte si, že příkaz CREATE USER automaticky zašifruje heslo, které zadáte, takže při vytváření uživatele pomocí CREATE USER nemusíte používat funkci PASSWORD().

K nastavení hesel ze shellu použijte následující příkazy mysqladmin:

shell> mysqladmin -u root password 'rootpass'
shell> mysqladmin -u root -h host_name password 'rootpass'

V předchozích příkladech „rootpass“ představuje heslo uživatele root a „název_hostitele“ je název hostitele, ze kterého účet root přistupuje k serveru MySQL.

Potvrzení hesel

Přiřaďte všem uživatelským účtům silná, jedinečná hesla. Vyhněte se heslům, která lze snadno uhodnout. Pomocí následujícího příkazu SELECT vypište všechny účty
bez hesel:

SELECT Host, User FROM mysql.user WHERE Password = '';

Identifikace duplicitních hesel:

SELECT User FROM mysql.user GROUP BY password HAVING count(user)>1;

Chcete-li vypršet platnost hesla uživatele, použijte níže uvedený dotaz:

ALTER USER jim@localhost PASSWORD EXPIRE;

Chcete-li zadat příkazy SELECT ve výše uvedených příkladech, musíte se připojit k uživatelskému účtu s oprávněními SELECT ve schématu mysql nebo tabulce mysql.user. Můžete mít více účtů, které se vztahují na konkrétní uživatelské jméno. Pokud se například uživatel jim přihlásí ze dvou míst a vy nastavíte účty pro každé místo, jako je jim@localhost a jim@’192.168.14.38′, oba účty označené jako jim mohou mít stejné heslo.

Platnost hesla uživatele můžete zrušit pomocí příkazu ALTER USER...PASSWORD EXPIRE. Pokud platnost vašeho hesla vyprší, musíte heslo změnit pomocí příkazu SET PASSWORD při příštím přihlášení. Všechny provedené příkazy, které nezačínají na SET, vrátí chybu, dokud heslo nezměníte, jako v tomto příkladu:

mysql> SELECT * FROM City WHERE 1=2;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('new_pwd'); 
Query OK, 0 rows affected (0.01 sec) 

mysql> SELECT * FROM City WHERE 1=2;
Empty set (0.00 sec)

Manipulace s uživatelskými účty

Použijte PŘEJMENOVAT UŽIVATELE příkaz k přejmenování uživatelského účtu:

RENAME USER 'jim'@'localhost' TO 'james'@'localhost';

Výše uvedený dotaz změní název účtu existujícího účtu nebo změní buď uživatelské jméno nebo název hostitele části názvu účtu, nebo obojí.

K odstranění uživatelského účtu použijte příkaz DROP USER:

DROP USER 'jim'@'localhost';

Výše uvedený dotaz odebere všechna oprávnění pro existující účet a poté odebere účet. Také odstraní všechny záznamy pro účet z jakékoli tabulky grantů, ve které existují.

Porozumění MySQL Pluggable Authentication
Porozumění oprávnění MySQL


Linux
  1. Průvodce pro začátečníky ke správě softwaru Linux s RPM

  2. Průvodce pro začátečníky ke správě swapového prostoru v Linuxu

  3. CentOS / RHEL:Průvodce cronem pro začátečníky

  1. Správa dokumentů s otevřeným zdrojovým kódem?

  2. Základní správa uživatelů Linuxu

  3. Jaký je účel uživatele „mysql.sys@localhost“.

  1. Vzdálené připojení k databázi MySQL

  2. Základy uživatele a databáze MySQL

  3. Průvodce SELinuxem pro začátečníky