Co robi polecenie
GRANT UPDATE ON klienci TO pracownik;?
GRANT nadaje uprawnienia, a UPDATE to prawo do zmieniania wartości w istniejących wierszach. Po wykonaniu polecenia użytkownik pracownik może uruchamiać zapytania typu UPDATE klienci SET telefon = '600100200' WHERE id = 7;, ale nie dodaje nowych wierszy ani ich nie usuwa.
Każde polecenie SQL ma w MySQL osobne uprawnienie: SELECT do odczytu, INSERT do dodawania, UPDATE do zmiany, DELETE do usuwania wierszy. W praktyce UPDATE z warunkiem WHERE wymaga też prawa SELECT do kolumn użytych w warunku. Nadane prawa sprawdza się poleceniem SHOW GRANTS FOR pracownik;.
Zapis bez hosta oznacza w MySQL konto 'pracownik'@'%', czyli łączące się z dowolnego komputera.
Najczęstszy błąd w tym pytaniu to utożsamienie nazwy uprawnienia z inną operacją na danych. Usuwanie rekordów to osobne prawo DELETE. Kto ma tylko UPDATE, zmieni zawartość wiersza, ale go nie skasuje.
Odebranie prawa wykonuje polecenie REVOKE UPDATE ON klienci FROM pracownik;, w którym zamiast TO stoi FROM. GRANT zawsze dodaje uprawnienia.
Zmiana struktury tabeli, np. dodanie kolumny, to polecenie ALTER TABLE i wymaga uprawnienia ALTER. UPDATE dotyczy tylko danych zapisanych w wierszach, a nie kolumn i ich typów.
Jeśli konto ma mieć kilka praw naraz, wymienia się je po przecinku w jednym poleceniu, np. GRANT SELECT, UPDATE ON klienci TO pracownik;. Pełny zestaw daje GRANT ALL PRIVILEGES, ale zasada najmniejszych uprawnień każe nadawać tylko to, co potrzebne. Dlatego w tym poleceniu pracownik może wyłącznie modyfikować istniejące dane w tabeli klienci.