KWALIFIKACJA INF3 - CZERWIEC 2024 (test 2)

PYTANIE NR 25.
GRANT CREATE, ALTER ON sklep.* TO adam; 
Zakładając, że użytkownik adam wcześniej nie miał żadnych praw, polecenie SQL nada użytkownikowi prawa jedynie do
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
GRANT CREATE, ALTER ON sklep.* nadaje przywileje DDL w obrębie wskazanej bazy. Zapis sklep.* oznacza wszystkie tabele/obiekty w bazie sklep. Przywileje CREATE i ALTER dotyczą tworzenia oraz zmiany struktury (np. kolumn), a nie wstawiania ani edycji danych.

Pełne wyjaśnienie:

Polecenie GRANT CREATE, ALTER ON sklep.* TO adam; służy do nadania użytkownikowi przywilejów związanych ze strukturą obiektów w bazie danych. Kluczowe są tu dwa elementy: lista uprawnień oraz zakres po słowie ON.

CREATE pozwala tworzyć obiekty (w typowych zadaniach: tabele) w danym zakresie. ALTER pozwala zmieniać definicję już istniejących obiektów, np. dodawać/usuwać kolumny, zmieniać typy pól czy modyfikować indeksy. Są to uprawnienia z obszaru DDL, czyli operacji na schemacie.

Zapis sklep.* oznacza, że uprawnienia dotyczą wszystkich obiektów w obrębie bazy o nazwie "sklep" (w praktyce najczęściej wszystkich tabel w tej bazie). To nie jest pojedyncza tabela, tylko wzorzec "wszystko w tej bazie".

Dlatego poprawna interpretacja to: użytkownik może tworzyć oraz zmieniać strukturę tabel/obiektów w bazie sklep. Odpowiedzi mówiące o "wstawianiu i zmianie danych" są niepoprawne, ponieważ do takich operacji służą inne przywileje, np. INSERT lub UPDATE. Również wariant ograniczający zakres do jednej tabeli jest błędny, bo pojedynczą tabelę wskazuje się jako sklep.nazwa_tabeli, a nie sklep.*.

Wskazówka egzaminacyjna: najpierw rozpoznaj, czy w GRANT pojawiają się uprawnienia DDL (CREATE/ALTER/DROP) czy DML (SELECT/INSERT/UPDATE/DELETE), a dopiero potem oceń, czy zakres dotyczy jednej tabeli (db.tabela) czy całej bazy (db.*).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Zapis sklep.* wskazuje zakres uprawnień na poziomie bazy danych "sklep". Gwiazdka oznacza "wszystkie obiekty" w tej bazie (w praktyce najczęściej wszystkie tabele). To nie jest nazwa jednej tabeli, tylko wzorzec obejmujący całą bazę.
Uprawnienie CREATE dotyczy operacji na schemacie (DDL). Pozwala tworzyć obiekty w bazie w danym zakresie, np. tworzyć tabele. Nie uprawnia do modyfikowania danych w wierszach tabel (do tego służą inne przywileje).
ALTER służy do zmiany definicji obiektu (np. dodanie kolumny, zmiana typu pola, modyfikacja indeksu). Zmiana danych w wierszach to operacje DML i wymagają uprawnień takich jak UPDATE lub INSERT, których tu nie nadano.
Aby ograniczyć zakres do jednej tabeli, w części po ON podaje się pełną nazwę baza.tabela, np. sklep.zamowienia. Zapis sklep.* oznacza cały zbiór obiektów w bazie, więc jest szerszy.
Nie. Do wstawiania rekordów potrzebne jest uprawnienie INSERT, a do edycji istniejących rekordów UPDATE. Przywileje CREATE i ALTER dotyczą schematu (struktury), a nie danych przechowywanych w tabelach.
DDL rozpoznasz po słowach kluczowych typu CREATE, ALTER, DROP (zmieniają strukturę). DML to m.in. SELECT, INSERT, UPDATE, DELETE (operują na danych). Najpierw przypisz przywilej do grupy, potem oceniaj zakres.
W typowych konfiguracjach nowoczesnych wersji MySQL/MariaDB zakłada się, że konto użytkownika jest wcześniej utworzone, a GRANT nadaje mu przywileje. W zadaniach egzaminacyjnych zwykle przyjmuje się, że użytkownik istnieje, a pytanie sprawdza interpretację zakresu i rodzaju uprawnień.
Nadanie przywilejów na poziomie sklep.* powoduje, że użytkownik może wykonywać wskazane operacje na wszystkich obiektach w obrębie tej bazy. To wygodne w środowisku testowym, ale w produkcji bywa zbyt szerokie i zwiększa ryzyko niepożądanych zmian w schemacie.
Najprościej zalogować się jako dany użytkownik i wykonać krótkie próby: utworzenie tabeli, modyfikację struktury oraz próbę INSERT/UPDATE. Jeśli INSERT/UPDATE się nie uda, a CREATE/ALTER działa, oznacza to, że uprawnienia DDL są nadane bez uprawnień do danych. Testuj na bazie ćwiczebnej.
Najczęściej myli się ALTER z "modyfikacją danych", bo słowo sugeruje zmianę wszystkiego. Drugim błędem jest odczytanie db.* jako jednej tabeli. Pomaga zasada: gwiazdka oznacza "wszystko w bazie", a dane modyfikują INSERT/UPDATE/DELETE, nie CREATE/ALTER.
info

To pytanie poprawnie rozwiązuje 43% zdających egzamin. trudne

Według specjalistów z branży: "GRANT CREATE, ALTER ON sklep.* nadaje przywileje DDL w obrębie wskazanej bazy."

Źródła:

  • MySQL 8.0 Reference Manual: "GRANT Statement" (Syntax and privileges scope), https://dev.mysql.com/doc/refman/8.0/en/grant.html - accessed 2026-03-01
  • MySQL 8.0 Reference Manual: "Privileges Provided by MySQL" (CREATE, ALTER descriptions), https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html - accessed 2026-03-01
  • MariaDB Documentation: "GRANT" (Privilege levels and db.* notation), https://mariadb.com/kb/en/grant/ - accessed 2026-03-01

Materiały:

  • Dokumentacja MySQL/MariaDB: składnia GRANT i lista przywilejów
  • Materiały do INF.3 z działu administracja baz danych i bezpieczeństwo
  • Ćwiczenia praktyczne: tworzenie użytkowników i nadawanie uprawnień w bazie testowej

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego