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

Słowa kluczowe: ALTER TABLE w SQL CREATE TABLE w SQL DDL w SQL GRANT w MySQL Polecenie DROP w SQL Przywileje obiektowe w SQL Przywileje systemowe w SQL REVOKE w MySQL

W języku MySQL należy zastosować polecenie REVOKE, aby użytkownikowi anna odebrać prawo do dokonywania zmian jedynie w definicji struktury bazy danych. Polecenie odpowiadające odebraniu tych praw ma postać

A.
REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
B.
REVOKE CREATE, ALTER, DROP ON tabela1 FROM 'anna'@'localhost'
C.
REVOKE CREATE, UPDATE, DROP ON tabela1 FROM 'anna'@'localhost'
D.
REVOKE CREATE, INSERT, DELETE ON tabela1 FROM 'anna'@'localhost'

Opracowane na podstawie zadania CKE, styczeń 2017 (arkusz E.14-X-17.01): W arkuszu uprawnienia wypisano bez przecinków (REVOKE CREATE ALTER DROP). Składnia REVOKE w MySQL wymaga rozdzielenia uprawnień przecinkami.

W tym zadaniu kluczowe jest rozróżnienie uprawnień dotyczących struktury bazy danych od uprawnień dotyczących samych danych. Polecenie REVOKE CREATE, ALTER, DROP ON tabela1 FROM 'anna'@'localhost' odbiera użytkownikowi anna prawa typu DDL, czyli związane z definiowaniem i zmianą obiektów bazy danych. CREATE pozwala tworzyć nowe obiekty, ALTER zmieniać ich strukturę, na przykład dodać kolumnę do tabeli, a DROP usuwać obiekty, np. całą tabelę. To są właśnie operacje ingerujące w definicję struktury. Co ważne, takie polecenie nie odbiera automatycznie praw do pracy na rekordach, czyli np. SELECT, INSERT, UPDATE czy DELETE, jeżeli użytkownik nadal je posiada. Moim zdaniem to bardzo praktyczny przykład zasady najmniejszych uprawnień: użytkownik powinien mieć tylko te prawa, które są mu realnie potrzebne. W administracji MySQL często oddziela się osoby projektujące schemat bazy od osób tylko wprowadzających dane. Dzięki temu przypadkowe ALTER albo DROP nie rozwali nam tabeli produkcyjnej, a to w praktyce naprawdę ma znaczenie.
Jeżeli wybrana została inna komenda, problem najczęściej wynika z pomieszania dwóch grup uprawnień w MySQL: DDL i DML. Operacje DDL, takie jak CREATE, ALTER oraz DROP, dotyczą definicji obiektów bazy danych, czyli tabel, widoków, indeksów albo całych baz. To one zmieniają strukturę: tworzą tabelę, dodają kolumnę, zmieniają typ pola albo usuwają obiekt. Właśnie te prawa trzeba odebrać, gdy użytkownik nie ma już móc zmieniać schematu bazy. Polecenie REVOKE ALL jest zbyt szerokie, bo odbiera wszystkie przyznane uprawnienia w danym zakresie, nie tylko te związane ze strukturą. To może przypadkiem zablokować użytkownikowi także odczyt danych albo normalną pracę z rekordami, więc z punktu widzenia dobrej administracji jest to mało precyzyjne. Z kolei UPDATE, INSERT i DELETE nie dotyczą definicji tabeli, tylko danych zapisanych w tabeli. UPDATE zmienia wartości w istniejących rekordach, INSERT dodaje nowe rekordy, a DELETE je usuwa. To są operacje DML, czyli manipulacja danymi, nie strukturą. Częsty błąd myślowy polega na tym, że słowo UPDATE kojarzy się ogólnie ze zmianą, ale w SQL oznacza zmianę zawartości wierszy, a nie np. dodanie kolumny. W praktyce warto zawsze pytać: czy ta operacja zmienia projekt tabeli, czy tylko jej zawartość? Tutaj chodziło wyłącznie o projekt, więc potrzebne są CREATE, ALTER i DROP.

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.