Je velmi běžné vidět prohlášení o udělení grantu, jako je následující, které umožňuje přístup ke všem tabulkám v dané databázi.
GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Kde mydatabase
, myreaduser
, myhoost
a somepassword
jsou vhodné proměnné pro vaši databázi. Všimněte si, že FLUSH PRIVILEGES
příkaz resetuje oprávnění MySQL a nebudete moci používat nová uživatelská oprávnění, dokud nebude spuštěn.
Takový uživatel bude moci číst a přistupovat ke všem tabulkám v databázi. Pro tento příklad použijeme databázi boatio, která má 3 tabulky:boats
, trips
a users
.
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats |
| trips |
| users |
+------------------+
3 rows in set (0.00 sec)
Pokud bychom chtěli vytvořit uživatele, který má přístup pouze k trips
tabulky, jednoduše nahradíme zástupný znak (*), který představuje všechny tabulky, konkrétními tabulkami, které chcete (v tomto případě:trips
).
GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Nyní se můžeme přihlásit jako nový uživatel a spustit tabulky show, abychom viděli, že má přístup pouze k trips
stůl a ne další dva. Tento nový uživatel jednoduše neví, že ostatní tabulky vůbec existují.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
+------------------+
1 row in set (0.00 sec)
Chcete-li uživateli poskytnout přístup k více tabulkám, jednoduše znovu spusťte stejný GRANT
s názvy dodatečných tabulek. Například následující povolí přístup k trips
a users
tabulky, ale ne 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;
A důkaz:uživatel má nyní přístup k trips
a users
tabulky, ale ne boats
.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
| users |
+------------------+
2 rows in set (0.00 sec)