Bardzo często można zobaczyć takie oświadczenie, jak poniżej, które daje dostęp do wszystkich tabel w danej bazie danych.
GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Gdzie mydatabase
, myreaduser
, myhoost
i somepassword
są odpowiednimi zmiennymi dla Twojej bazy danych. Zwróć uwagę, że FLUSH PRIVILEGES
polecenie resetuje uprawnienia MySQLs i nie będziesz mógł korzystać z nowych uprawnień użytkownika, dopóki nie zostanie uruchomiony.
Taki użytkownik będzie mógł odczytać i uzyskać dostęp do wszystkich tabel w bazie danych. W tym przykładzie użyjemy bazy danych boatio, która zawiera 3 tabele:boats
, trips
i users
.
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats |
| trips |
| users |
+------------------+
3 rows in set (0.00 sec)
Jeśli chcielibyśmy utworzyć użytkownika, który ma dostęp tylko do trips
tabeli, po prostu zastępujemy symbol wieloznaczny (*), który reprezentuje wszystkie tabele, konkretnymi tabelami, które chcesz (w tym przypadku:trips
).
GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Teraz możemy zalogować się jako nowy użytkownik i uruchomić tabele show, aby zobaczyć, że ma on dostęp tylko do trips
stół, a nie dwa pozostałe. Ten nowy użytkownik po prostu nie wie, że inne tabele w ogóle istnieją.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
+------------------+
1 row in set (0.00 sec)
Aby dać użytkownikowi dostęp do większej liczby tabel, po prostu ponownie uruchom ten sam GRANT
oświadczenie z dodatkowymi nazwami tabel. Na przykład, poniższy kod zapewni dostęp do trips
i users
tabele, ale nie 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;
I dowód:użytkownik ma teraz dostęp do trips
i users
stoły, ale nie boats
.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
| users |
+------------------+
2 rows in set (0.00 sec)