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

Za pomocą którego zapytania Administrator nada użytkownikowi redaktor prawo przeglądania oraz usuwania danych w bazie gazeta?

A.
REVOKE SELECT, DELETE ON gazeta.* FROM 'redaktor'@'localhost';
B.
REVOKE SELECT, DROP ON gazeta.* FROM 'redaktor'@'localhost';
C.
GRANT SELECT, DROP ON gazeta.* TO 'redaktor'@'localhost';
D.
GRANT SELECT, DELETE ON gazeta.* TO 'redaktor'@'localhost';
W tym przypadku właściwe jest zapytanie: GRANT SELECT, DELETE ON gazeta.* TO 'redaktor'@'localhost';. Polecenie GRANT w MySQL/MariaDB służy do nadawania uprawnień użytkownikowi, więc pasuje do treści pytania, gdzie administrator ma nadać prawo, a nie je odebrać. Uprawnienie SELECT pozwala użytkownikowi przeglądać dane, czyli wykonywać zapytania odczytujące rekordy z tabel. Uprawnienie DELETE pozwala usuwać rekordy z tabel, ale nie usuwa całych tabel ani struktury bazy. Fragment ON gazeta.* oznacza, że prawa dotyczą wszystkich tabel w bazie danych gazeta. Zapis 'redaktor'@'localhost' wskazuje konkretne konto użytkownika logujące się z hosta lokalnego, co w praktyce ma duże znaczenie, bo 'redaktor'@'localhost' i 'redaktor'@'%' to dla serwera SQL różne konta. Moim zdaniem to dobry przykład zasady najmniejszych uprawnień: użytkownik dostaje dokładnie SELECT i DELETE, bez niepotrzebnego prawa DROP, ALTER czy CREATE. W realnej pracy takie podejście zmniejsza ryzyko przypadkowego usunięcia tabeli albo zmiany struktury bazy. Dobrą praktyką jest też regularne sprawdzanie nadanych praw poleceniem SHOW GRANTS FOR 'redaktor'@'localhost';, bo przy większych projektach łatwo stracić kontrolę nad dostępami.
W tym zagadnieniu kluczowe jest rozróżnienie między nadawaniem uprawnień, odbieraniem uprawnień oraz typem operacji, jaką użytkownik ma wykonywać na danych. Jeżeli administrator chce przyznać użytkownikowi nowe prawa, powinien użyć polecenia GRANT. Polecenie REVOKE działa odwrotnie: odbiera wcześniej nadane uprawnienia. To częsty błąd myślowy, bo oba polecenia występują w podobnym kontekście administracyjnym i mają podobną składnię, ale ich sens jest całkiem przeciwny. Użycie REVOKE SELECT, DELETE ON gazeta.* FROM 'redaktor'@'localhost'; spowodowałoby usunięcie możliwości odczytu i kasowania rekordów, a nie ich przyznanie. Druga ważna sprawa to różnica między DELETE i DROP. DELETE służy do usuwania danych, czyli rekordów z tabel. DROP jest dużo mocniejsze i bardziej niebezpieczne, bo pozwala usuwać całe obiekty bazy, na przykład tabele. Jeśli pytanie mówi o prawie usuwania danych, chodzi o DELETE, a nie DROP. W praktyce nadanie DROP redaktorowi byłoby raczej złą decyzją administracyjną, chyba że użytkownik faktycznie zarządza strukturą bazy. Z mojego doświadczenia takie pomyłki biorą się z traktowania słowa usuwać zbyt ogólnie. W SQL trzeba bardzo precyzyjnie odróżniać usuwanie wierszy od usuwania tabeli. Poprawne rozwiązanie powinno więc jednocześnie używać GRANT, zawierać SELECT do przeglądania, DELETE do kasowania rekordów oraz wskazywać bazę gazeta.* jako zakres nadawanych uprawnień.

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.