KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 27.
W języku SQL wykonano przedstawione w ramce polecenia GRANT. Kto będzie miał prawo do przeglądania danych oraz ich zmiany?

GRANT ALL ON frmy TO 'adam'@'localhost';
GRANT ALTER, CREATE, DROP ON frmy TO 'anna'@'localhost';
GRANT SELECT, INSERT, UPDATE ON frmy TO 'tomasz'@'localhost';

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Prawo do przeglądania danych wynika z uprawnienia SELECT, a prawo do ich zmiany (modyfikacji rekordów) z INSERT i/lub UPDATE. Użytkownik "tomasz" ma SELECT, INSERT, UPDATE, więc może przeglądać i zmieniać dane. Użytkownik "adam" ma ALL, więc również obejmuje te operacje. "anna" ma uprawnienia DDL (ALTER/CREATE/DROP), nie DML.

Pełne wyjaśnienie:

W poleceniach GRANT przyznaje się konkretne uprawnienia do obiektu bazy danych. Aby odpowiedzieć na pytanie, trzeba rozdzielić dwa typy działań:

  • Przeglądanie danych (odczyt wierszy) – typowo wymaga uprawnienia SELECT.
  • Zmiana danych (modyfikacja zawartości tabeli) – typowo wymaga uprawnień INSERT (dodawanie), UPDATE (modyfikacja) oraz ewentualnie DELETE (usuwanie). W treści pytania mowa o "zmianie", co w tym zestawie odpowiedzi jest reprezentowane przez INSERT/UPDATE.

Użytkownik "tomasz" otrzymał SELECT, INSERT, UPDATE, więc spełnia oba warunki: potrafi odczytać dane (SELECT) oraz je modyfikować (INSERT/UPDATE). Użytkownik "adam" otrzymał ALL, czyli pakiet wszystkich uprawnień przewidzianych dla wskazanego obiektu; w konsekwencji obejmuje to co najmniej SELECT oraz modyfikacje danych, więc także ma prawo do przeglądania i zmiany.

Użytkownik "anna" ma ALTER, CREATE, DROP. Są to uprawnienia związane głównie ze strukturą obiektów (DDL): zmiana definicji, tworzenie i usuwanie. Nie wynika z nich automatycznie prawo do odczytu wierszy ani do aktualizacji rekordów, więc nie spełnia warunku "przeglądanie danych oraz ich zmiana".

Dlatego poprawna jest odpowiedź "Tomasz i Adam." Pozostałe propozycje odpadają, bo pomijają użytkownika z ALL albo błędnie uznają, że uprawnienia DDL (ALTER/CREATE/DROP) są równoważne z uprawnieniami do operacji na danych (SELECT/INSERT/UPDATE).

Wskazówka egzaminacyjna: w pytaniach o uprawnienia najpierw zaznacz, które opcje dają odczyt (SELECT), a dopiero potem, które dają modyfikację danych (INSERT/UPDATE/DELETE). Uprawnienia typu ALTER/CREATE/DROP traktuj jako osobną kategorię – "zmiana schematu", nie "zmiana rekordów".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Uprawnienie SELECT pozwala odczytywać dane z tabeli, czyli wykonywać zapytania zwracające wiersze (np. SELECT ... FROM ...). Nie daje samo w sobie prawa do dopisywania ani modyfikowania rekordów.
INSERT umożliwia dodawanie nowych rekordów do tabeli, a UPDATE pozwala zmieniać wartości w istniejących rekordach. To typowe uprawnienia do modyfikacji danych (DML), niezależne od zmian struktury tabeli.
ALTER, CREATE i DROP dotyczą głównie definicji obiektów (DDL): tworzenia, usuwania i modyfikacji struktury. Pozwalają zmienić schemat, ale nie muszą dawać prawa do odczytu rekordów ani ich aktualizacji.
Zwykle ALL (lub ALL PRIVILEGES) oznacza komplet uprawnień dla wskazanego obiektu i obejmuje m.in. SELECT oraz uprawnienia modyfikacji danych. Trzeba jednak patrzeć na zakres (na jaki obiekt i z jakimi ograniczeniami przyznano uprawnienia).
Wyszukaj w poleceniach GRANT uprawnienie SELECT (albo pakiet typu ALL, który je zawiera). Osoba bez SELECT nie ma typowego prawa do przeglądania rekordów, nawet jeśli ma uprawnienia do struktury (np. ALTER).
Sprawdź, czy użytkownik ma INSERT (dodawanie) i/lub UPDATE (modyfikacja), ewentualnie DELETE (usuwanie). Same uprawnienia DDL (CREATE/DROP/ALTER) nie są równoznaczne z edycją danych wierszy.
Nie. CREATE pozwala tworzyć obiekty (np. nowe tabele), ale nie zastępuje uprawnienia INSERT do dopisywania rekordów w istniejącej tabeli. To częsty błąd: mylenie "tworzenia tabeli" z "dodawaniem danych do tabeli".
Najczęściej myli się uprawnienia DDL z DML, pomija jeden z grantów podczas czytania oraz zakłada, że "ALL" dotyczy wszystkich użytkowników. Pomaga metoda: wypisz użytkowników i przy każdym zaznacz osobno "odczyt" (SELECT) i "modyfikacja" (INSERT/UPDATE/DELETE).
Zapis 'user'@'host' jest charakterystyczny dla MySQL/MariaDB i oznacza konto ograniczone do danego hosta (np. tylko lokalnie). Na egzaminie warto rozpoznać dialekt, bo w innych systemach (np. PostgreSQL) zarządzanie rolami i składnia mogą wyglądać inaczej.
Najlepiej uruchomić lokalną bazę (np. MySQL/MariaDB), utworzyć tabelę testową i kilku użytkowników, a potem nadać im różne uprawnienia. Sprawdź praktycznie: czy działa SELECT, czy da się wykonać INSERT/UPDATE oraz czy da się zmienić strukturę (ALTER).
info

Statystycznie 52% uczniów zna prawidłową odpowiedź. trudne

Według specjalistów z branży: "Prawo do przeglądania danych wynika z uprawnienia SELECT, a prawo do ich zmiany (modyfikacji rekordów) z INSERT i/lub UPDATE."

Źródła:

  • MySQL 8.0 Reference Manual: GRANT Statement (syntax and meaning), https://dev.mysql.com/doc/refman/8.0/en/grant.html - accessed 2026-02-28
  • MySQL 8.0 Reference Manual: Privileges Provided by MySQL (SELECT, INSERT, UPDATE, CREATE, DROP, ALTER), https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html - accessed 2026-02-28
  • MariaDB Knowledge Base: GRANT (overview and privilege types), https://mariadb.com/kb/en/grant/ - accessed 2026-02-28

Materiały:

  • Dokumentacja systemu bazy danych (sekcja GRANT i privileges) dla używanego silnika
  • Notatki/ściąga z podziału DML vs DDL oraz mapowania uprawnień
  • Ćwiczenia praktyczne: tworzenie użytkowników i testowanie SELECT/INSERT/UPDATE na przykładowych tabelach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego