Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych Administracja serwerem i bezpieczeństwo

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...

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. tworzenia i zmiany struktury wszystkich tabel w bazie sklep.
B. wstawiania i zmiany danych we wszystkich tabelach bazy sklep.
C. wstawiania i zmiany danych w tabeli sklep.
D. tworzenia i zmiany struktury w tabeli sklep.

Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.09-SG-23.06).

Polecenie GRANT CREATE, ALTER ON sklep.* TO adam; nadaje użytkownikowi adam uprawnienia typu DDL, czyli związane ze strukturą bazy danych. Fragment sklep.* jest tu kluczowy: oznacza wszystkie obiekty, najczęściej wszystkie tabele, znajdujące się w bazie danych sklep. Gwiazdka nie wskazuje jednej tabeli, tylko cały zakres w tej bazie. Dlatego użytkownik może tworzyć nowe tabele w bazie sklep oraz zmieniać strukturę istniejących tabel, np. dodać kolumnę przez ALTER TABLE, zmienić typ pola albo dodać indeks. Nie dostaje jednak prawa do odczytu, wstawiania ani aktualizacji rekordów, bo nie ma tu SELECT, INSERT ani UPDATE. Z mojego doświadczenia to częsty haczyk: ALTER nie oznacza zmiany danych w wierszach, tylko zmianę definicji tabeli. W praktyce takie uprawnienia daje się np. programiście odpowiedzialnemu za migracje schematu, ale zgodnie z zasadą najmniejszych uprawnień nie powinno się dorzucać praw do danych, jeśli nie są potrzebne.
W tym poleceniu łatwo pomylić kilka pojęć, bo składnia SQL wygląda krótko, a niesie sporo informacji. Nazwa sklep.* nie oznacza tabeli o nazwie sklep. W typowej składni MySQL lub MariaDB zapis baza.* wskazuje wszystkie tabele i obiekty w danej bazie danych. Gdyby chodziło o jedną konkretną tabelę, zapis miałby postać np. jakas_baza.sklep, czyli najpierw nazwa bazy, potem nazwa tabeli. Dlatego interpretowanie tego jako prawa tylko do jednej tabeli prowadzi do złego wniosku. Drugie częste nieporozumienie dotyczy słowa ALTER. Ono nie służy do modyfikowania rekordów, czyli danych zapisanych w wierszach tabeli. Do zmiany danych używa się UPDATE, a do dodawania nowych rekordów INSERT. CREATE i ALTER należą do operacji DDL, czyli Data Definition Language, odpowiedzialnych za definicję i strukturę obiektów bazy. Przykładowo CREATE TABLE tworzy tabelę, a ALTER TABLE może dodać kolumnę, zmienić typ danych albo założyć indeks. Nie daje to automatycznie prawa do INSERT INTO ani UPDATE. Jeśli administrator chciałby pozwolić użytkownikowi adam na wstawianie i zmianę danych we wszystkich tabelach bazy sklep, użyłby raczej GRANT INSERT, UPDATE ON sklep.* TO adam;. Warto też pamiętać o dobrej praktyce administracyjnej: uprawnienia powinny być możliwie wąskie i zgodne z rolą użytkownika, bo mieszanie praw do struktury z prawami do danych może potem narobić problemów, szczególnie na produkcji.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.