Es ist sehr üblich, eine Grant-Anweisung wie die folgende zu sehen, die Zugriff auf alle Tabellen in einer bestimmten Datenbank gewährt.
GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Wobei mydatabase
, myreaduser
, myhoost
, und somepassword
sind die passenden Variablen für Ihre Datenbank. Beachten Sie, dass die FLUSH PRIVILEGES
Der Befehl setzt die MySQL-Privilegien zurück und Sie können die neuen Benutzerberechtigungen nicht verwenden, bis er ausgeführt wird.
Ein solcher Benutzer kann alle Tabellen in einer Datenbank lesen und darauf zugreifen. Für dieses Beispiel verwenden wir die boatio-Datenbank mit 3 Tabellen:boats
, trips
und users
.
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats |
| trips |
| users |
+------------------+
3 rows in set (0.00 sec)
Wenn wir einen Benutzer erstellen möchten, der nur Zugriff auf die trips
hat Tabelle ersetzen wir einfach den Platzhalter Splat (*), der alle Tische darstellt, durch die spezifischen Tische, die Sie möchten (in diesem Fall:trips
).
GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Jetzt können wir uns als neuer Benutzer anmelden und show tables ausführen, um zu sehen, dass er nur Zugriff auf die trips
hat Tisch und nicht die anderen beiden. Dieser neue Benutzer weiß einfach nicht, dass die anderen Tabellen überhaupt existieren.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
+------------------+
1 row in set (0.00 sec)
Um dem Benutzer Zugriff auf weitere Tabellen zu gewähren, führen Sie einfach denselben GRANT
erneut aus Anweisung mit den zusätzlichen Tabellennamen. Folgendes gewährt beispielsweise Zugriff auf die trips
und users
Tabellen, aber nicht die 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;
Und der Beweis:Der Benutzer hat nun Zugriff auf die trips
und users
Tische, aber keine boats
.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
| users |
+------------------+
2 rows in set (0.00 sec)