Ćwiczenia SQL – Użytkownicy, uprawnienia i bezpieczeństwo bazy danych (INF.03)
1. Tworzenie użytkowników bazy danych
Cel: Uczeń potrafi tworzyć konta użytkowników w systemie baz danych. Opis: Każdy użytkownik może mieć indywidualny login i hasło. Tworząc użytkowników, administrator określa ich dostęp do serwera i baz danych.
Dlaczego to ważne?
W zadaniach INF.03 często występuje scenariusz: „utwórz użytkownika i przydziel mu określone prawa do bazy”.
Dobrze jest rozróżniać użytkownika systemu bazodanowego od użytkownika aplikacji webowej.
-- Tworzenie nowego użytkownika z hasłem
CREATE USER 'projektant'@'localhost' IDENTIFIED BY 'BezpieczneHaslo123';
-- Użytkownik tylko do odczytu
CREATE USER 'uczen'@'%' IDENTIFIED BY 'uczen2025';
-- Sprawdzenie istniejących kont
SELECT user, host FROM mysql.user;
Administrator potrafi utworzyć konta dla różnych ról: uczniów, projektantów, testerów.
Częsty błąd:
Tworzenie wszystkich użytkowników tylko na 'localhost', mimo że w zadaniu jest mowa o dostępie z innych hostów (np. '%').
2. Nadawanie i odbieranie uprawnień
Cel: Uczeń potrafi nadawać, odbierać i analizować uprawnienia użytkowników. Opis: Uprawnienia pozwalają kontrolować, kto może wykonywać operacje w bazie – odczyt, zapis, modyfikację lub zarządzanie strukturą.
Myśl w parach:
– GRANT – nadaje prawa do obiektów (baz, tabel, widoków).
– REVOKE – odbiera wcześniej nadane prawa.
To para, która bardzo często pojawia się w pytaniach testowych INF.03.
-- Nadanie pełnych uprawnień do bazy 'projekty_it'
GRANT ALL PRIVILEGES ON projekty_it.* TO 'projektant'@'localhost';
-- Uprawnienia tylko do odczytu
GRANT SELECT ON projekty_it.* TO 'uczen'@'%';
-- Cofnięcie uprawnień
REVOKE UPDATE, DELETE ON projekty_it.* FROM 'uczen'@'%';
-- Zastosowanie zmian
FLUSH PRIVILEGES;
-- Sprawdzenie uprawnień
SHOW GRANTS FOR 'projektant'@'localhost';
Użytkownik
Poziom dostępu
Zakres
projektant
Pełny (ALL PRIVILEGES)
projekty_it.*
uczen
Odczyt (SELECT)
projekty_it.*
Uwaga egzaminacyjna:
Często pojawia się pytanie w stylu: „Jak odebrać użytkownikowi prawo do modyfikowania struktury bazy?”.
Prawidłowa odpowiedź używa REVOKE, a nie GRANT z innym zestawem praw.
3. Kontrola spójności bazy danych
Cel: Uczeń potrafi sprawdzać integralność i spójność danych w bazie. Opis: Spójność bazy polega na utrzymaniu poprawnych relacji między tabelami i danych bez błędów logicznych.
W SQL można sprawdzić i naprawić błędy w strukturze lub danych.
Co rozumiemy przez spójność?
Dane nie są sprzeczne z założeniami projektu bazy (np. każda pozycja zamówienia ma istniejące zamówienie i produkt),
a więzy integralności (klucze obce, CHECK) są przestrzegane.
-- Sprawdzenie integralności tabel
CHECK TABLE Projekty;
-- Sprawdzenie i naprawa bazy danych
REPAIR TABLE Projekty;
-- Weryfikacja relacji i kluczy
SELECT table_name, constraint_name, constraint_type
FROM information_schema.table_constraints
WHERE table_schema = 'projekty_it';
Regularna kontrola spójności zapobiega utracie danych i błędom w relacjach.
W praktyce egzaminu:
Częściej będziesz proszony o analizę istniejących więzów (na podstawie zrzutu SHOW CREATE TABLE albo diagramu),
niż o fizyczne użycie CHECK TABLE/REPAIR TABLE, ale warto znać te pojęcia.
4. Tworzenie kopii zapasowych i przywracanie bazy
Cel: Uczeń potrafi tworzyć i przywracać kopie zapasowe bazy danych. Opis: Backupy są kluczowe dla bezpieczeństwa danych. Można je tworzyć w MySQL poleceniem mysqldump lub poprzez SQL w narzędziach graficznych.
Kto może robić backup?
W typowych systemach kopie zapasowe może wykonywać administrator lub użytkownik z odpowiednimi prawami serwerowymi.
W pytaniach INF.03 odpowiedź „administrator systemu / serwera baz danych” jest zwykle poprawna.
-- Tworzenie kopii zapasowej bazy z poziomu terminala
mysqldump -u root -p projekty_it > C:\kopie\projekty_it_backup.sql
-- Przywracanie bazy z kopii
mysql -u root -p projekty_it < C:\kopie\projekty_it_backup.sql
-- Kopia tylko jednej tabeli
mysqldump -u root -p projekty_it Klienci > C:\kopie\klienci.sql
Tworzenie regularnych kopii zapasowych jest obowiązkiem każdego administratora.
Częsty błąd:
Uczniowie mylą backup bazy (mysqldump) z eksportem pojedynczej tabeli do CSV.
W zadaniach INF.03 „kopią zapasową bazy” zawsze będzie plik zawierający całą strukturę i dane, możliwy do odtworzenia.
5. Zadanie końcowe – Bezpieczny system zarządzania użytkownikami
Polecenie:
Utwórz trzech użytkowników: admin_it, programista, czytelnik.
Nadaj każdemu różne uprawnienia (pełne, częściowe, tylko SELECT).
Utwórz kopię zapasową bazy projekty_it i przywróć ją w nowym środowisku testowym.
Sprawdź spójność bazy po przywróceniu danych.
Po ukończeniu zadania uczeń potrafi zarządzać użytkownikami, nadawać uprawnienia oraz dbać o integralność i bezpieczeństwo bazy.
Podpowiedź do ról:
– admin_it: ALL PRIVILEGES na całym serwerze lub przynajmniej na bazie projekty_it.
– programista: SELECT, INSERT, UPDATE, DELETE na tabelach aplikacji, bez uprawnień administracyjnych.
– czytelnik: tylko SELECT na wybranych tabelach, zgodnie z zasadą minimalnych uprawnień.