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

Správa uživatelů MySQL

MySQL patří mezi nejoblíbenější správce databází na světě. Obsahuje mnoho funkcí, díky kterým je spolehlivý, efektivní a robustní. Jeho maximální spolehlivosti je dosaženo, pokud je správně používán. Vytváření uživatelů s omezenými oprávněními k databázi je jedním z nejjednodušších a spolehlivých způsobů, jak zvýšit zabezpečení MySQL.

Vytvoření uživatele MySQL

Při instalaci MySQL je jako první vytvořen uživatel root (administrátor MySQL). Uživatel root může v databázi MySQL dělat cokoliv. Pro ostatní lidi je výhodné přistupovat k vaší databázi pomocí tohoto účtu.

Uživatelé se zlými úmysly se mohou pokusit přihlásit jako uživatelé root, aby ukradli hostované informace nebo zničili službu spolu s daty. Správce systému proto musí vytvořit uživatele se specifickými oprávněními k databázi. To zajišťuje, že v případě ohrožení bezpečnosti daného uživatele bude dopad minimální nebo zvládnutelný.

Příkaz MySQL Create User umožňuje vytvořit nový uživatelský účet na databázovém serveru. Poskytuje autentizaci, limit zdrojů, správu rolí a hesel pro nové účty. Výpis nám také umožňuje kontrolovat účty, které by měly být uzamčeny nebo odemčeny.

Chcete-li vytvořit uživatele, je nutné mít globální oprávnění (být uživatelem root) příkazu „CREATE USER“ nebo oprávnění INSERT pro systémové schéma MySQL. Pokud se pokusíte vytvořit uživatele, který již existuje, ale pokud použijete klauzuli „IF NOT EXISTS“, příkaz zobrazí varování pro každého jmenovaného uživatele, který již existuje, namísto chybové zprávy.

Chcete-li vytvořit uživatele bez oprávnění root a udělit mu specifická oprávnění pro přístup a úpravu databáze, používáme následující syntaxi:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Název_účtu má dvě části; uživatelské jméno a název hostitele oddělené znakem @. Uživatelské jméno je jméno uživatele, zatímco název hostitele je jméno hostitele, ze kterého se uživatel může připojit k databázovému serveru.

username@hostname

Název hostitele je volitelný. Pokud není zadán název hostitele, může se uživatel připojit z libovolného hostitele na serveru. Název uživatelského účtu bez názvu hostitele může být zapsán jako username@%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Všimněte si, že příkaz create user vytvoří nového uživatele s plným přístupem. pro udělení oprávnění uživateli použijte příkaz GRANT

K vytvoření nového uživatele v databázi MySQL použijte následující kroky:

1. Pomocí klientského nástroje MySQL otevřete server MySQL

2. Zadejte heslo a stiskněte klávesu Enter.

3. Vytvořte nového uživatele pomocí následujícího příkazu

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Pomocí následujícího příkazu zobrazíte uživatele na serveru MySQL

select user from mysql.user;

Ze zobrazeného výstupu byl úspěšně vytvořen uživatel „foss“.

5. Nyní použijte klauzuli IF NOT EXISTS s příkazem CREATE USER spuštěním následujícího příkazu:

Udělení oprávnění novému uživateli MySQL

Některá z nejběžnějších oprávnění poskytovaných serverem MySQL novému uživateli zahrnují;

1. VŠECHNA PRIVILEGIÍ: povoluje všechna oprávnění k novému uživatelskému účtu

2. VYTVOŘIT: umožňuje uživatelskému účtu vytvářet databáze a tabulky

3. DOP: umožňuje uživatelskému účtu rušit databáze a tabulky

4. SMAZAT: umožňuje uživatelskému účtu odstranit řádky z konkrétní tabulky

5. VLOŽTE: umožňuje uživatelskému účtu vkládat řádky do konkrétní tabulky

6.VYBRAT: umožňuje uživatelskému účtu číst databázi

7.AKTUALIZACE: umožňuje uživatelskému účtu aktualizovat řádky tabulky

Provedením následujícího příkazu udělte uživateli všechna oprávnění

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Provedením následujícího příkazu udělte specifická oprávnění nově vytvořenému uživateli,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Chcete-li vyprázdnit všechna oprávnění přiřazená uživateli, proveďte níže uvedený příkaz.

FLUSH PRIVILEGES;

Chcete-li zobrazit existující oprávnění přiřazená uživateli, spusťte následující příkaz.

SHOW GRANTS FOR 'foss'@'localhost';

MySQL Drop User

Příkaz MySQL Drop User umožňuje odebrat jeden nebo více uživatelských účtů a jejich oprávnění z databázového serveru. Pokud uživatelský účet na databázovém serveru neexistuje, vrátí chybu.

Chcete-li použít příkaz Drop User, musíte mít globální oprávnění nebo oprávnění DELETE pro systémové schéma MySQL.

Syntaxe pro úplné odstranění uživatelských účtů z databázového serveru je následující:

DROP USER 'foss'@'localhost';

Poznámka: Název účtu ve výše uvedeném příkladu je identifikován jako username@hostname. Uživatelské jméno je název účtu, který chcete odstranit z databázového serveru, a název hostitele je název uživatelského účtu serveru. například ‘foss@localhost’. foss je uživatelské jméno, zatímco localhost je název hostitele.

Při odstraňování stávajícího uživatele z databáze serveru MySQL je třeba postupovat podle následujících kroků;

1. Pomocí klientského nástroje MySQL otevřete server MySQL

2. Zadejte heslo účtu a stiskněte Enter

3. Chcete-li zrušit uživatelský účet, proveďte následující příkaz

DROP USER 'fosslinux'@'localhost';

4. Provedením následujícího příkazu zobrazte uživatele

select user from mysql.user; 

Získáte výstup, ve kterém nebude přítomno uživatelské jméno fosslinux, jak je znázorněno níže:

5. Zahodit uživatele lze také použít k odstranění více uživatelských účtů najednou. Chcete-li to provést, oddělte názvy účtů pomocí čárek.

Poznámka: Protože jsme již uživatele opustili, vytvoříme dva uživatele pomocí konceptů vytvoření uživatele (fosslinuxtuts a fosslinux@%). Poté spustíme příkaz v kroku 4, abychom zobrazili stávající uživatele, jak je uvedeno níže:

Nyní zrušte oba uživatele současně pomocí příkazu níže:Provedením následujícího příkazu zrušte oba uživatele:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Všimněte si, že příkaz DROP nemůže automaticky zavřít žádné otevřené uživatelské relace. Když je příkaz DROP proveden, když je aktivní relace uživatelského účtu, příkaz to neovlivní, dokud není jeho relace uzavřena. Uživatelský účet bude zrušen pouze po ukončení relace a při dalším pokusu uživatele se nebude moci znovu přihlásit.

MySQL zobrazí uživatele/vypíše všechny uživatele

Chcete-li spravovat databázi v MySQL, musíte vidět seznam všech uživatelských účtů v databázi. Lidé předpokládají, že existuje příkaz SHOW USERS podobný příkazu SHOW DATABASE nebo SHOW TABLES pro zobrazení seznamu všech uživatelů dostupných na databázovém serveru. Bohužel server MySQL nemá příkaz SHOW USERS pro zobrazení seznamu všech uživatelů na serveru MySQL. Místo toho použijeme následující dotaz k zobrazení seznamu všech uživatelů na databázovém serveru:

Select user from mysql.user;

Po provedení příkazu získáte uživatelská data z uživatelské tabulky databázového serveru MySQL.

Poznámka: V tomto příkladu použijeme databázi MySQL. Vyberte databázi spuštěním příkazu níže a poté pomocí příkazu select from zkontrolujte stávající uživatele, jak je znázorněno na obrázku níže:

use mysql;
SELECT user FROM user;

Pokud chcete zobrazit další informace o uživatelské tabulce, spusťte následující příkaz:

DESC user;

Příkaz poskytne následující výstup se seznamem všech dostupných sloupců databáze mysql.user:

Chcete-li získat vybrané informace, jako je název hostitele, stav vypršení platnosti hesla a uzamčení účtu, proveďte následující dotaz:

 SELECT user, host, account_locked, password_expired FROM user;

Po úspěšném provedení dotazu se zobrazí následující výstup:

Zobrazit aktuálního uživatele

Informace o aktuálním uživateli můžete získat pomocí funkce user() nebo current_user(), jak je uvedeno níže:

Select user(); 

NEBO

Select current_user();

Po úspěšném provedení některého z výše uvedených příkazů se objeví následující výstup.

Zobrazit aktuálně přihlášeného uživatele

Uživatele, který je aktuálně přihlášen k databázovému serveru, můžete zobrazit pomocí následujícího příkazu na serveru MySQL:

SELECT user, host, db, command FROM information_schema.processlist;

Výše uvedené příkazy zobrazí podobnou obrazovku, jako je zobrazena níže:

Jak změnit heslo uživatele MySQL

Uživatelské záznamy MySQL obsahují přihlašovací údaje, oprávnění účtu a informace o hostiteli pro účet MySQL pro přístup a správu databáze. Přihlašovací údaje zahrnují uživatelské jméno a heslo. Proto může být potřeba změnit uživatelské heslo v databázi MySQL.

Chcete-li změnit jakékoli heslo uživatelského účtu, mějte na paměti následující informace:

  • Podrobnosti o uživatelském účtu, který se má změnit
  • Aplikaci používá uživatelský účet, jehož heslo má být změněno. Pokud bylo heslo uživatelského účtu resetováno beze změny připojovacího řetězce aplikace, aplikace se nemůže připojit k databázovému serveru.

MySQL vám umožňuje změnit heslo uživatelského účtu třemi různými způsoby:

  1. UPDATE prohlášení
  2. Příkaz SET PASSWORD
  3. Příkaz ALTER USER

Změna hesla uživatelského účtu pomocí příkazu UPDATE

Po provedení příkazu UPDATE použijeme příkaz FLUSH PRIVILEGE k opětovnému načtení oprávnění z tabulky grantů databáze MySQL.
Předpokládejme, že chcete změnit heslo pro uživatelský účet foss, který se připojuje z localhost s heslem foss12345, proveďte následující příkaz:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

Výše uvedený příkaz nebude fungovat na MySQL verze 5.7.6 nebo vyšší, protože tabulka uživatelů MySQL obsahuje sloupec ověřovacího řetězce, ve kterém je uloženo pouze heslo. Vyšší verze mají v příkazu UPDATE sloupec ověřovacího řetězce, jak je znázorněno v následujícím příkazu:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Poznámka: Tato metoda funguje pouze se staršími verzemi MySQL. Proto, pokud máte novější nebo nejnovější verze MySQL, přeskočte na jiné metody.

Změna hesla uživatelského účtu pomocí příkazu SET PASSWORD

Pokud chcete změnit heslo jiného účtu, musíte mít oprávnění UPDATE. Výpis používá uživatelský účet v následujícím formátu:username@localhost

Opětovné načtení oprávnění z tabulek databáze MySQL pomocí FLUSH PRIVILEGES není nutné používat. Chcete-li změnit heslo uživatelského účtu (foss) pomocí příkazu SET PASSWORD, použijte následující příkaz:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Pokud používáte MySQL verze 5.7.6 nebo vyšší, výše uvedené prohlášení je zastaralé a v budoucích verzích nebude fungovat. Místo toho použijte následující příkaz;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Změna hesla uživatelského účtu pomocí příkazu ALTER USER

MySQL používá příkaz ALTER USER s klauzulí IDENTIFIED BY. Chcete-li to provést, použijte následující syntaxi:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Možná budete muset resetovat heslo kořenového účtu MySQL. Chcete-li to provést, můžete vynutit zastavení a restartování databázového serveru MySQL bez použití ověření tabulky grantů.

Závěr

Tento článek komplexně pokrývá všechny aspekty týkající se správy uživatelů MySQL. Věříme, že je dostatečně podrobná, aby vám poskytla řešení vašich problémů. Pokud narazíte na chyby nebo potíže při zobrazování uživatelů pomocí MySQL, požádejte o pomoc prostřednictvím sekce komentářů. Děkuji za přečtení.


  1. Proč je zde potřeba EXECUTE IMMEDIATE?

  2. Najděte všechny dotazy, které používají konkrétní tabulku

  3. Export databáze SQLite do souboru CSV

  4. sql dotaz, který vrátí rozdíly mezi dvěma tabulkami