sql >> Database teknologi >  >> RDS >> Mysql

MySQL brugerstyring

MySQL er blandt de mest populære databaseadministratorer i verden. Den indeholder mange funktioner, der gør den pålidelig, effektiv og robust. Dens maksimale pålidelighed opnås, hvis den bruges rigtigt. At oprette brugere med begrænsede tilladelser på databasen er en af ​​de nemmeste og pålidelige måder at øge MySQL-sikkerheden på.

MySQL-opret bruger

Når du installerer MySQL, er root-brugeren (MySQL-administratoren) den første bruger, der oprettes. Rootbrugeren har lov til at gøre alt og hvad på MySQL-databasen. Det er praktisk for andre at få adgang til din database ved hjælp af denne konto.

Ondsindede brugere kan forsøge at logge ind som root-brugere for at stjæle de hostede oplysninger eller ødelægge tjenesten sammen med dataene. Derfor skal systemadministratoren oprette brugere med specifikke tilladelser på databasen. Dette sikrer, at hvis den pågældende brugers sikkerhed kompromitteres, er påvirkningen minimal eller overskuelig.

MySQL Create User statement giver dig mulighed for at oprette en ny brugerkonto i databaseserveren. Det giver godkendelse, ressourcebegrænsning, rolle- og adgangskodestyringsegenskaber for de nye konti. Opgørelsen giver os også mulighed for at kontrollere de konti, der skal låses eller låses op.

For at oprette en bruger er det nødvendigt at have et globalt privilegium (være en root-bruger) af "CREATE USER"-sætningen eller INSERT-privilegiet for MySQL-systemskemaet. Der vises en fejl, hvis du forsøger at oprette en bruger, der allerede eksisterer, men hvis du bruger "IF NOT EXISTS"-sætningen, giver sætningen en advarsel for hver navngivne bruger, der allerede eksisterer, i stedet for en fejlmeddelelse.

For at oprette en ikke-rootbruger og give dem specifikke privilegier til at få adgang til og ændre databasen, bruger vi følgende syntaks:

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

Kontonavnet har to dele; brugernavnet og værtsnavnet, adskilt af @-symbolet. Brugernavnet er brugerens navn, mens værtsnavnet er værtens navn, hvorfra brugeren kan oprette forbindelse til databaseserveren.

username@hostname

Værtsnavnet er valgfrit. Hvis værtsnavnet ikke er angivet, kan brugeren oprette forbindelse fra enhver vært på serveren. Et brugerkontonavn uden et værtsnavn kan skrives som brugernavn@%

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

Bemærk, at opret brugererklæringen opretter en ny bruger med fuld adgang. for at give privilegier til brugeren, brug GRANT-sætningen

Brug følgende trin for at oprette en ny bruger i MySQL-databasen:

1. Åbn MySQL-serveren

ved at bruge MySQL-klientværktøjet

2. Indtast adgangskoden, og tryk derefter på Enter.

3. Opret en ny bruger ved hjælp af følgende kommando

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

4. Brug følgende kommando til at vise brugere i MySQL-serveren

select user from mysql.user;

Fra det viste output er brugeren 'foss' blevet oprettet.

5. Brug nu IF NOT EXISTS-sætningen med CREATE USER-sætningen ved at køre følgende kommando:

Tildeling af privilegier til MySQL New User

Nogle af de mest almindelige privilegier givet af MySQL-serveren til en ny bruger inkluderer;

1. ALLE PRIVILEGIER: tillader alle privilegier til en ny brugerkonto

2. OPRET: gør det muligt for brugerkontoen at oprette databaser og tabeller

3. DROP: gør det muligt for brugerkontoen at slette databaser og tabeller

4. SLET: gør det muligt for brugerkontoen at slette rækker fra en specifik tabel

5. INDSÆT: gør det muligt for brugerkontoen at indsætte rækker i en specifik tabel

6. VÆLG: gør det muligt for brugerkontoen at læse en database

7. OPDATERING: gør det muligt for en brugerkonto at opdatere tabelrækker

Udfør følgende kommando for at give alle privilegier til en bruger

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

Udfør følgende kommando for at give specifikke privilegier til en nyoprettet bruger,

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

For at fjerne alle rettigheder, der er tildelt en bruger, skal du udføre kommandoen nedenfor.

FLUSH PRIVILEGES;

For at se de eksisterende rettigheder, der er tildelt en bruger, skal du udføre følgende kommando.

SHOW GRANTS FOR 'foss'@'localhost';

MySQL Drop User

MySQL Drop User statement giver dig mulighed for at fjerne en eller flere brugerkonti og deres privilegier fra databaseserveren. Hvis brugerkontoen ikke findes på databaseserveren, vil den returnere en fejl.

For at bruge Drop User-sætningen skal du have et globalt privilegium eller DELETE-privilegiet for MySQL-systemskemaet.

Syntaksen for fuldstændig sletning af brugerkonti fra databaseserveren er som følger:

DROP USER 'foss'@'localhost';

Bemærk: Kontonavnet i eksemplet ovenfor er identificeret som brugernavn@værtsnavn. Brugernavnet er navnet på den konto, du vil slette fra databaseserveren, og værtsnavnet er serverens navn på brugerkontoen. for eksempel 'foss@localhost'. foss er brugernavnet, mens localhost er værtsnavnet.

Følgende er trin, du skal følge, når du sletter en eksisterende bruger fra MySQL-serverdatabasen;

1. Åbn MySQL-serveren

ved at bruge MySQL-klientværktøjet

2. Indtast kontoadgangskoden, og tryk derefter på Enter

3. For at slette en brugerkonto skal du udføre følgende kommando

DROP USER 'fosslinux'@'localhost';

4. Udfør følgende kommando for at vise brugere

select user from mysql.user; 

Du vil få et output, hvor brugernavnet fosslinux ikke vil være til stede, som vist nedenfor:

5. Drop-brugeren kan også bruges til at fjerne mere end én brugerkonti på én gang. For at gøre det adskiller du kontonavnene ved hjælp af kommaer.

Bemærk: Da vi allerede havde droppet brugerne, skal vi oprette to brugere ved hjælp af oprette brugerkoncepter (fosslinuxtuts og fosslinux@%). Derefter skal vi køre kommandoen i trin 4 for at vise de eksisterende brugere som vist nedenfor:

Slip nu de to brugere samtidigt ved at bruge kommandoen nedenfor:Udfør følgende kommando for at slippe begge brugere:

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

Bemærk, at DROP-sætningen ikke kan lukke åbne brugersessioner automatisk. Når DROP-sætningen udføres, mens en brugerkontosession er aktiv, påvirker kommandoen den ikke, før sessionen lukkes. Brugerkontoen slettes kun, når sessionen lukkes, og brugerens næste forsøg vil ikke være i stand til at logge ind igen.

MySQL vis brugere/liste alle brugere

For at administrere en database i MySQL skal du se listen over alle brugers konti i en database. Folk antager, at der er en SHOW USERS-kommando svarende til SHOW DATABASE eller SHOW TABLES til at vise listen over alle tilgængelige brugere på databaseserveren. Desværre har MySQL-serveren ikke en SHOW USERS-kommando til at vise en liste over alle brugere på MySQL-serveren. Så i stedet bruger vi følgende forespørgsel til at se listen over alle brugere på databaseserveren:

Select user from mysql.user;

Efter at have udført kommandoen, vil du få brugerdata fra brugertabellen på MySQL-databaseserveren.

Bemærk: I dette eksempel skal vi bruge MySQL-databasen. Vælg databasen ved at køre kommandoen nedenfor, og brug derefter select from-sætningen til at kontrollere de eksisterende brugere som vist på billedet nedenfor:

use mysql;
SELECT user FROM user;

Hvis du vil se mere information om brugertabellen, skal du udføre følgende kommando:

DESC user;

Kommandoen vil give følgende output, der viser alle de tilgængelige kolonner i mysql.user-databasen:

For at få udvalgte oplysninger som værtsnavn, adgangskodeudløbsstatus og kontolåsning skal du udføre følgende forespørgsel:

 SELECT user, host, account_locked, password_expired FROM user;

Følgende output vises efter vellykket udførelse af forespørgslen:

Vis nuværende bruger

Du kan få oplysninger om den aktuelle bruger ved at bruge funktionen user() eller current_user() som vist nedenfor:

Select user(); 

ELLER

Select current_user();

Følgende output vises efter vellykket udførelse af en af ​​ovenstående kommandoer.

Vis aktuelt logget bruger

Du kan se en bruger, der i øjeblikket er logget ind på databaseserveren ved at bruge følgende kommando i MySQL-serveren:

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

Ovenstående kommandoer udsender en lignende skærm som den, der er vist nedenfor:

Sådan ændres MySQL brugeradgangskode

MySQL-brugerregistreringer indeholder loginoplysninger, kontorettigheder og værtsoplysninger for MySQL-kontoen for at få adgang til og administrere databasen. Loginoplysninger inkluderer brugernavn og adgangskode. Derfor kan der være behov for at ændre brugeradgangskoden i MySQL-databasen.

For at ændre adgangskoden til en brugerkonto, skal du huske at have følgende oplysninger i tankerne:

  • Detaljer om den brugerkonto, der skal ændres
  • Applikationen bruges af den brugerkonto, hvis adgangskode skal ændres. Hvis brugerkontoens adgangskode er blevet nulstillet uden at ændre en programforbindelsesstreng, kan programmet ikke oprette forbindelse til databaseserveren.

MySQL giver dig mulighed for at ændre adgangskoden til brugerkontoen på tre forskellige måder:

  1. OPDATERING erklæring
  2. SET PASSWORD-sætning
  3. ALTER USER-erklæring

Ændring af adgangskode til brugerkonto ved hjælp af UPDATE-erklæringen

Efter at have udført UPDATE-sætningen, bruger vi FLUSH PRIVILEGE-sætningen til at genindlæse privilegier fra bevillingstabellen i MySQL-databasen.
Antag at du vil ændre adgangskoden til en brugerkonto foss, der forbinder fra den lokale vært med adgangskoden foss12345, udfør følgende kommando:

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

Ovenstående erklæring vil ikke fungere på MySQL version 5.7.6 eller nyere, da MySQL-brugertabellen indeholder autentificeringsstrengkolonnen, der kun gemmer adgangskoden. Højere versioner har autentificeringsstrengkolonnen i UPDATE-sætningen som vist i følgende sætning:

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

FLUSH PRIVILEGES;

Bemærk: Denne metode virker kun med ældre versioner af MySQL. Derfor, hvis du har nyere eller nyeste MySQL-versioner, skal du springe til de andre metoder.

Ændring af adgangskode til brugerkonto ved hjælp af SET PASSWORD-sætning

Hvis du vil ændre en anden kontoadgangskode, skal du have UPDATE-privilegiet. Udsagnet bruger brugerkontoen i følgende format:brugernavn@lokalvært

Genindlæsning af privilegier fra rant-tabellerne i MySQL-databasen ved hjælp af FLUSH PRIVILEGES behøver ikke at blive brugt. For at ændre adgangskoden til brugerkontoen (foss) ved at bruge SET PASSWORD-sætningen, skal du bruge følgende sætning:

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

Hvis du bruger MySQL version 5.7.6 eller nyere, er ovenstående erklæring forældet og vil ikke fungere i fremtidige udgivelser. Brug i stedet følgende sætning;

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

Ændring af adgangskode til brugerkonto ved hjælp af ALTER USER-sætning

MySQL bruger ALTER USER-sætningen med IDENTIFIED BY-klausulen. For at gøre det skal du bruge følgende syntaks:

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

Du skal muligvis nulstille MySQL-rootkontoens adgangskode. For at gøre dette kan du tvinge stop og derefter genstarte MySQL-databaseserveren uden at bruge tildelingstabelvalideringen.

Konklusion

Denne artikel har omfattende dækket alle aspekter vedrørende MySQL-brugerstyring. Vi mener, at den er detaljeret nok til at give dig løsninger på dine problemer. Hvis du støder på fejl eller vanskeligheder, mens du viser brugere, der bruger MySQL, bedes du kontakte via kommentarsektionen for at få hjælp. Tak fordi du læste med.


  1. postgresql udenlandsk nøgle syntaks

  2. Hvordan får man eksportoutput i ægte CSV-format i SQL Server Management Studio?

  3. Forskellen mellem primær nøgle og unik nøgle

  4. Jeg bliver ved med at få fejlrelationen [TABEL] eksisterer ikke