Det är mycket vanligt att se ett bidragsutlåtande som det följande som ger tillgång till alla tabeller i en given databas.
GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Där mydatabase
, myreaduser
, myhoost
och somepassword
är lämpliga variabler för din databas. Observera att FLUSH PRIVILEGES
kommandot återställer MySQLs privilegier och du kommer inte att kunna använda de nya användartillstånden förrän den körs.
En sådan användare kommer att kunna läsa och komma åt alla tabeller i en databas. För det här exemplet kommer vi att använda boatio-databasen som har 3 tabeller:boats
, trips
och users
.
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats |
| trips |
| users |
+------------------+
3 rows in set (0.00 sec)
Om vi vill skapa en användare som bara har tillgång till trips
tabell ersätter vi helt enkelt jokerteckensplat (*) som representerar alla tabeller, med de specifika tabellerna du vill ha (i det här fallet:trips
).
GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Nu kan vi logga in som ny användare och köra show-tabeller för att se att den bara har tillgång till trips
bord och inte de andra två. Den här nya användaren vet helt enkelt inte att de andra tabellerna ens finns.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
+------------------+
1 row in set (0.00 sec)
För att ge användaren tillgång till fler tabeller, kör bara samma GRANT
igen uttalande med de ytterligare tabellnamnen. Till exempel kommer följande att ge tillgång till trips
och users
tabeller men inte 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;
Och beviset:användaren har nu tillgång till trips
och users
tabeller men inte boats
.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
| users |
+------------------+
2 rows in set (0.00 sec)