KWALIFIKACJA INF3 - CZERWIEC 2023

PYTANIE NR 26.
Które z poleceń nadaje najniższy poziom uprawnień użytkownikowi uczen pod względem modyfikacji danych i struktury tabel?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Uprawnienie
SELECT
pozwala jedynie odczytywać dane z tabeli, bez ich zmiany i bez ingerencji w strukturę. Polecenia zawierające
INSERT
modyfikują dane, a
ALTER
i
DROP
dotyczą definicji tabel (DDL), więc dają wyższe uprawnienia niż sam odczyt.

Pełne wyjaśnienie:

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.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Uprawnienie SELECT pozwala wykonywać zapytania odczytujące dane z tabeli lub widoku. Nie daje prawa do dopisywania, edycji ani usuwania rekordów oraz nie pozwala zmieniać definicji tabel (np. kolumn). To typowe minimalne uprawnienie dla kont "tylko do odczytu".
DROP umożliwia usuwanie obiektów bazy (np. tabel). To operacja DDL, która niszczy strukturę i zwykle powoduje utratę danych. Dlatego w aplikacjach webowych i na kontach użytkowników końcowych prawie nigdy nie nadaje się DROP, bo ryzyko szkody jest największe.
DML to operacje na danych, np. INSERT, UPDATE, DELETE. Jeśli użytkownik ma uprawnienia DML, może zmieniać zawartość tabel. W pytaniach o "modyfikację danych" właśnie te uprawnienia są kluczowe, bo wpływają na rekordy, a nie na strukturę.
DDL to operacje na strukturze obiektów bazy, np. tworzenie i modyfikacja tabel. Uprawnienia takie jak ALTER (zmiana definicji) i DROP (usuwanie obiektu) są związane z DDL. Dają możliwość ingerencji w schemat, więc nie są "najniższym" poziomem uprawnień.
Dla konta tylko do odczytu najczęściej wystarcza SELECT na wskazanych tabelach lub widokach. Warto ograniczać zakres (konkretna baza/tabela) i unikać DDL (ALTER/DROP) oraz DML (INSERT/UPDATE/DELETE). To realizuje zasadę najmniejszych uprawnień.
Tak. INSERT pozwala dodawać nowe rekordy, czyli zmienia zawartość tabeli (dane). Nawet jeśli nie zmienia istniejących wierszy, to nadal jest to modyfikacja danych, więc nie spełnia warunku "najniższych uprawnień" w pytaniach, gdzie minimalizujemy możliwość zmian.
Sygnałem są sformułowania typu "struktura tabeli", "definicja tabeli", "zmiana kolumn" oraz uprawnienia/komendy DDL. W odpowiedziach szukaj wtedy słów ALTER i DROP, bo odnoszą się do schematu, a nie tylko do danych w wierszach.
W MySQL/MariaDB komenda GRANT nadaje użytkownikowi wskazane uprawnienia do obiektu, np. schema.tabela. Przykład:
GRANT SELECT ON baza.tabela TO uzytkownik;
pozwala odczytywać dane z tej tabeli. Zakres i typ uprawnień decydują o bezpieczeństwie konta.
Częste pomyłki to: nieuwzględnienie słowa "najniższy", mylenie odczytu z modyfikacją, oraz niedocenianie DDL (ALTER/DROP). Pomaga szybka klasyfikacja: SELECT=odczyt, INSERT/UPDATE/DELETE=dane, ALTER/DROP=struktura.
Zawsze, gdy tworzysz konta dla aplikacji webowych, stażystów/uczniów lub integracji. Nadawaj tylko to, co jest konieczne do działania funkcji. Ogranicza to skutki błędów w kodzie (np. SQL injection) i przypadkowych operacji administracyjnych, szczególnie tych związanych z DDL.
info

To pytanie poprawnie rozwiązuje 59% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że uprawnienie SELECT pozwala jedynie odczytywać dane z tabeli, bez ich zmiany i bez ingerencji w strukturę.

Źródła:

  • MySQL 8.0 Reference Manual – GRANT Statement (syntax and privileges): https://dev.mysql.com/doc/refman/8.0/en/grant.html - accessed 2026-02-28
  • PostgreSQL Documentation – GRANT (privileges including SELECT/INSERT/ALTER/DROP): https://www.postgresql.org/docs/current/sql-grant.html - accessed 2026-02-28
  • MariaDB Knowledge Base – GRANT (privilege concepts and usage): https://mariadb.com/kb/en/grant/ - accessed 2026-02-28

Materiały:

  • Dokumentacja silnika bazy danych używanego na zajęciach (sekcja o GRANT/REVOKE)
  • Materiały o różnicach DML vs DDL w SQL
  • Ćwiczenia: tworzenie użytkowników i nadawanie minimalnych uprawnień do tabel

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego