GRANT INSERT, UPDATE ON sklep.klienci TO 'kasjer'@'localhost'; Podane polecenie SQL nadaje użytkownikowi kasjer prawo do
GRANT INSERT, UPDATE ON sklep.klienci TO 'kasjer'@'localhost';Podane polecenie SQL nadaje użytkownikowi kasjer prawo do
Poprawna jest odpowiedź o dodawaniu i modyfikowaniu rekordów w tabeli klienci bazy sklep. Prawo INSERT pozwala wstawiać nowe wiersze, a UPDATE zmieniać istniejące. Zapis sklep.klienci po słowie ON wskazuje jedną tabelę w konkretnej bazie: najpierw nazwa bazy, po kropce nazwa tabeli.
Do zapamiętania zakresy w MySQL: *.* - wszystkie bazy, sklep.* - wszystkie tabele bazy sklep, sklep.klienci - jedna tabela. Użytkownik zapisany jako 'kasjer'@'localhost' może łączyć się tylko z tego samego komputera. Nadane prawa sprawdza się poleceniem SHOW GRANTS FOR 'kasjer'@'localhost';, a odbiera poleceniem REVOKE. Prawa obowiązują od razu po wykonaniu polecenia.
Każda błędna odpowiedź myli albo rodzaj prawa, albo jego zakres. Odczyt i usuwanie danych to prawa SELECT i DELETE, których polecenie nie wymienia - ponadto dotyczy ono jednej tabeli, a nie wszystkich tabel bazy. Tworzenie i usuwanie tabel to prawa do struktury bazy (CREATE i DROP), a INSERT i UPDATE dotyczą wyłącznie danych.
Odpowiedź o wszystkich tabelach bazy klienci odwraca znaczenie zapisu z kropką: w sklep.klienci nazwą bazy jest sklep, a klienci to tabela. Gdyby prawo miało objąć wszystkie tabele bazy, zapis wyglądałby tak: ON klienci.*. Przy analizie polecenia GRANT warto czytać je w trzech krokach: jakie prawa (lista po GRANT), do czego (po ON) i komu (po TO). Taka analiza wystarcza, żeby odrzucić każdą odpowiedź, w której nie zgadza się prawo albo zakres.