Przeczytaj
Środowisko XAMPP
Wykorzystamy lokalną instalację wieloplatformowego środowiska XAMPP, zawierającego serwer WWW Apache, bazę danych MariaDB oraz język PHP i Perl.
Baza MariaDB jest forkiem (alternatywną wersją) bazy MySQL. Powstała, gdy baza MySQL została przejęta przez firmę Oracle i zmienił się sposób jej licencjonowania.
Na stronie projektu XAMPP można znaleźć kilka instalatorów. Wybieramy i pobieramy instalator przeznaczony dla naszego systemu operacyjnego, z najnowszą wersją języka PHP.
System Linux
W systemie Linux pobranemu plikowi należy nadać prawo wykonywania, a następnie uruchomić instalację. Można to zrobić za pomocą poleceń w terminalu w katalogu, w którym zapisany został instalator:
Podczas instalacji możemy odznaczyć opcję XAMPP Developer Files
. Środowisko zostanie zainstalowane w katalogu /opt/lampp
. Uruchamiamy je poleceniem w terminalu:

Możemy też uruchomić panel graficzny do zarządzania środowiskiem, wydając polecenie:

System Windows
W systemie Microsoft Windows należy pobrany plik kliknąć dwa razy, aby uruchomić instalację. Podczas instalacji:
wybieramy
OK
w pierwszym oknie dialogowym, które sugeruje, aby nie instalować środowiska w kataloguC:\Program Files
(ze względu na brak praw do zapisu wprowadzany przez mechanizm User Account Control),w oknie
Select Components
możemy odznaczyć wszystkie składniki poza MySQL i PHP (domyślnie zaznaczony),katalog instalacyjny umieszczamy w głównym katalogu partycji, np.
C:\xampp
.
Po instalacji powinien zostać otworzony panel do zarządzania środowiskiem. Uruchamiamy w nim serwery Apache i MySQL, klikając przyciski Start
.
![Ilustracja przedstawia XAMPP Control Panel w systemie Windows. W panelu na zielono podświetlono Apache, MySQL. Obok przyciski Stop, Admin, Config, Logs. W dolnej części okna dalsze informacje typu: [Apache]. Attempting to start Apache app... [Apache] Status change detected: running.](https://static.zpe.gov.pl/portal/f/res-minimized/Rl2CiiHjBKWc3/1690815825/2OHAEwQrStgxwVjFUngwHi0pLb5KDQ1J.png)
Systemy bazodanowe działają na podstawie architektury klient‑serwer. Dlatego konfiguracja systemowego firewalla musi umożliwiać łączenie się z serwerem bazy przynajmniej dla połączeń lokalnych. Jeżeli podczas instalacji lub uruchomienia systemu bazodanowego pojawi się monit firewalla, należy zezwolić na połączenia.
phpMyAdmin
Podstawowym narzędziem obsługi baz danych jest wiersz poleceń – z jego użyciem zapoznamy się w sekcji „Prezentacja multimedialna”. Na razie do wykonywania operacji na bazie wykorzystamy interfejs graficzny w postaci aplikacji webowej phpMyAdmin
, która stanowi część środowiska XAMPP. W domyślnej konfiguracji aplikacja nie wymaga podawania loginu i hasła w trakcie uzyskiwania dostępu do baz danych.
Do realizacji innych e‑materiałów dotyczących użycia języka SQL w środowisku XAMPP opisana zmiana domyślnej konfiguracji nie jest wymagana.
Na potrzeby tego e‑materiału wymusimy logowanie użytkownika do bazy danych w narzędziu phpMyAdmin. Zmienimy odpowiednią opcję w pliku konfiguracyjnym config.inc.php
.
W systemie Linux otwieramy plik z podniesionymi uprawnieniami w edytorze tekstu (np. xed
lub gedit
):
W systemie Windows otwieramy w Notatniku plik C:\xampp\phpmyadmin\config.inc.php
.
Zmieniamy wiersz:
na:
Zmiany zapisujemy.
Uruchamiamy przeglądarkę internetową i w polu adresu wpisujemy localhost/phpmyadmin
. Jeżeli środowisko XAMPP jest uruchomione, powinniśmy zobaczyć stronę powitalną z formularzem logowania.

Logujemy się jako użytkownik root
, bez podawania hasła. Po zalogowaniu, klikamy link do zakładki SQL
, aby można było wpisywać polecenia SQL
w polu tekstowym: Uruchom zapytanie/zapytania SQL na serwerze "localhost"
. Wykonanie zapytania następuje po kliknięciu przycisku Wykonaj
. Po wykonaniu zapytania ponowne wyświetlenie pola tekstowego, służącego do ich wpisywania, jest możliwe po kliknięciu przycisku Pokaż okno zapytań
.
Aby wylogować się z aplikacji, należy kliknąć ikonę Wyjście
w lewym górnym rogu, poniżej nazwy aplikacji, obok ikony Wejście
przedstawiającej dom.

Systemowa baza mysql
Zacznijmy od sprawdzenia, jakie bazy są dostępne:
W wyniku zapytania wyświetli się lista baz, która widoczna jest również w lewym panelu aplikacji w postaci drzewa.
Polecenia systemu bazodanowego oraz języka SQL pisane są wielkimi literami dla czytelności. Jeżeli wprowadzamy je ręcznie, nie musimy trzymać się tej konwencji i możemy używać małych liter.
Kolejne polecenie wyświetli listę tabel z systemowej bazy danych mysql
:
Polecenie USE
służy do wskazania bazy, z którą chcemy pracować. Po jego wykonaniu w phpMyAdmin zobaczymy błąd Error: #1046 Nie wybrano żadnej bazy danych
, który ignorujemy. Drugie polecenie pokaże tabele zawarte w bazie.
Aby uniknąć konieczności ciągłego wpisywania polecenia USE
oraz błędu Error: #1046 Nie wybrano żadnej bazy danych
, przed wykonywaniem zapytań wybieramy bazę danych mysql
, klikając jej nazwę na liście w lewym panelu, a następnie link do zakładki SQL. Zauważymy wtedy etykietę Wykonanie zapytania/zapytań SQL do bazy danych mysql:
nad polem tekstowym do wpisywania zapytań.
W niektórych zapytaniach nazwę bazy danych możemy podać, oddzielając ją kropką od nazwy tabeli, np. mysql.user
.
Systemowa baza mysql
zawiera dane o bazach, użytkownikach i o ich uprawnieniachuprawnieniach. Poznajmy bliżej tabelę user:
Polecenie DESCRIBE
wyświetla nazwy, typy i ograniczenia podanej tabeli.

DESCRIBE mysql.user
.Kwerenda SELECT
wyświetli zawartość podanych pól. Zobaczymy, że w tabeli user zapisane są konta użytkowników i przywileje globalne. Konto każdego użytkownika powiązane jest z hostem, z którego może logować się do bazy danych. Nazwa localhost
oznacza komputer lokalny.

Konto root
Zaczniemy od ustawienia hasła dla konta root
, które posiada wszystkie uprawnienia i służy do zarządzania systemem bazodanowym. W zakładce SQL
wykonujemy po kolei następujące polecenia:
Zadaniem pierwszego polecenia jest zmiana metody uwierzytelniania na mysql_native_password
, która nie jest uznawana za bezpieczną w zastosowaniach produkcyjnych, ale w zupełności wystarcza do ćwiczeń. Drugie polecenie ustawia hasło, które w postaci zaszyfrowanej zapisane będzie w polu authentication_string
.
Jeżeli próba wykonania powyższych poleceń zwróci błąd #1348 --- Column 'plugin' is not updatable
, oznaczać to może, że konfiguracja bazy nie pozwala na użycie klauzuli UPDATE
do zmiany sposobu logowania się, w tym hasła użytkownika root
. Wtedy użyjemy klauzuli ALTER USER
:
Pierwsze polecenie ma za zadanie ustawić domyślną metodę uwierzytelniania mysql_native_password
poprzez wyłączenie starszej metody old_passwords
. Drugie polecenie zmienia hasło użytkownika root
, który będzie łączył się z bazą z hosta localhost
, czyli lokalnie, na ciąg znaków podany po klauzuli IDENTIFIED BY
.
Po dokonaniu zmian możemy jeszcze spróbować wykonać poniższe polecenia:
Polecenie FLUSH PRIVILEGES
powoduje ponowne odczytanie przez system bazodanowy uprawnień użytkowników i załadowanie ich do pamięci. W dokumentacji można przeczytać, że wymagane jest tylko wtedy, kiedy do modyfikacji kont i uprawnień używa się klauzul INSERT, UPDATE, DELETE
, w praktyce można je stosować zawsze.
Ponieważ zmieniliśmy hasło dla konta root
i odświeżyliśmy uprawnienia, przy próbie wykonania ostatniej operacji zobaczymy komunikat błędu informującego o utraceniu połączenia z bazą.

root
i odświeżeniu uprawnień.Powinniśmy więc wylogować się i zalogować jeszcze raz na konto użytkownika root
, podając ustawione hasło. Wtedy będziemy mogli wykonać ostatnie zapytanie.
Dodawanie użytkowników
Spróbujmy dodać użytkownika o nazwie adam
. Wykonajmy zapytanie:
Polecenie CREATE USER
tworzy konto użytkownika o podanej nazwie i zabezpiecza go podanym hasłem. Utworzone w ten sposób konto nie ma żadnych uprawnień i w zależności od konfiguracji serwera może mieć dostęp do bazy z dowolnego komputera. Sprawdzamy to za pomocą używanego już wcześniej zapytania:

Znak %
w polu host
oznacza dostęp z dowolnego komputera, a ponieważ nie jest to bezpieczne, konto usuniemy za pomocą klauzuli DROP
:
Znaku @
używamy do oddzielenia nazwy użytkownika od nazwy hosta.
Wykorzystamy teraz inną możliwość tworzenia konta, ograniczając zakres dostępu do komputera lokalnego:
Klauzula GRANT
służy do nadawania uprawnień, a w tym wypadku tworzy również konto użytkownika. Symbole *.*
oznaczają, że przyznajemy uprawnienia dla wszystkich baz (pierwsza gwiazdka) i wszystkich tabel (druga gwiazdka). Znak @
oddziela nazwę użytkownika od nazwy hosta. Przywilej USAGE
oznacza brak jakichkolwiek uprawnień poza dostępem do bazy.
Przyznając jakiekolwiek uprawnienia użytkownikom, należy kierować się zasadą minimalnych wymaganych uprawnień potrzebnych do wykonania określonych czynności. Np. zastąpienie ciągu localhost
znakiem %
dałoby użytkownikowi możliwość logowania się z dowolnego komputera, co zwiększyłoby ryzyko kompromitacji serwera.
Wyloguj się z aplikacji i zaloguj się za pomocą utworzonego konta. Wykonaj polecenie:
Utwórz konto dla użytkownika ewa
, zabezpieczone hasłem zaq1@WSX.
Tworzenie bazy
Utworzymy bazę danych i przyznamy do niej uprawnienia. Do aplikacji phpMyAdmin logujemy się jako użytkownik root
i wydajemy polecenie tworzące bazę danych zajecia
:
Polecenie tworzące bazę danych ma kilka odmian użytecznych wtedy, kiedy nie wiemy, czy dana baza już istnieje:
CREATE OR REPLACE DATABASE zajecia;
– jeżeli baza istnieje, zostanie zastąpiona nową,CREATE DATABASE IF NOT EXISTS zajecia;
– jeżeli baza nie istnieje, zostanie utworzona.
Podczas tworzenia bazy danych ustawiane są dla niej dodatkowe parametry, z których najważniejsze to zestaw znaków (ang. character set), używanych do przechowywania tekstów oraz sposób sortowania tekstów (ang. collation).
Podane polecenia pokażą dostępne ustawienia porównywania oraz użyte ustawienia zestawu i porównywania znaków:
Po wydaniu drugiego polecenia zauważymy, że baza zajecia
przejęła domyślne ustawienia serwera, które mogą się różnić w zależności od dystrybucji, np. latin1
i latin1_swedish_ci
lub utf8mb4
i utf8mb4_general_ci
.

Zestaw znaków i sposób sortowania można ustawiać na poziomie serwera, bazy danych, tabel, a nawet kolumn. Dla bazy danych przechowującej teksty polskie polecane ustawienia to: utf8
i utf8_polish_ci
. Aby je zastosować, mamy dwie możliwości: możemy usunąć bazę, a następnie utworzyć ją za pomocą polecenia z dodatkowymi opcjami.
Jeżeli nie chcemy usuwać bazy, możemy spróbować zmienić domyślne ustawienia:
Ponowne wykonanie zapytania SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
pokaże, czy udało się ustawić odpowiednie opcje.
Uprawnienia
Po utworzeniu bazy danych możemy przyznać do niej uprawnienia wybranemu użytkownikowi:
Klauzula GRANT ALL PRIVILEGES
przyznaje wszystkie uprawnienia do wskazanej bazy użytkownikowi łączącemu się z podanego hosta. Przegląd uprawnień możliwy jest po wydaniu zapytania:

adam
.Uprawnienia możemy też odczytać bezpośrednio z tabeli db
bazy systemowej mysql
:
Po wykonaniu drugiego zapytania zobaczymy, że uprawnienia to nie tylko pełen zestaw podstawowych poleceń CRUDCRUD – dotyczą one wszystkich operacji służących do zarządzania systemem bazodanowym.
Dla przykładu ograniczymy uprawnienia użytkownika ewa
, logującego się z komputera lokalnego tylko do odczytywania tabel z bazy zajecia
:
Użyj odpowiedniego polecenia do wyświetlenia uprawnień użytkownika ewa
.
Słownik
(ang. Create, Read, Update, Delete) zestaw podstawowych operacji wykonywanych na bazach danych, możliwość tworzenia baz i tabel (create), odczytywania danych (read), zmiany danych (update) i ich usuwania (delete)
oprogramowanie do zarządzania bazą danych, najczęściej działające w architekturze klient – serwer jako serwer udostępniający klientom dane; implementuje mechanizmy do administrowania danymi, w tym operacje na danych za pomocą języka SQL
zestaw czynności, które użytkownik może wykonać na serwerze bazodanowym; do najważniejszych należy możliwość logowania się i wykonywania operacji CRUD
skrót opisujący środowisko programistyczne, którym można zarządzać za pomocą aplikacji GUI (X) w systemie Linux lub Windows z zainstalowanymi serwerami: WWW – Apache (A), bazy danych – MariaDB (M) oraz języków działających po stronie serwera – PHP (P) i Perl (P)