Wyobraź sobie, że w bibliotece każdy może wejść na zaplecze, kasować książki albo zmieniać autorów.
Brzmi jak chaos, prawda?
W bazie danych jest podobnie.
Nie każdy użytkownik powinien móc usuwać tabele, dodawać dane lub zmieniać cudze rekordy.
Dlatego SQL pozwala dokładnie określić, kto co może robić — za pomocą systemu uprawnień (permissions).
1. Czym są uprawnienia?
Uprawnienia (GRANTS) to zestaw reguł, które określają:
- kto ma dostęp do bazy danych,
- co może w niej robić,
- a czego nie może.
Każdy użytkownik ma swoje konto w systemie bazy danych, a administrator może przyznać mu konkretne prawa:
np. tylko do odczytu danych, tylko do dodawania rekordów albo do wszystkiego.
2. Najczęstsze uprawnienia w MySQL
| Uprawnienie | Działanie |
|---|---|
| SELECT | pozwala odczytywać dane |
| INSERT | pozwala dodawać nowe rekordy |
| UPDATE | pozwala zmieniać dane |
| DELETE | pozwala usuwać rekordy |
| CREATE | pozwala tworzyć tabele lub bazy |
| DROP | pozwala usuwać tabele lub bazy |
| ALTER | pozwala modyfikować strukturę tabel |
| ALL PRIVILEGES | przyznaje wszystkie uprawnienia |
3. Tworzenie nowego użytkownika
Domyślnie w XAMPP MySQL działa z kontem root, które ma pełne prawa.
Ale możemy stworzyć nowych użytkowników – np. dla uczniów lub testów.
CREATE USER 'marek'@'localhost' IDENTIFIED BY 'haslo123';
To polecenie tworzy użytkownika marek, który może łączyć się z bazy tylko z lokalnego komputera (localhost) i loguje się hasłem haslo123.
4. Nadawanie uprawnień – GRANT
Po utworzeniu użytkownika trzeba nadać mu odpowiednie uprawnienia.
a) Pełny dostęp do całej bazy
GRANT ALL PRIVILEGES ON sklep_muzyczny.* TO 'marek'@'localhost';
Marek ma wszystkie prawa do bazy sklep_muzyczny.
b) Dostęp tylko do odczytu
GRANT SELECT ON sklep_muzyczny.* TO 'marek'@'localhost';
Użytkownik może przeglądać dane, ale nie może ich zmieniać ani usuwać.
c) Dostęp tylko do wybranej tabeli
GRANT SELECT, INSERT ON sklep_muzyczny.Zamowienia TO 'marek'@'localhost';
Marek może przeglądać i dodawać zamówienia, ale nie może zmieniać struktury tabel ani kasować danych.
d) Uprawnienia tylko do jednej operacji
GRANT UPDATE ON sklep_muzyczny.Produkty TO 'marek'@'localhost';
Użytkownik może edytować ceny lub nazwy produktów, ale nie może nic usuwać ani tworzyć nowych rekordów.
5. Cofanie uprawnień – REVOKE
Jeśli ktoś nie powinien już mieć dostępu, możemy mu odebrać konkretne prawa.
REVOKE INSERT, UPDATE ON sklep_muzyczny.Zamowienia FROM 'marek'@'localhost';
Teraz Marek nie może już dodawać ani edytować zamówień, ale jeśli miał inne uprawnienia (np. SELECT), to nadal one działają.
6. Usuwanie użytkownika
DROP USER 'marek'@'localhost';
Konto użytkownika zostaje całkowicie usunięte z systemu MySQL.
7. Sprawdzanie uprawnień użytkownika
Aby zobaczyć, jakie prawa ma użytkownik:
SHOW GRANTS FOR 'marek'@'localhost';
MySQL wyświetli listę przyznanych mu uprawnień.
8. Przykład – różne poziomy dostępu
Wyobraźmy sobie bazę sklep_muzyczny i trzech użytkowników:
| Użytkownik | Uprawnienia | Przykład zastosowania |
|---|---|---|
root | wszystkie (ALL PRIVILEGES) | administrator |
sprzedawca | SELECT, INSERT, UPDATE na Zamowienia i Produkty | może obsługiwać sprzedaż |
czytelnik | tylko SELECT | może przeglądać dane, np. do raportów |
Przykład konfiguracji:
CREATE USER 'sprzedawca'@'localhost' IDENTIFIED BY '1234';
CREATE USER 'czytelnik'@'localhost' IDENTIFIED BY 'abcd';
GRANT SELECT, INSERT, UPDATE ON sklep_muzyczny.Zamowienia TO 'sprzedawca'@'localhost';
GRANT SELECT, INSERT, UPDATE ON sklep_muzyczny.Produkty TO 'sprzedawca'@'localhost';
GRANT SELECT ON sklep_muzyczny.* TO 'czytelnik'@'localhost';
9. Zasady bezpieczeństwa
✅ Nie przyznawaj pełnych uprawnień (ALL PRIVILEGES), jeśli nie jest to konieczne.
✅ Twórz osobne konta dla każdego użytkownika – unikaj pracy na root.
✅ Regularnie sprawdzaj i aktualizuj uprawnienia (SHOW GRANTS).
✅ Dla nauki możesz testować różne poziomy dostępu w XAMPP, logując się przez phpMyAdmin lub terminal.
10. Zadania praktyczne
Zadanie 1 – tworzenie użytkownika
- Utwórz nowego użytkownika
adamz hasłem12345. - Nadaj mu uprawnienia tylko do odczytu (
SELECT) na baziesklep_muzyczny. - Sprawdź jego uprawnienia poleceniem:
SHOW GRANTS FOR 'adam'@'localhost';
Zadanie 2 – użytkownik z ograniczonym dostępem
- Utwórz użytkownika
kasjerz hasłemkasa2025. - Daj mu prawa do:
- przeglądania i dodawania zamówień (
SELECT,INSERT), - modyfikowania produktów (
UPDATE).
- przeglądania i dodawania zamówień (
- Cofnij mu prawo do
INSERTi sprawdź wynik.
Zadanie 3 – admin pomocniczy
- Utwórz użytkownika
managerz pełnym dostępem do bazysklep_muzyczny. - Następnie odbierz mu prawo do
DROP, żeby nie mógł usuwać tabel.
Zadanie 4 – kontrola bezpieczeństwa
- Utwórz trzech użytkowników:
czytelnik,redaktor,admin. - Nadaj im różne poziomy dostępu:
czytelnik: tylkoSELECT,redaktor:SELECT,INSERT,UPDATE,admin:ALL PRIVILEGES.
- Sprawdź uprawnienia wszystkich trzech kont.
11. Podsumowanie
| Polecenie | Działanie | Przykład |
|---|---|---|
| CREATE USER | tworzy nowego użytkownika | CREATE USER 'jan'@'localhost' IDENTIFIED BY '1234'; |
| GRANT | nadaje uprawnienia | GRANT SELECT ON baza.* TO 'jan'@'localhost'; |
| REVOKE | odbiera uprawnienia | REVOKE INSERT FROM 'jan'@'localhost'; |
| SHOW GRANTS | pokazuje aktualne uprawnienia | SHOW GRANTS FOR 'jan'@'localhost'; |
| DROP USER | usuwa użytkownika | DROP USER 'jan'@'localhost'; |
Dzięki uprawnieniom baza danych staje się bezpiecznym systemem, a nie otwartym notesem.
Administrator może dać każdemu dokładnie taki poziom dostępu, jakiego potrzebuje — nic więcej i nic mniej.
To szczególnie ważne na egzaminach INF.03 / INF.04, gdzie jednym z zadań często jest utworzenie użytkownika i nadanie mu określonych uprawnień.

