Przedstawione polecenie SQL nadaje prawo SELECT
GRANT SELECT ON *.* TO 'sprzedawca'@'localhost';
A. do wszystkich tabel we wszystkich bazach na serwerze
B. tylko do tabeli o nazwie * w bieżącej bazie
C. dla użytkownika root na serwerze localhost
D. tylko do tabel w bazie o nazwie sprzedawca
Poprawna odpowiedź to: do wszystkich tabel we wszystkich bazach na serwerze. W składni GRANT SELECT ON *.* TO 'sprzedawca'@'localhost'; fragment SELECT oznacza nadanie prawa odczytu danych, czyli wykonywania zapytań SELECT. Zapis *.* składa się z dwóch części: pierwsza gwiazdka oznacza dowolną bazę danych, a druga dowolną tabelę w tej bazie. Oznacza to uprawnienie globalne do odczytu tabel na serwerze bazy danych dla konta 'sprzedawca'@'localhost'. Trzeba zapamiętać schemat: GRANT uprawnienie ON baza.tabela TO użytkownik@host. W praktyce tak szerokie uprawnienie stosuje się ostrożnie, ponieważ użytkownik może odczytywać dane ze wszystkich baz. Częstsze jest ograniczenie, np. ON sklep.* tylko do jednej bazy.
W tym poleceniu najłatwiej pomylić nazwę użytkownika z nazwą bazy danych albo znaczenie znaku *. Odpowiedź: do wszystkich tabel we wszystkich bazach na serwerze wynika bezpośrednio z zapisu *.* po słowie ON. Pierwsza gwiazdka oznacza każdą bazę danych, druga - każdą tabelę. Sformułowanie tylko do tabel w bazie o nazwie sprzedawca byłoby trafne przy zapisie ON sprzedawca.*, gdzie sprzedawca występowałby jako nazwa bazy, a nie jako nazwa konta. Odpowiedź dla użytkownika root na serwerze localhost nie pasuje, ponieważ adresatem uprawnienia jest 'sprzedawca'@'localhost', a nie root. Zapis użytkownik@host określa konto i miejsce logowania. Odpowiedź tylko do tabeli o nazwie * w bieżącej bazie błędnie traktuje gwiazdkę jako dosłowną nazwę tabeli. W składni uprawnień SQL gwiazdka pełni rolę symbolu wieloznacznego, a nie nazwy obiektu. Typowy błąd polega na czytaniu fragmentu po TO jako nazwy bazy albo na ignorowaniu formatu baza.tabela po ON.