sql >> Database >  >> RDS >> Mysql

Meer informatie over machtigingen op MySQL-tabelniveau

Het is heel gebruikelijk om een ​​subsidieverklaring zoals de volgende te zien die toegang geeft tot alle tabellen in een bepaalde database.

GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Waar mydatabase , myreaduser , myhoost , en somepassword zijn de juiste variabelen voor uw database. Houd er rekening mee dat de FLUSH PRIVILEGES opdracht reset de MySQL-rechten en u kunt de nieuwe gebruikerstoelagen niet gebruiken totdat deze is uitgevoerd.

Zo'n gebruiker kan alle tabellen in een database lezen en openen. Voor dit voorbeeld gaan we de boatio-database gebruiken die 3 tabellen heeft:boats , trips , en users .

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats            |
| trips            |
| users            |
+------------------+
3 rows in set (0.00 sec)

Als we een gebruiker willen maken die alleen toegang heeft tot de trips tabel, vervangen we gewoon de jokerteken (*) die alle tabellen vertegenwoordigt, door de specifieke tabellen die u wilt (in dit geval:trips ).

GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Nu kunnen we inloggen als de nieuwe gebruiker en showtabellen uitvoeren om te zien dat deze alleen toegang heeft tot de trips tafel en niet de andere twee. Deze nieuwe gebruiker weet gewoon niet dat de andere tabellen bestaan.

$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
+------------------+
1 row in set (0.00 sec)

Om de gebruiker toegang te geven tot meer tabellen, voert u gewoon dezelfde GRANT . opnieuw uit statement met de extra tabelnamen. Het volgende geeft bijvoorbeeld toegang tot de trips en users tabellen, maar niet de boats .

GRANT SELECT, SHOW VIEW ON boatio.trips TO myreaduser@localhost IDENTIFIED BY 'somepassword';
GRANT SELECT, SHOW VIEW ON boatio.users TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

En het bewijs:de gebruiker heeft nu toegang tot de trips en users tabellen maar niet boats .

$ mysql -umyreaduser boatio -psomepassword

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
| users            |
+------------------+
2 rows in set (0.00 sec)

  1. Hoe UTC_TIMESTAMP() werkt in MariaDB

  2. Entity Framework 6 - Timing-query's

  3. De door de server ondersteunde sorteringen vinden in MySQL

  4. DevOps-overwegingen voor productieklare database-implementaties