sql >> Databasteknik >  >> RDS >> Mysql

MySQL användarhantering

MySQL är bland de mest populära databashanterarna i världen. Den innehåller många funktioner som gör den tillförlitlig, effektiv och robust. Dess maximala tillförlitlighet uppnås om den används på rätt sätt. Att skapa användare med begränsade behörigheter på databasen är ett av de enklaste och pålitligaste sätten att öka MySQL-säkerheten.

MySQL skapa användare

När du installerar MySQL är rotanvändaren (MySQL-administratören) den första användaren som skapas. Rotanvändaren får göra allt och vad som helst på MySQL-databasen. Det är bekvämt för andra att komma åt din databas med detta konto.

Skadliga användare kan försöka logga in som root-användare för att stjäla värdinformationen eller förstöra tjänsten tillsammans med data. Därför måste systemadministratören skapa användare med specifika behörigheter på databasen. Detta säkerställer att om säkerheten för den användaren äventyras blir effekten minimal eller hanterbar.

MySQL Create User statement låter dig skapa ett nytt användarkonto i databasservern. Den tillhandahåller egenskaper för autentisering, resursgräns, roll- och lösenordshantering för de nya kontona. Uttalandet låter oss också kontrollera vilka konton som ska låsas eller låsas upp.

För att skapa en användare krävs det att du har en global behörighet (vara en rotanvändare) för "CREATE USER"-satsen eller INSERT-behörigheten för MySQL-systemschemat. Ett fel visas om du försöker skapa en användare som redan finns, men om du använder "IF NOT EXISTS"-satsen, ger satsen en varning för varje namngiven användare som redan finns istället för ett felmeddelande.

För att skapa en icke-rootanvändare och ge dem specifika privilegier att komma åt och ändra databasen använder vi följande syntax:

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

Kontonamnet har två delar; användarnamnet och värdnamnet, åtskilda av symbolen @. Användarnamnet är användarens namn, medan värdnamnet är värdens namn från vilket användaren kan ansluta till databasservern.

username@hostname

Värdnamnet är valfritt. Om värdnamnet inte anges kan användaren ansluta från vilken värd som helst på servern. Ett användarkontonamn utan värdnamn kan skrivas som användarnamn@%

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

Observera att skapa användarsatsen skapar en ny användare med full åtkomst. för att ge användaren privilegier, använd GRANT-satsen

Använd följande steg för att skapa en ny användare i MySQL-databasen:

1. Öppna MySQL-servern

genom att använda MySQL-klientverktyget

2. Skriv in lösenordet och tryck sedan på Retur.

3. Skapa en ny användare med följande kommando

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

4. Använd följande kommando för att visa användare i MySQL-servern

select user from mysql.user;

Från utgången som visas har användaren "foss" skapats framgångsrikt.

5. Använd nu satsen IF NOT EXISTS med CREATE USER-satsen genom att köra följande kommando:

Ge privilegier till MySQL New User

Några av de vanligaste privilegierna som MySQL-servern ger en ny användare inkluderar;

1. ALLA PRIVILEGIER: tillåter alla privilegier till ett nytt användarkonto

2. SKAPA: gör det möjligt för användarkontot att skapa databaser och tabeller

3. SLÄPP: gör det möjligt för användarkontot att ta bort databaser och tabeller

4. RADERA: gör det möjligt för användarkontot att ta bort rader från en specifik tabell

5. INSERT: gör det möjligt för användarkontot att infoga rader i en specifik tabell

6. VÄLJ: gör det möjligt för användarkontot att läsa en databas

7. UPPDATERING: gör det möjligt för ett användarkonto att uppdatera tabellrader

Utför följande kommando för att ge alla privilegier till en användare

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

Utför följande kommando för att ge specifika privilegier till en nyskapad användare,

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

För att ta bort alla privilegier som är tilldelade en användare, kör kommandot nedan.

FLUSH PRIVILEGES;

För att se befintliga privilegier som tilldelats en användare, kör följande kommando.

SHOW GRANTS FOR 'foss'@'localhost';

MySQL Drop User

MySQL Drop User statement låter dig ta bort ett eller flera användarkonton och deras privilegier från databasservern. Om användarkontot inte finns i databasservern kommer det att returnera ett fel.

För att använda Drop User-satsen måste du ha en global behörighet eller DELETE-behörighet för MySQL-systemschemat.

Syntaxen för att helt ta bort användarkonton från databasservern är följande:

DROP USER 'foss'@'localhost';

Obs! Kontonamnet i exemplet ovan identifieras som användarnamn@värdnamn. Användarnamnet är namnet på kontot du vill ta bort från databasservern, och värdnamnet är serverns namn på användarkontot. till exempel 'foss@localhost'. foss är användarnamnet, medan localhost är värdnamnet.

Följande är steg att följa när du tar bort en befintlig användare från MySQL-serverdatabasen;

1. Öppna MySQL-servern

genom att använda MySQL-klientverktyget

2. Skriv in kontolösenordet och tryck sedan på Retur

3. För att ta bort ett användarkonto, kör följande kommando

DROP USER 'fosslinux'@'localhost';

4. Kör följande kommando för att visa användare

select user from mysql.user; 

Du kommer att få en utdata där användarnamnet fosslinux inte kommer att finnas, som visas nedan:

5. Drop-användaren kan också användas för att ta bort mer än ett användarkonto samtidigt. För att göra det separerar du kontonamnen med kommatecken.

Obs! Eftersom vi redan hade tagit bort användarna kommer vi att skapa två användare med hjälp av skapa användarkoncept (fosslinuxtuts och fosslinux@%). Efter det kommer vi att köra kommandot i steg 4 för att visa de befintliga användarna som visas nedan:

Släpp nu de två användarna samtidigt med kommandot nedan:Kör följande kommando för att släppa båda användarna:

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

Observera att DROP-satsen inte kan stänga några öppna användarsessioner automatiskt. När DROP-satsen exekveras medan en användarkontosession är aktiv, påverkar kommandot den inte förrän dess session stängs. Användarkontot tas bort först när sessionen stängs, och användarens nästa försök kommer inte att kunna logga in igen.

MySQL visa användare/lista alla användare

För att hantera en databas i MySQL måste du se listan över alla användarkonton i en databas. Människor antar att det finns ett SHOW USERS-kommando som liknar SHOW DATABASE eller SHOW TABLES för att visa listan över alla tillgängliga användare på databasservern. Tyvärr har MySQL-servern inte ett SHOW USERS-kommando för att visa en lista över alla användare på MySQL-servern. Så istället använder vi följande fråga för att se listan över alla användare i databasservern:

Select user from mysql.user;

Efter att ha utfört kommandot kommer du att få användardata från användartabellen på MySQL-databasservern.

Obs! I det här exemplet ska vi använda MySQL-databasen. Välj databasen genom att köra kommandot nedan, använd sedan select from-satsen för att kontrollera de befintliga användarna som visas i bilden nedan:

use mysql;
SELECT user FROM user;

Om du vill se mer information om användartabellen, kör följande kommando:

DESC user;

Kommandot kommer att ge följande utdata som listar alla tillgängliga kolumner i databasen mysql.user:

För att få vald information som värdnamn, lösenordets utgångsstatus och kontolåsning, kör följande fråga:

 SELECT user, host, account_locked, password_expired FROM user;

Följande utdata kommer att visas efter framgångsrik körning av frågan:

Visa nuvarande användare

Du kan få information om den aktuella användaren genom att använda funktionen user() eller current_user() som visas nedan:

Select user(); 

ELLER

Select current_user();

Följande utdata kommer att visas efter att du har utfört något av ovanstående kommandon.

Visa för närvarande inloggad användare

Du kan se en användare som för närvarande är inloggad på databasservern genom att använda följande kommando i MySQL-servern:

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

Ovanstående kommandon visar en liknande skärm som den som visas nedan:

Hur man ändrar MySQL-användarlösenord

MySQL-användarposter innehåller inloggningsinformation, kontoprivilegier och värdinformation för MySQL-kontot för att komma åt och hantera databasen. Inloggningsinformationen inkluderar användarnamn och lösenord. Därför kan det finnas ett behov av att ändra användarlösenordet i MySQL-databasen.

För att ändra ett användarkontolösenord, kom ihåg att ha följande information i åtanke:

  • Detaljer om användarkontot som ska ändras
  • Applikationen används av användarkontot vars lösenord ska ändras. Om lösenordet för användarkontot har återställts utan att en applikationsanslutningssträng har ändrats, kan applikationen inte ansluta till databasservern.

MySQL låter dig ändra lösenordet för användarkontot på tre olika sätt:

  1. UPPDATERA uttalande
  2. SET PASSWORD-sats
  3. ALTER USER-uttalande

Ändra lösenord för användarkonto med UPDATE-uttrycket

Efter att ha kört UPDATE-satsen använder vi FLUSH PRIVILEGE-satsen för att ladda om privilegier från grant-tabellen i MySQL-databasen.
Anta att du vill ändra lösenordet för ett användarkonto foss som ansluter från den lokala värden med lösenordet foss12345, kör följande kommando:

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

Ovanstående uttalande kommer inte att fungera på MySQL version 5.7.6 eller senare eftersom MySQL-användartabellen innehåller autentiseringssträngkolumnen som endast lagrar lösenordet. Högre versioner har autentiseringssträngkolumnen i UPDATE-satsen som visas i följande sats:

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

FLUSH PRIVILEGES;

Obs! Denna metod fungerar endast med äldre versioner av MySQL. Därför, om du har nyare eller senaste MySQL-versioner, hoppa till de andra metoderna.

Ändra lösenord för användarkonto med SET PASSWORD-satsen

Om du vill ändra ett annat kontolösenord måste du ha UPPDATERA-privilegiet. Uttalandet använder användarkontot i följande format:användarnamn@localhost

Att ladda om privilegier från rant-tabellerna i MySQL-databasen med FLUSH PRIVILEGES behöver inte användas. För att ändra lösenordet för användarkontot (foss) genom att använda SET PASSWORD-satsen, använd följande sats:

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

Om du använder MySQL version 5.7.6 eller senare är ovanstående uttalande föråldrat och kommer inte att fungera i framtida utgåvor. Använd istället följande påstående;

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

Ändra lösenord för användarkonto med ALTER USER-uttalande

MySQL använder ALTER USER-satsen med IDENTIFIED BY-satsen. För att göra det använder du följande syntax:

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

Du kan behöva återställa lösenordet för MySQL root-kontot. För att göra detta kan du tvinga att stoppa och sedan starta om MySQL-databasservern utan att använda granttabellvalideringen.

Slutsats

Den här artikeln har utförligt täckt alla aspekter av MySQL-användarhantering. Vi tror att den är tillräckligt detaljerad för att ge dig lösningar på dina problem. Om du stöter på fel eller svårigheter när du visar användare som använder MySQL, vänligen kontakta via kommentarsektionen för hjälp. Tack för att du läste.


  1. Hur listar jag tillägg installerade i en databas med psql?

  2. SQL Cross Join

  3. SQL Server ORDER BY datum och nollvärden sist

  4. Hur man inaktiverar alla CHECK &främmande nyckelbegränsningar för en tabell i SQL Server (T-SQL-exempel)