Użytkownicy i Uprawnienia (GRANT)
Pewniak na egzaminie INF.03! Dowiedz się, jak założyć konto użytkownika i bezpiecznie nadać mu prawa do bazy.
Zarządzanie Użytkownikami w MySQL (DCL)
Jeśli przygotowujesz się do egzaminu zawodowego INF.03 (lub EE.09), ten temat to absolutny pewniak. W większości zadań graficznych, ostatni punkt brzmi mniej więcej tak: "Załóż w bazie użytkownika 'kasia' z hasłem 'qwerty' i nadaj jej prawa do przeglądania i modyfikowania tabeli pracownicy".
Służy do tego podzbiór języka nazywany DCL (Data Control Language).
1. Tworzenie użytkownika
Aby stworzyć konto, używamy CREATE USER. Podajemy nazwę użytkownika, skąd może się logować (localhost oznacza, że tylko z tego samego komputera, co na egzaminie jest normą) oraz ustalamy hasło.
CREATE USER 'kasia'@'localhost' IDENTIFIED BY 'qwerty';2. Nadawanie Uprawnień (GRANT)
Samo stworzenie konta nic nie daje - Kasia nie może nawet wejść do naszej bazy. Musimy dać jej klucze, czyli uprawnienia (GRANT).
Najczęstsze uprawnienia to: SELECT, INSERT, UPDATE, DELETE. Jeśli polecenie z egzaminu mówi "nadaj wszystkie uprawnienia", używamy ALL PRIVILEGES.
-- Nadawanie Kasi praw tylko do czytania i dopisywania w tabeli 'pracownicy'
-- w bazie 'firma'
GRANT SELECT, INSERT ON firma.pracownicy TO 'kasia'@'localhost';
-- Nadawanie Kasi WSZYSTKICH praw do WSZYSTKICH tabel w bazie 'firma'
GRANT ALL PRIVILEGES ON firma.* TO 'kasia'@'localhost';[!WARNING] Na czym polega gwiazdka
firma.*? Schemat nadawania praw wygląda tak:ON nazwabazy.nazwatabeli. Jeśli użyjesz*zamiast nazwy tabeli, użytkownik dostanie uprawnienia do wszystkich obecnych i przyszłych tabel wewnątrz bazyfirma.
3. Zabieranie Uprawnień (REVOKE)
Czasami (rzadko, ale jednak) system każe nam odebrać wcześniej nadane prawo (np. możliwość usuwania). Zamiast GRANT ... TO, piszemy REVOKE ... FROM.
REVOKE DELETE ON firma.pracownicy FROM 'kasia'@'localhost';4. Przeładowanie Uprawnień
Na egzaminie nie zawsze jest to wymagane, ale w świecie rzeczywistym, gdy zmieniasz mocno uprawnienia, powinieneś kazać serwerowi MySQL je odświeżyć z pamięci podręcznej. Służy do tego ładna, krótka komenda:
FLUSH PRIVILEGES;