Zadanie 2 — Pierwsze logowanie i konta użytkowników

Cel zadania

W tym zadaniu nauczysz się, jak po raz pierwszy zalogować się do serwera baz danych MariaDB/MySQL za pomocą wiersza poleceń. Dowiesz się, jak ważne jest ustawienie hasła dla głównego administratora (użytkownika root), który domyślnie go nie posiada w pakiecie XAMPP. Stworzysz także nowych użytkowników z ograniczonymi uprawnieniami, co jest podstawową zasadą bezpieczeństwa. Zrozumiesz koncepcję user@host, która definiuje, z jakich adresów sieciowych dany użytkownik może się łączyć z serwerem.

Scenariusz / opis zadania

Po pomyślnej instalacji serwera baz danych w poprzednim zadaniu, nadszedł czas, abyś zrobił pierwszy krok w kierunku administrowania nim. Twoim celem jest zabezpieczenie dostępu do serwera, ponieważ domyślna konfiguracja jest niezabezpieczona i otwarta na potencjalne ataki, nawet w sieci lokalnej. Rozpoczniesz od zalogowania się na konto superużytkownika, czyli root, używając monitora mysql. Następnie, jako administrator, nadasz temu kontu silne hasło, aby nikt niepowołany nie mógł uzyskać pełnej kontroli nad serwerem. Kolejnym krokiem będzie stworzenie dwóch nowych, dedykowanych kont użytkowników: student1 i student2. Każde z tych kont będzie miało inne ograniczenia dotyczące miejsca, z którego można się logować. Jedno konto będzie mogło łączyć się tylko z lokalnego komputera poprzez nazwę localhost, a drugie przez adres pętli zwrotnej 127.0.0.1. Wyjaśnimy subtelne różnice między tymi podejściami. Na koniec nadasz tym użytkownikom minimalne uprawnienia, wystarczające jedynie do logowania, aby w przyszłości móc je rozszerzać zgodnie z potrzebami, stosując zasadę minimalnych przywilejów. Cały proces zakończysz poleceniem odświeżającym uprawnienia w systemie, aby wszystkie zmiany zostały natychmiast zastosowane.

Pomocnik wykonania

  1. Otwórz wiersz poleceń: Uruchom cmd.exe w systemie Windows.
  2. Przejdź do katalogu MySQL: Wpisz polecenie, aby przejść do folderu z plikami wykonywalnymi serwera: cd C:\xampp\mysql\bin.
  3. Zaloguj się jako root: Użyj polecenia mysql -u root. Ponieważ użytkownik root nie ma jeszcze hasła, zostaniesz zalogowany bezpośrednio do monitora MariaDB/MySQL.
  4. Ustawienie hasła dla roota: To najważniejszy krok. Wykonaj poniższe polecenie SQL, zastępując 'TwojeSilneHaslo123!' własnym, skomplikowanym hasłem.
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'TwojeSilneHaslo123!';
  5. Wyloguj się: Wpisz exit; aby opuścić monitor.
  6. Przetestuj logowanie z hasłem: Spróbuj zalogować się ponownie, tym razem używając flagi -p, która poprosi o hasło: mysql -u root -p. Po wciśnięciu Enter, zostaniesz poproszony o podanie hasła. Wpisz hasło ustawione w poprzednim kroku.
  7. Zrozumienie koncepcji user@host: Każdy użytkownik w MySQL jest identyfikowany przez nazwę oraz hosta, z którego może się łączyć. Na przykład 'student'@'localhost' oznacza, że użytkownik student może logować się tylko z tego samego komputera. 'student'@'%' oznacza, że może logować się z dowolnego komputera w sieci (co jest niebezpieczne).
  8. Różnice między hostami:
  9. Tworzenie pierwszego użytkownika: Stwórzmy użytkownika student1, który będzie mógł logować się tylko przez localhost. Wpisz w monitorze MySQL:
    CREATE USER 'student1'@'localhost' IDENTIFIED BY 'HasloStudenta1!';
  10. Tworzenie drugiego użytkownika: Teraz stwórz użytkownika student2, który będzie mógł logować się tylko przez adres IP 127.0.0.1.
    CREATE USER 'student2'@'127.0.0.1' IDENTIFIED BY 'HasloStudenta2!';
  11. Nadawanie minimalnych uprawnień: Nowo utworzeni użytkownicy nie mają żadnych praw, nawet do logowania i przeglądania baz. Nadajmy im podstawowe uprawnienie USAGE, które pozwala jedynie na połączenie z serwerem.
    GRANT USAGE ON *.* TO 'student1'@'localhost';
    GRANT USAGE ON *.* TO 'student2'@'127.0.0.1';
    Format *.* oznacza "wszystkie bazy danych, wszystkie tabele".
  12. Odświeżenie uprawnień: Po każdej zmianie w tabelach uprawnień (takiej jak CREATE USER czy GRANT), dobrą praktyką jest wykonanie polecenia, które przeładowuje te uprawnienia w pamięci serwera.
    FLUSH PRIVILEGES;
  13. Sprawdzenie listy użytkowników: Możesz wyświetlić listę wszystkich użytkowników i ich hostów, aby zweryfikować swoje zmiany.
    SELECT User, Host FROM mysql.user;
  14. Wyloguj się z konta root: Wpisz exit;.
  15. Test logowania jako student1: Spróbuj zalogować się jako student1: mysql -u student1 -p. Podaj hasło 'HasloStudenta1!'.
  16. Próba wyświetlenia baz: Po zalogowaniu jako student1, spróbuj wykonać polecenie SHOW DATABASES;. Powinieneś zobaczyć tylko bazę information_schema, co potwierdza, że użytkownik nie ma dostępu do innych zasobów.
  17. Wyloguj się i przetestuj studenta2: Wyloguj się i spróbuj zalogować jako student2: mysql -u student2 -p -h 127.0.0.1. Użycie flagi -h jest konieczne, aby wymusić połączenie przez TCP/IP.
  18. Podsumowanie: Nauczyłeś się zarządzać podstawowymi kontami użytkowników, co jest fundamentem bezpiecznej pracy z bazą danych.

Przykłady kodu i poleceń

Poniżej skonsolidowane polecenia SQL do zarządzania użytkownikami. Możesz je skopiować i wkleić do monitora MySQL.

-- Krok 1: Ustawienie hasla dla uzytkownika root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'TwojeSilneHaslo123!';

-- Krok 2: Tworzenie nowych uzytkownikow
CREATE USER 'student1'@'localhost' IDENTIFIED BY 'HasloStudenta1!';
CREATE USER 'student2'@'127.0.0.1' IDENTIFIED BY 'HasloStudenta2!';

-- Krok 3: Nadanie minimalnych uprawnien (tylko do logowania)
GRANT USAGE ON *.* TO 'student1'@'localhost';
GRANT USAGE ON *.* TO 'student2'@'127.0.0.1';

-- Krok 4: Przeladowanie uprawnien
FLUSH PRIVILEGES;

-- Krok 5: Weryfikacja - wyswietlenie uzytkownikow
SELECT User, Host FROM mysql.user;
    

Ilustracja konsoli

+---------------------------------------------------+
|                                                   |
|   C:\> cd C:\xampp\mysql\bin                       |
|   C:\xampp\mysql\bin> mysql -u root -p            |
|   Enter password: ****                            |
|                                                   |
|   Welcome to the MariaDB monitor.                 |
|   ...                                             |
|                                                   |
|   MariaDB [(none)]> CREATE USER 'stud'@'host';    |
|   Query OK, 0 rows affected (0.01 sec)            |
|                                                   |
|   MariaDB [(none)]> _                             |
|                                                   |
+---------------------------------------------------+
    

Informacje dodatkowe / uwagi