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

Lær om MySQL Table Level Permissions

Det er meget almindeligt at se en bevillingserklæring som den følgende, der giver adgang til alle tabellerne i en given database.

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

Hvor mydatabase , myreaduser , myhoost , og somepassword er de passende variabler til din database. Bemærk, at FLUSH PRIVILEGES kommandoen nulstiller MySQLs privilegier, og du vil ikke være i stand til at bruge de nye brugerbevillinger, før den er kørt.

En sådan bruger vil være i stand til at læse og få adgang til alle tabellerne i en database. Til dette eksempel skal vi bruge boatio-databasen, som har 3 tabeller:boats , trips og users .

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

Hvis vi gerne vil oprette en bruger, der kun har adgang til trips tabel, erstatter vi simpelthen jokertegnet splat (*), som repræsenterer alle tabeller, med de specifikke tabeller, du ønsker (i dette tilfælde:trips ).

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

Nu kan vi logge ind som den nye bruger og køre show-tabeller for at se, at den kun har adgang til trips bord og ikke de to andre. Denne nye bruger ved simpelthen ikke, at de andre tabeller eksisterer.

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

For at give brugeren adgang til flere tabeller skal du blot køre den samme GRANT igen sætning med de ekstra tabelnavne. For eksempel vil følgende give adgang til trips og users tabeller, men ikke 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;

Og beviset:brugeren har nu adgang til trips og users tabeller, men ikke boats .

$ mysql -umyreaduser boatio -psomepassword

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

  1. Migrering fra Maxscale til ProxySQL Load Balancer

  2. Hvordan CONCAT() virker i MariaDB

  3. Syntetisk datagenerering

  4. MariaDB JSON_SET() Forklaret