sql >> Databasteknik >  >> RDS >> Mysql

Lär dig mer om MySQL-tabellnivåbehörigheter

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)

  1. Hur man installerar InfluxDB på Ubuntu 20.10

  2. Postgres heltalsmatriser som parametrar?

  3. ORACLE SQL:Fyll i saknade datum

  4. Apache Spark ODBC-drivrutinen