GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost'; Użytkownik Jan będzie mógł wykonywać
GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost';Użytkownik Jan będzie mógł wykonywać
A. jedynie operacje CREATE, ALTER, DROP na tabelach bazy dane.
B. wszystkie operacje na tabelach bazy dane.
C. wszystkie operacje na tabelach bazy dane oraz nadawać prawa innym użytkownikom.
D. jedynie operacje manipulowania danymi i zmienić jedynie swoje prawa.
Pytanie z egzaminu CKE, styczeń 2023 (arkusz EE.09-SG-23.01).
Polecenie GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost'; nadaje użytkownikowi Jan zestaw wszystkich dostępnych uprawnień w obrębie bazy danych dane, czyli dla obiektów pasujących do dane.*. W praktyce oznacza to możliwość wykonywania operacji takich jak SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX czy inne typowe prawa zależne od wersji MySQL/MariaDB i poziomu nadania. Dlatego poprawne jest stwierdzenie, że Jan będzie mógł wykonywać wszystkie operacje na tabelach bazy dane. Ważny szczegół: zapis 'Jan'@'localhost' dotyczy tylko logowania z tego samego serwera, a nie z dowolnego komputera w sieci. Moim zdaniem to jest jeden z tych detali, które w administracji bazami naprawdę robią różnicę. Trzeba też pamiętać, że samo ALL PRIVILEGES nie oznacza automatycznie prawa do przekazywania uprawnień dalej. Do tego potrzebne byłoby dopisanie WITH GRANT OPTION. W dobrej praktyce produkcyjnej raczej unika się dawania ALL PRIVILEGES zwykłym kontom aplikacji. Lepiej stosować zasadę najmniejszych uprawnień, np. aplikacja sklepu często potrzebuje SELECT, INSERT i UPDATE, ale niekoniecznie DROP albo ALTER.
W tym poleceniu łatwo pomylić kilka podobnych pojęć, bo słowo ALL brzmi bardzo szeroko, ale ma ono konkretny zakres. GRANT ALL PRIVILEGES oznacza nadanie pełnego zestawu uprawnień do wskazanego obszaru, czyli tutaj do bazy dane i jej obiektów zapisanych jako dane.*. Nie jest to ograniczone wyłącznie do operacji strukturalnych typu CREATE, ALTER i DROP. Te polecenia należą do grupy DDL i faktycznie są częścią większego zestawu praw, ale nie wyczerpują znaczenia ALL PRIVILEGES. Jan może także wykonywać operacje manipulowania danymi, na przykład SELECT, INSERT, UPDATE i DELETE, jeśli mieszczą się w tym zakresie uprawnień. Z drugiej strony nie należy zakładać, że Jan będzie mógł nadawać prawa innym użytkownikom. W MySQL i MariaDB do przekazywania uprawnień dalej służy dodatkowa klauzula WITH GRANT OPTION. Jej tutaj nie ma, więc administrator daje Janowi szerokie prawa do pracy na bazie, ale nie daje mu automatycznie roli administratora uprawnień. Błędne jest też myślenie, że użytkownik może samodzielnie zmieniać swoje prawa. Uprawnienia są kontrolowane przez system przywilejów serwera bazy danych i zmienia je konto, które ma odpowiednie prawa administracyjne. Z mojego doświadczenia najczęstsza pomyłka polega na wrzuceniu do jednego worka pełnych praw do tabel i pełnej kontroli nad użytkownikami. To są powiązane, ale jednak różne sprawy.