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.
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
- 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
- Za pomocą Notepad++, otwórz plik
xampp\phpMyAdmin\config.inc.php
- Znajdź linię z kodem PHP i wpisz hasło
admin123
:
$cfg['Servers'][$i]['password'] = 'admin123';
- Zapisz zmiany.
Krok 3: Wymuś przeładowanie uprawnień
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
Krok 4
Ponownie za pomocą Notepad++, otwórz plik xampp\phpMyAdmin\config.inc.php, wpisz zamiast config – cookie 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:
- Najpierw utworzenie użytkownika poleceniem
CREATE USER
- 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;
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;
Ćwiczenie 4: Usuwanie użytkownika z systemu
Poprawny sposób usuwania użytkownika w MySQL 8.0+:
DROP USER 'uczen_admin'@'localhost';
DELETE FROM user WHERE USER='nazwa_użytkownika'
– toprzestarzał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 bazienazwa_bazy.nazwa_tabeli
– dana tabela w bazienazwa_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'; |
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 globalnemysql.db
– uprawnienia na poziomie baz danychmysql.tables_priv
– uprawnienia na poziomie tabelmysql.columns_priv
– uprawnienia na poziomie kolumn
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+:
- Zawsze używaj
CREATE USER
przedGRANT
- Zawsze dodawaj
FLUSH PRIVILEGES;
po zmianach uprawnień - Używaj
ALTER USER
do zmiany haseł - Używaj
DROP USER
do usuwania użytkowników - Sprawdzaj uprawnienia poleceniem
SHOW GRANTS
- Testuj połączenia nowych użytkowników przed finalizacją