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

Wskaż zapytanie SQL, które usuwa konto użytkownika sekretarka zdefiniowane dla hosta localhost.

A.
DROP USER 'sekretarka'@'localhost';
B.
REMOVE USER 'sekretarka'@'localhost';
C.
DELETE USER 'sekretarka'@'localhost';
D.
DROP 'sekretarka'@'localhost';
Polecenie DROP USER 'sekretarka'@'localhost'; jest właściwe, bo w MySQL i MariaDB do usuwania kont użytkowników służy instrukcja DROP USER. Konto użytkownika w tych systemach nie jest opisane tylko samą nazwą, ale parą: nazwa użytkownika oraz host, z którego może się logować. Dlatego 'sekretarka'@'localhost' oznacza konto użytkownika sekretarka dostępne wyłącznie lokalnie, czyli z tej samej maszyny, na której działa serwer bazy danych. To ważny szczegół, bo 'sekretarka'@'%' albo 'sekretarka'@'192.168.1.%' byłyby innymi kontami. Moim zdaniem to jedna z tych rzeczy, które warto zapamiętać praktycznie, nie tylko „pod test”. W administracji bazą danych usunięcie konta wykonuje się właśnie tak, zwykle po wcześniejszym sprawdzeniu uprawnień poleceniem SHOW GRANTS FOR 'sekretarka'@'localhost';. Dobrą praktyką jest też upewnić się, że konto nie jest używane przez aplikację, skrypt kopii zapasowej albo panel administracyjny. DROP USER usuwa konto i jego uprawnienia z systemu uprawnień, więc jest to operacja administracyjna, a nie zwykła operacja na rekordach tabeli. W środowisku produkcyjnym takie zmiany powinny być wykonywane świadomie, najlepiej z odpowiednimi uprawnieniami administratora i po udokumentowaniu zmiany.
W tym pytaniu łatwo pomylić operacje administracyjne z operacjami na danych, bo słowa DELETE, REMOVE i DROP brzmią dość podobnie. W SQL jednak każde z nich ma inne znaczenie albo w ogóle nie jest poprawną składnią w danym kontekście. Konto użytkownika w MySQL usuwa się instrukcją DROP USER, ponieważ użytkownik bazy danych jest obiektem systemowym zarządzanym przez mechanizm uprawnień, a nie zwykłym rekordem, który kasuje się jak dane z tabeli. DELETE służy przede wszystkim do usuwania wierszy z tabel, na przykład DELETE FROM pracownicy WHERE id = 5;. Nie używa się go w formie DELETE USER 'sekretarka'@'localhost';, bo taka składnia nie odpowiada poleceniu administracyjnemu SQL dla kont. Dawniej ktoś mógł kojarzyć ręczne modyfikowanie tabel systemowych, ale obecnie to zła praktyka i można sobie łatwo zrobić bałagan w uprawnieniach. REMOVE USER także nie jest standardowym poleceniem MySQL do usuwania użytkownika. To raczej intuicyjne tłumaczenie z języka angielskiego, ale baza danych nie zgaduje intencji administratora, tylko wymaga konkretnej składni. Samo DROP 'sekretarka'@'localhost'; również nie wystarczy, ponieważ DROP musi wiedzieć, jaki typ obiektu ma zostać usunięty: tabela, baza, widok, procedura albo właśnie użytkownik. Brak słowa USER powoduje, że polecenie jest niepełne i niejednoznaczne. Trzeba też pamiętać o części @'localhost'. W MySQL użytkownik 'sekretarka'@'localhost' to niekoniecznie to samo konto co 'sekretarka'@'%'. Z mojego doświadczenia ten detal często powoduje problemy przy logowaniu i nadawaniu uprawnień, więc warto traktować nazwę użytkownika i host jako komplet.

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.