W poleceniu GRANT ... ON szkola.przedmioty TO uczen; porównujemy, które uprawnienia dają użytkownikowi najmniejsze możliwości w dwóch obszarach: modyfikacji danych oraz zmiany struktury tabeli.
Uprawnienie SELECT jest uprawnieniem odczytu. Umożliwia wykonywanie zapytań zwracających dane z tabeli, ale nie pozwala:
- dodawać nowych wierszy,
- zmieniać istniejących wierszy,
- usuwać wierszy,
- zmieniać definicji tabeli (kolumn, typów, indeksów) ani usuwać tabel.
Dlatego polecenie GRANT SELECT ON szkola.przedmioty TO uczen; spełnia kryterium "najniższego poziomu uprawnień" w kontekście modyfikacji danych i struktury.
Pozostałe odpowiedzi są błędne, bo zawierają uprawnienia o wyższym ryzyku:
- DROP to uprawnienie DDL pozwalające usuwać obiekty (np. tabelę). Daje możliwość zniszczenia struktury, więc jest skrajnie "mocne".
- INSERT umożliwia modyfikację danych (dopisywanie rekordów). Już samo to łamie warunek minimalizacji względem zmian danych, a dodatkowe DROP jeszcze zwiększa poziom uprawnień.
- ALTER dotyczy zmiany struktury tabeli (np. dodanie kolumny). Nawet jeśli równocześnie jest SELECT, to ALTER powoduje, że poziom uprawnień jest wyższy niż "tylko odczyt".
W praktyce administracji bazą (również w aplikacjach webowych) zaleca się nadawać kontom tylko te uprawnienia, które są niezbędne do działania funkcji systemu. Dla kont "uczeń" albo kont raportowych często wystarcza sam SELECT, bez DDL i bez uprawnień modyfikujących dane.