Lekcje >> Podstawy MySQL
Polimax

Drukarnia w Warszawie realizująca druk wizytówek, plakatów jak również fotoksiążki, fotoobrazy i fotokalendarze - z wysyłką na terenie całego kraju.

Rejestrowanie użytkowników

Podczas tych zajęć poznamy polecenia służące do tworzenia nowych użytkowników i nadawania jak również odbierania im uprawnień.

Ćwiczenie 3_3_0_1. Nadawanie hasła użytkownikowi root

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

  1. Za pomocą Notepad++, otwórz plik xampp\phpMyAdmin\config.inc.php.
  2. Wpisz hasło admin123 w wierszu kodu PHP - $cfg['Servers'][$i]['password'] = 'admin123';, a następnie zapisz zmiany:
    xampp\phpMyAdmin\config.inc.php
    Rysunek 3_3_0_1a. Zmiany w pliku xampp\phpMyAdmin\config.inc.php
  3. Nie otwierając żadnej z baz (dla pewności kliknij napis phpMyAdmin), wpisz w zakładce SQL polecenie: SET PASSWORD FOR 'root'@'localhost'= PASSWORD('admin123');, a następnie kliknij Wykonaj. Fakt ustanowienia hasła powinien pokazać phpMyAdmin:
    Użytkownik root w phpMyAdmin
    Rysunek 3_3_0_1b. Użytkownik root w phpMyAdmin
  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:
    Ponowne zmiany w pliku xampp\phpMyAdmin\config.inc.php
    Rysunek 3_3_0_1c. Ponowne zmiany w pliku xampp\phpMyAdmin\config.inc.php
  5. Od tej pory uruchomienie panelu administracyjnego będzie wymagało wpisanie użytkownika root oraz hasła admin123:
    Logowanie do panelu administracyjnego
    Rysunek 3_3_0_1d. Logowanie do panelu administracyjnego

Polecenie GRANT - rejestrowanie nowego użytkownika

Polecenie GRANT służy do tworzenia nowych użytkowników i nadawania im uprawnień. Posiada następującą składnię:

					
GRANT przywileje [kolumny]
ON obiekt
TO identyfikator_uzytkownika [IDENTIFIED BY 'haslo']
[REQUIRE opcje_ssl]
[WITH [GRANT OPTION | ograniczenia]];

Należy w tym miejscu zaznaczyć, że klauzule pisane w nawiasach kwadratowych mają charakter opcjonalny, tzn. mogą być, ale nie muszą. Poszczególne paramety (pisane kursywą) mają następujące znaczenie:

  • Parametr przywileje - lista uprawnień, oddzielonych przecinkami.
  • Parametr kolumny - parametr opcjonalny, można podać nazwę pojedynczej kolumny lub listę nazw oddzielonych przecinkami, do których zostaną zastosowane podane uprawnienia.
  • Parametr obiekt wskazuje bazę lub tabelę, do której zastosowane zostaną podane uprawnienia. Jeżeli chcemy nadać dane uprawnienia we wszystkich bazach, to parametr obiekt powinien przyjąć wartość *.*. Wtedy dane uprawnienia nadajemy na poziomie globalnym. Jeżeli nie jest używana żadna baza danych, to stosujemy wartość *.
    Najczęściej, wskazuje się konkretną bazę oraz:
    • wszystkie tabele w bazie - nazwa_bazy.*,
    • dana tabela w bazie - nazwa_bazy.nazwa_tabeli,
    • pojedyncze kolumny w danej tabeli - nazwa_bazy.nazwa_tabeli oraz nadanie odpowiedniej wartości parametrowi kolumny.
    Jeżeli podczas wykonywania polecenia używana jest jakaś baza danych, to podanie samej nazwy tabeli, zostanie zinterpretowane, jako nadanie uprawnień tabeli o tej nazwie znajdującej się w tej bazie danych.
  • Parametr identyfikator_uzytkownika powinien wskazywać identyfikator, za pomocą którego, użytkownik loguje się do serwera MySQL.
  • Parametr haslo - hasło dostępu podawane podczas logowania do serwera.
  • Klauzula REQUIRE wskazuje, że użytkownik musi się łączyć poprzez protokół SSL (Secure Sockets Layer), a także wskazać opcje SSL.
  • Dodanie opcji WITH GRANT OPTION spowoduje, że wskazany użytkownik będzie mógł nadawać innym użytkownikom, takie uprawnienia, jakie sam posiada.

Informacje o uprawnieniach, zapisywane są w czterech tabelach systemowej bazy mysql. Tabele te mają nazwy: mysql.user, mysql.db, mysql.host, mysql.tables_priv oraz mysql.columns_priv. Można zmienić dane wprost w tych tabelach, bez stosowania polecenia GRANT.

Polecenie REVOKE - odbieranie użytkownikowi 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 indentyfikator_uzytkownika;

Ćwiczenie 3_3_0_2. Rejestrowanie użytkownika mającego status administratora

Po otwarciu phpMyAdmina - zakładka SQL, otwieramy bazę ksiegarnia_internetowa, wpisujemy poniższe polecenie SQL i klikamy Wykonaj.

GRANT ALL
ON *
TO uczen_admin IDENTIFIED BY 'uczen_admin_123';

W wyniku tego polecenia, 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. Sprawdzamy na zakładce Uprawnienia czy użytkownik uczen_admin, został zarejestrowany:

Rejestrowanie użytkownika mającego status administratora
Rysunek do ćwiczenia 3_3_0_2. Rejestrowanie użytkownika mającego status administratora

Ćwiczenie 3_3_0_3. Odbieranie użytkownikowi wszystkich uprawnień

Jak odebrać wszystkie uprawnienia nadane w poprzednim ćwiczeniu? Należy zastosować plecenie SQL:

REVOKE ALL
ON *
FROM uczen_admin;
Odbieranie użytkownikowi wszystkich uprawnień
Rysunek 3_3_0_3a. Odbieranie użytkownikowi wszystkich uprawnień

USAGE zakreślone na rysunku kolorem czerwonym 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 phpMyAdmina, a następnie zastosować polecenie SELECT * FROM user;

Przeglądanie zawartości tabeli systemowej user
Rysunek 3_3_0_3b. Przeglądanie zawartości tabeli systemowej user

Zwróć uwagę, że hasła przechowywane są w postaci zaszyfrowanej.

Ćwiczenie 3_3_0_4. Usuwanie użytkownika z systemu

Pora usunąć naszego testowego użytkownika uczen_admin. Jak to wykonać? Kliknąć zakładkę SQL, wpisać polecenie DELETE FROM user WHERE USER='uczen_admin'; i kliknąć Wykonaj. Po ponownym zastosowaniu SELECT * FROM user; widzimy, że nasz testowy użytkownik uczen_admin został usunięty z tabeli user.

Przeglądanie zawartości tabeli systemowej user
Rysunek 3_3_0_4. Przeglądanie zawartości tabeli systemowej user

Otwórz bazę ksiegarnia_internetowa i sprawdź na zakładce Użytkownicy, czy nadal istnieje tam uczen_admin. Jeżeli tak, to usuń go ręcznie - zaznacz go na liście, a następnie w polu Usuń zaznaczonych użytkowników kliknij Wykonaj.

Ćwiczenie 3_3_0_5. Rejestrowanie użytkownika bazy księgarnia_internetowa

Pora zająć się naszą bazą ksiegarnia_internetowa, klient będzie użytkownikiem tej bazy.

Zarejestrowanie nowego użytkownika bez uprawnień. Otwórz bazę ksiegarnia_internetowa i zastosuj następujące polecenie SQL:

GRANT USAGE
ON ksiegarnia_internetowa.*
TO klient IDENTIFIED BY 'klient123';

W wyniku tego polecenia, zostanie zarejestrowany użytkownik bez przywilejów, bazy ksiegarnia_internetowa, identyfikowany jako klient, z hasłem klient123. Sprawdzamy na zakładce Uprawnienia czy użytkownik klient, został zarejestrowany. Co widzimy? nie ma tam naszego klienta, ponieważ nie ma uprawnień. Sprawdźmy więc, czy jest on wyszczególniony w tabeli user systemowej bazy mysql. Tak, tutaj znajdziemy go na ostatniej pozycji:

Rejestrowanie użytkownika bez uprawnień
Rysunek 3_3_0_5a. Rejestrowanie użytkownika bez uprawnień

Nadanie uprawnień zarejestrowanemu użytkownikowi klient. Ponownie otwórz bazę ksiegarnia_internetowa i zastosuj następujące polecenie SQL:

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

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 ksiegarnia_internetowa.

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

Nadawanie użytkownikowi uprawnień
Rysunek 3_3_0_5b. Nadawanie użytkownikowi uprawnień

Ograniczenie 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;

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.

Ograniczanie użytkownikowi uprawnień
Rysunek 3_3_0_5c. Ograniczanie użytkownikowi uprawnień

Odebranie użytkownikowi klient wszystkich uprawnień. W tym celu zastosuj następujący kod SQL:

REVOKE ALL
ON ksiegarnia_internetowa.*
FROM klient;

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.

Odebranie użytkownikowi uprawnień
Rysunek 3_3_0_5d. Odebranie użytkownikowi uprawnień