System uprawnien, rejestrowanie uzytkowników mysql

Pliki do pobrania poniżej:

Wykonaj poniższe ćwiczenia, w dokumencie word o swoim imieniu i nazwisku umieść screeny potwierdzające wykonanie ćwiczeń. Na screenie ma być widoczna data i godzina wykonywanego ćwiczenia.

Zadanie wysyłamy na podany na zajęciach adres email.

Meila tytułujemy:Imie Nazwisko System uprawnien

W pierwszej kolejności zapoznaj się z poniższym dokumentem:
02-System-uprawnien

 

Rejestrowanie użytkowników
Wersja dla MySQL 8.0+ i najnowszego XAMPP

Wprowadzenie

Niniejszy dokument zawiera instrukcje dotyczące rejestrowania użytkowników w systemie MySQL 8.0+
oraz najnowszych wersjach XAMPP. Główne zmiany wynikają z usunięcia przestarzałych funkcji i wprowadzenia nowych
wymogów bezpieczeństwa.

Przed rozpoczęciem: Zapisz sobie kopię oryginalnego pliku konfiguracyjnego, aby w razie
problemów móc przywrócić jego zawartość.

Ćwiczenie 1: Nadawanie hasła użytkownikowi root

Zanim zarejestrujemy użytkowników, powinniśmy nadać hasło użytkownikowi root. Wykonamy to w następujący sposób:

Krok 1: Ustawienie hasła w phpMyAdmin

  1. Nie otwierając żadnej z baz (dla pewności kliknij napis phpMyAdmin), wpisz w zakładce SQL polecenie:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin123';

a następnie kliknij Wykonaj.

Krok 2: Edycja pliku konfiguracyjnego

  1. Za pomocą Notepad++, otwórz plik xampp\phpMyAdmin\config.inc.php
  2. Znajdź linię z kodem PHP i wpisz hasło admin123:
$cfg['Servers'][$i]['password'] = 'admin123';
  1. Zapisz zmiany.

Krok 3: Wymuś przeładowanie uprawnień

FLUSH PRIVILEGES;
Uwaga: Jeśli w przyszłości będziesz chciał usunąć hasło, skorzystaj z polecenia:
ALTER USER 'root'@'localhost' IDENTIFIED BY '';

Krok 4

Ponownie za pomocą Notepad++, otwórz plik xampp\phpMyAdmin\config.inc.php, wpisz zamiast configcookie oraz usuń wpisane wcześniej hasło admin123:

Od tej pory uruchomienie panelu administracyjnego będzie wymagało wpisanie użytkownika root oraz
hasła admin123.

Tworzenie i zarządzanie użytkownikami w MySQL 8.0+

Ważna zmiana w MySQL 8.0+

W nowszych wersjach MySQL nie można już tworzyć użytkowników za pomocą polecenia
GRANT ... IDENTIFIED BY. Proces został podzielony na dwa kroki:

  1. Najpierw utworzenie użytkownika poleceniem CREATE USER
  2. Następnie nadanie uprawnień poleceniem GRANT

Ćwiczenie 2: Rejestrowanie użytkownika mającego status administratora

Po otwarciu phpMyAdmin – zakładka SQL, wykonaj następujące polecenia:

Krok 1: Tworzenie użytkownika

CREATE USER 'uczen_admin'@'localhost' IDENTIFIED BY 'uczen_admin_123';

Krok 2: Nadanie uprawnień administratora

GRANT ALL PRIVILEGES ON *.* TO 'uczen_admin'@'localhost' WITH GRANT OPTION;

Krok 3: Przeładowanie uprawnień

FLUSH PRIVILEGES;

W wyniku tych poleceń zostanie zarejestrowany użytkownik o nazwie uczen_admin, zostanie zapisane
jego hasło uczen_admin_123 oraz zostaną mu nadane wszystkie uprawnienia w zakresie wszystkich
istniejących baz danych.

Sprawdź na zakładce Uprawnienia, czy użytkownik uczen_admin został zarejestrowany.

Ćwiczenie 3: Odbieranie użytkownikowi wszystkich uprawnień

Aby odebrać wszystkie uprawnienia nadane w poprzednim ćwiczeniu:

REVOKE ALL PRIVILEGES ON *.* FROM 'uczen_admin'@'localhost';
FLUSH PRIVILEGES;

USAGE zakreślone na liście uprawnień oznacza brak uprawnień danego użytkownika.

W celu sprawdzenia czy nasz użytkownik nadal istnieje, możemy otworzyć systemową bazę mysql
klikając myszką nazwę na liście baz po lewej okna phpMyAdmin, a następnie zastosować polecenie:

SELECT * FROM user;
Uwaga: Hasła przechowywane są w postaci zaszyfrowanej.

Ćwiczenie 4: Usuwanie użytkownika z systemu

Poprawny sposób usuwania użytkownika w MySQL 8.0+:

DROP USER 'uczen_admin'@'localhost';
Uwaga: Nie używaj już DELETE FROM user WHERE USER='nazwa_użytkownika' – to
przestarzały i niebezpieczny sposób!

Po usunięciu sprawdź ponownie zawartość tabeli user:

SELECT * FROM user;

Ćwiczenie 5: Rejestrowanie użytkownika bazy księgarnia_internetowa

Pora zająć się naszą bazą księgarnia_internetowa. Klient będzie użytkownikiem tej bazy.

Krok 1: Tworzenie użytkownika bez uprawnień

Otwórz bazę księgarnia_internetowa i zastosuj następujące polecenie SQL:

CREATE USER 'klient'@'localhost' IDENTIFIED BY 'klient123';

W wyniku tego polecenia zostanie zarejestrowany użytkownik bez przywilejów bazy
księgarnia_internetowa, identyfikowany jako klient, z hasłem
klient123.

Krok 2: Nadanie uprawnień użytkownikowi klient

Ponownie otwórz bazę księgarnia_internetowa i zastosuj następujące polecenie SQL:

GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP 
ON ksiegarnia_internetowa.* TO 'klient'@'localhost';

Krok 3: Przeładowanie uprawnień

FLUSH PRIVILEGES;

Teraz nie ma już potrzeby podawania hasła użytkownika klient. Lista uprawnień znajduje się po
słowie kluczowym GRANT. Będą one obowiązywać we wszystkich tabelach bazy
księgarnia_internetowa.

Sprawdź na zakładce Uprawnienia uprawnienia użytkownika klient.

Ćwiczenie 6: Ograniczanie uprawnień użytkownika klient

Administrator może zawsze ograniczyć uprawnienia użytkowników. Wykonaj to, stosując następujące polecenie:

REVOKE ALTER, CREATE, DROP ON ksiegarnia_internetowa.* FROM 'klient'@'localhost';
FLUSH PRIVILEGES;

Sprawdź na zakładce Uprawnienia, jakie teraz uprawnienia posiada użytkownik
klient. Lista uprawnień zmniejszyła się o uprawnienia wymienione po słowie kluczowym
REVOKE.

Ćwiczenie 7: Odebranie użytkownikowi klient wszystkich uprawnień

W tym celu zastosuj następujący kod SQL:

REVOKE ALL PRIVILEGES ON ksiegarnia_internetowa.* FROM 'klient'@'localhost';
FLUSH PRIVILEGES;

Sprawdź na zakładce Uprawnienia, czy znajduje się tam użytkownik klient. Nie
posiada on żadnych uprawnień, więc nie powinien znajdować się na tej zakładce.

Polecenie GRANT – składnia i parametry

Polecenie GRANT służy do nadawania użytkownikom określonych uprawnień. W MySQL 8.0+ posiada
następującą składnię:

GRANT przywileje [kolumny] ON obiekt TO identyfikator_użytkownika 
[REQUIRE opcje_ssl] [WITH [GRANT OPTION | ograniczenia]];

Parametry polecenia GRANT:

  • Parametr przywileje – lista uprawnień, oddzielonych przecinkami
  • Parametr kolumny – parametr opcjonalny, można podać nazwę pojedynczej kolumny lub listę nazw
    oddzielonych przecinkami
  • Parametr obiekt wskazuje bazę lub tabelę, do której zastosowane zostaną podane uprawnienia:
    • *.* – wszystkie bazy (uprawnienia globalne)
    • nazwa_bazy.* – wszystkie tabele w bazie
    • nazwa_bazy.nazwa_tabeli – dana tabela w bazie
    • nazwa_bazy.nazwa_tabeli (kolumna1, kolumna2) – pojedyncze kolumny
  • Parametr identyfikator_użytkownika – identyfikator użytkownika w formacie
    'nazwa'@'host'
  • Klauzula REQUIRE – wymaga połączenia SSL
  • WITH GRANT OPTION – pozwala użytkownikowi nadawać uprawnienia innym

Polecenie REVOKE – odbieranie uprawnień

Polecenie REVOKE służy do odbierania użytkownikom określonych uprawnień. Posiada następującą
składnię:

REVOKE przywileje [kolumny] ON obiekt FROM identyfikator_użytkownika;

Najważniejsze zmiany w MySQL 8.0+

Porównanie starych i nowych poleceń

Stare polecenie (NIE DZIAŁA) Nowe polecenie (ZALECANE) Powód zmiany
GRANT ALL ON *.* TO 'user' IDENTIFIED BY 'password'; CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO
'user'@'localhost';
Rozdzielono tworzenie użytkownika od nadawania uprawnień
SET PASSWORD FOR 'user'@'localhost'= PASSWORD('password'); ALTER USER 'user'@'localhost' IDENTIFIED BY 'password'; Usunięto funkcję PASSWORD()
DELETE FROM user WHERE USER='username'; DROP USER 'user'@'localhost'; Niebezpieczne, może uszkodzić strukturę uprawnień

Zawsze pamiętaj o:

FLUSH PRIVILEGES;

po każdej zmianie uprawnień!

Sprawdzanie użytkowników i uprawnień

Przydatne polecenia diagnostyczne:

Lista wszystkich użytkowników:

SELECT User, Host FROM mysql.user;

Sprawdzenie uprawnień konkretnego użytkownika:

SHOW GRANTS FOR 'nazwa_użytkownika'@'localhost';

Sprawdzenie bieżącego użytkownika:

SELECT USER(), CURRENT_USER();

Sprawdzenie wersji MySQL:

SELECT VERSION();

Informacje o systemie uprawnień

Informacje o uprawnieniach zapisywane są w tabelach systemowej bazy mysql:

  • mysql.user – użytkownicy i uprawnienia globalne
  • mysql.db – uprawnienia na poziomie baz danych
  • mysql.tables_priv – uprawnienia na poziomie tabel
  • mysql.columns_priv – uprawnienia na poziomie kolumn
Uwaga: Nie zaleca się bezpośredniej modyfikacji tych tabel. Zawsze używaj poleceń SQL.

Najczęstsze błędy i rozwiązania

Błąd Rozwiązanie
„Access denied for user” Sprawdź czy użytkownik istnieje i ma odpowiednie uprawnienia:
SHOW GRANTS FOR 'użytkownik'@'localhost';
„You have an error in your SQL syntax” Sprawdź składnię, szczególnie apostrofy wokół nazw użytkowników i haseł
„Unknown column ‚Password’ in ‚field list'” W MySQL 8.0+ kolumna nazywa się authentication_string, nie Password

Podsumowanie

Najważniejsze zasady w MySQL 8.0+:

  1. Zawsze używaj CREATE USER przed GRANT
  2. Zawsze dodawaj FLUSH PRIVILEGES; po zmianach uprawnień
  3. Używaj ALTER USER do zmiany haseł
  4. Używaj DROP USER do usuwania użytkowników
  5. Sprawdzaj uprawnienia poleceniem SHOW GRANTS
  6. Testuj połączenia nowych użytkowników przed finalizacją

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *