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

Sådan giver du alle privilegier på en database i MySQL

For at begynde at redigere privilegier i MySQL skal du først logge ind på din server og derefter oprette forbindelse til mysql klient. Typisk vil du gerne oprette forbindelse med root eller hvilken konto, der er din primære, første 'superbruger'-konto, som har fuld adgang gennem hele MySQL-installationen.

Typisk root brugeren vil være blevet tildelt en autentificeringsadgangskode, da MySQL blev installeret, men hvis det ikke er tilfældet, bør du tage skridt til at øge din sikkerhed ved at tilføje root adgangskoder som illustreret i den officielle dokumentation.

Opretter forbindelse til MySQL Command-Line Tool

I dette eksempel antager vi root er den primære MySQL-konto. For at begynde at bruge MySQL-kommandolinjeværktøjet (mysqlcli ), opret forbindelse til din server som root bruger, udsted derefter mysql kommando:

$ 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>

Hvis det lykkes, vil du se noget output om din MySQL-forbindelse og vende nedad med mysql prompt.

Bemærk:I tilfælde af at du ikke kan oprette forbindelse direkte til serveren som root bruger, før du opretter forbindelse til mysql , kan du angive den bruger, du ønsker at forbinde som ved at tilføje --user= flag:

$ mysql --user=username

Tildeling af privilegier

Nu hvor du er ved mysqlcli prompt, behøver du kun udstede GRANT kommando med de nødvendige muligheder for at anvende de relevante tilladelser.

Privilegetyper

GRANT kommandoen er i stand til at anvende en lang række privilegier, alt fra evnen til at CREATE tabeller og databaser, læs eller skriv FILES , og endda SHUTDOWN serveren. Der er en bred vifte af flag og muligheder tilgængelige for kommandoen, så du ønsker måske at gøre dig bekendt med hvad GRANT faktisk kan gøre ved at gennemse den officielle dokumentation.

Databasespecifikke rettigheder

I de fleste tilfælde vil du give privilegier til MySQL-brugere baseret på den særlige database den konto skal have adgang til. Det er f.eks. almindelig praksis for hver unik MySQL database på en server for at have sin egen unikke user forbundet med det, således at kun én enkelt user har godkendelsesadgang til én enkelt database og omvendt.

For at GRANT ALL privilegier til en user , hvilket giver denne bruger fuld kontrol over en specifik database , brug følgende syntaks:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Med den kommando har vi fortalt MySQL at:

  • GRANT PRIVILEGES af typen ALL (således alt selvfølgelig). Bemærk:De fleste moderne MySQL-installationer kræver ikke de valgfrie PRIVILEGES søgeord.
  • Disse privilegier er for database_name og det gælder alle tabeller i den pågældende database, hvilket er angivet med .* der følger.
  • Disse rettigheder er tildelt username når det username er forbundet via lokalt, som angivet af @'localhost' . For at angive en gyldig vært skal du erstatte 'localhost' med '%' .

I stedet for at give alle privilegier til hele databasen, vil du måske give tolkien bruger kun mulighed for at læse data (SELECT ) fra authors tabel over books database. Det ville let kunne opnås sådan:

mysql> GRANT ALL PRIVILEGES ON books.authors  TO 'tolkien'@'localhost';

Oprettelse af endnu en superbruger

Selvom det ikke er særlig sikkert, kan du i nogle tilfælde ønske at oprette en anden 'superbruger', som har ALLE privilegier på tværs af ALLE databaser på serveren. Det kan udføres på samme måde som ovenfor, men ved at erstatte database_name med jokertegnet stjerne:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';

Nu tolkien har de samme rettigheder som standard root konto, pas på!

Gem dine ændringer

Som et sidste trin efter eventuelle opdateringer af brugerrettighederne skal du sørge for at gemme ændringerne ved at udstede FLUSH PRIVILEGES kommando fra mysql prompt:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

  1. Oracle dynamisk DESC og ASC i rækkefølge efter

  2. Vis alle triggere i Oracle-databasen

  3. java.sql.SQLEundtagelse:I/O-fejl:Forbindelsen blev nulstillet i linux-serveren

  4. Hvordan kan jeg liste alle fremmednøgler, der refererer til en given tabel i SQL Server?