Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dowiedz się więcej o uprawnieniach na poziomie tabeli MySQL

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj relacyjnych baz danych MySQL na Ubuntu 10.04 LTS (Lucid)

  2. Neo4j - Usuń węzeł za pomocą Cypher

  3. BŁĄD 1067 (42000):Nieprawidłowa wartość domyślna dla „created_at”

  4. Użyj relacyjnych baz danych MySQL w Fedorze 12

  5. Lokalizacja MySQL my.ini