sql >> Databáze >  >> RDS >> Mysql

Přečtěte si o oprávněních na úrovni tabulky MySQL

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)

  1. Budoucnost zásobníku aplikací

  2. Jak zdokumentovat databázi SQL Server

  3. Jak změnit heslo root mysql

  4. Zobrazit pokročilé možnosti konfigurace serveru v SQL Server (T-SQL)