Czym jest system zarządzania bazą danych, czym różnią się MySQL, PostgreSQL, SQLite i MS SQL Server, jak zainstalować XAMPP, ustawić serwer dla wielu użytkowników i obsłużyć bazę w phpMyAdmin. Lekcja 7.5 kursu INF.03.
SZBD (system zarządzania bazą danych, Database Management System, DBMS) to program, który przechowuje bazy, wykonuje polecenia SQL i pilnuje, żeby wielu użytkowników mogło pracować na tych samych danych naraz bez ich psucia. Sama baza to pliki na dysku, których nikt nie otwiera ręcznie: wszystko idzie przez SZBD. Na egzaminie pisemnym wracają pytania „co to jest DBMS", „które narzędzie z XAMPP służy do zarządzania bazą" i „co znaczy lokalny SZBD". W części praktycznej pierwsze minuty przy komputerze to uruchomienie XAMPP i wejście do phpMyAdmin, więc bez tego zadanie nie ruszy z miejsca.
Co robi SZBD
SZBD stoi między użytkownikiem a plikami bazy i bierze na siebie wszystko, czego pojedyncza tabela sama nie potrafi:
›
przechowuje dane i pilnuje struktury: typów kolumn, kluczy, więzów integralności,
›
wykonuje polecenia SQL i odsyła wynik,
›
obsługuje wielodostęp, czyli pracę wielu osób naraz; blokady nie pozwalają dwóm osobom nadpisać sobie tego samego wiersza,
›
prowadzi konta użytkowników i uprawnienia: kto może czytać, kto zmieniać, kto zakładać tabele,
›
wykonuje transakcje, czyli grupy poleceń wykonywane w całości albo wcale,
›
robi kopie zapasowe i odtwarza bazę z pliku,
›
zapisuje dziennik zdarzeń, w którym zostaje ślad po błędach i wykonanych operacjach.
Jakie SZBD spotkasz i który do czego
Systemów jest kilkanaście, a na egzaminie krąży zawsze ta sama garstka nazw.
System
Typ
Gdzie go spotkasz
Uwaga
MySQL
serwerowy, port 3306
hostingi WWW, XAMPP, WordPress
najpopularniejszy w internecie, właścicielem jest Oracle
MariaDB
serwerowy, port 3306
XAMPP, serwery linuksowe
odgałęzienie MySQL, te same polecenia; to ona siedzi dziś w XAMPP pod przyciskiem MySQL
PostgreSQL
serwerowy, port 5432
duże systemy, PHP przez pg_connect
wolne oprogramowanie, więcej typów danych i funkcji
SQLite
plikowy, bez serwera
telefony, przeglądarki, małe programy
cała baza to jeden plik na dysku
Microsoft SQL Server
serwerowy, port 1433
firmy na Windows, aplikacje w .NET
dialekt T-SQL, polecenia BACKUP DATABASE i RESTORE DATABASE
Oracle Database
serwerowy, port 1521
banki, duże korporacje
rozbudowany i drogi
MS Access, LibreOffice Base
plikowy, bez serwera
biuro, małe ewidencje
programy biurowe z formularzami i raportami
Podział, o który pyta test, przebiega w poprzek tej tabeli. SZBD serwerowy pracuje w układzie klient-serwer: serwer nasłuchuje na porcie, a programy łączą się z nim po sieci, więc z jednej bazy korzysta wiele komputerów naraz. SZBD lokalny udostępnia bazę tylko na jednym komputerze, często w postaci jednego pliku otwieranego przez program biurowy. SQLite, Access i Base są lokalne, reszta z tabeli jest serwerowa. Osobną rodziną są bazy NoSQL, na przykład MongoDB, która trzyma dokumenty zamiast wierszy i nie ma sztywnych tabel. Nasz plac zabaw SQL działa na SQLite udającym MySQL, więc polecenia z kursu wykonasz w przeglądarce bez instalowania czegokolwiek. Dobór SZBD do zastosowania jest osobnym kryterium egzaminacyjnym i sprowadza się do kilku par:
Zastosowanie
Wybór
Dlaczego
strona WWW na hostingu
MySQL albo MariaDB
ma je każdy hosting, PHP łączy się z nimi jedną funkcją
aplikacja mobilna, program na jednym komputerze
SQLite
nie ma serwera do uruchomienia, baza jedzie razem z aplikacją
duży system z rozbudowanymi zapytaniami
PostgreSQL
bogatsze typy danych, funkcje i mechanizmy zapytań
firma na Windows z aplikacjami w .NET
MS SQL Server
wpięty w system i w narzędzia Microsoftu
mała ewidencja biurowa z formularzami
MS Access albo LibreOffice Base
gotowe formularze i raporty bez programowania
egzamin INF.03
MySQL albo MariaDB z XAMPP
tak brzmi treść arkusza i tak przygotowane jest stanowisko
Instalacja SZBD: XAMPP krok po kroku
XAMPP to pakiet, który instaluje naraz serwer WWW Apache, serwer baz danych MySQL (dziś jest to MariaDB), interpreter PHP, phpMyAdmin oraz Perla. Instaluje się go wtedy, gdy potrzebny jest komplet do stron dynamicznych; sam serwer bazy da się też postawić osobno.
Przeglądarka wysyła żądanie na port 80 do Apache, Apache uruchamia skrypt PHP, PHP łączy się z MySQL na porcie 3306 i dostaje wiersze, a gotowa strona wraca do przeglądarki
Droga żądania wygląda tak: przeglądarka (klient) wysyła żądanie HTTP pod adres localhost na port 80, Apache je przyjmuje i uruchamia skrypt PHP z katalogu htdocs, skrypt łączy się z serwerem MySQL na porcie 3306 jako użytkownik root, dostaje wiersze, składa z nich HTML, a Apache odsyła gotową stronę. phpMyAdmin jest zwykłą aplikacją PHP na tym samym Apache i tak samo rozmawia z MySQL, tylko zamiast strony sklepu pokazuje listę baz i tabel.
Instalacja krok po kroku:
1.
Pobierz instalator ze strony apachefriends.org w wersji dla swojego systemu.
2.
Zainstaluj do katalogu bez spacji i polskich znaków w ścieżce, standardowo C:\xampp.
3.
Na czas instalacji wyłącz program antywirusowy: to najczęstsza przyczyna instalacji, która kończy się w połowie albo zostawia niedziałający serwer.
4.
Uruchom XAMPP Control Panel i naciśnij Start przy Apache oraz przy MySQL. Zielone tło nazwy i numery procesów znaczą, że usługi działają.
5.
Sprawdź w przeglądarce adres http://localhost/, a potem http://localhost/phpmyadmin/.
Jeżeli Apache nie startuje, port 80 zajmuje inny program: bywa to Skype albo serwer IIS wbudowany w Windows. Jeżeli nie startuje MySQL, port 3306 trzyma wcześniej zainstalowany serwer bazy. Zajęty port zwalnia się przez wyłączenie tamtego programu albo zmienia w konfiguracji XAMPP, przy czym po zmianie portu 80 do adresu trzeba dopisać numer, na przykład http://localhost:8080/.
Domyślne konto administratora to root bez hasła. Arkusze CKE wprost tak opisują stanowisko („użytkownik root bez hasła"), więc na egzaminie nie zmieniaj tego ustawienia. Skrypty PHP kładzie się w C:\xampp\htdocs, bo tylko ten katalog Apache pokazuje pod adresem localhost.
Sam serwer bazy instaluje się podobnie: instalator MySQL albo MariaDB pyta o hasło użytkownika root, zakłada usługę Windows startującą razem z systemem i dokłada klienta konsolowego mysql, którym łączysz się poleceniem mysql -u root -p.
Konfiguracja do pracy wielu użytkowników
Ustawienia serwera MySQL leżą w pliku tekstowym my.ini (w XAMPP jest to C:\xampp\mysql\bin\my.ini, na Linuksie my.cnf). Cztery wpisy decydują o pracy w sieci:
port=3306
numer portu, na którym serwer nasłuchuje
bind-address=127.0.0.1
serwer przyjmuje połączenia tylko z tego komputera, 0.0.0.0 otwiera go na sieć
max_connections=151
ilu klientów może być połączonych naraz
character-set-server=utf8mb4
zestaw znaków, przy którym polskie litery zapisują się poprawnie
Druga połowa konfiguracji to konta. Każdy użytkownik dostaje własne konto (CREATE USER) i uprawnienia nadane poleceniem GRANT wyłącznie do tej bazy i tych operacji, których naprawdę potrzebuje; w phpMyAdmin robi to zakładka „Konta użytkowników". Zasada jest prosta: root zostaje kontem lokalnym z hasłem (poza egzaminem, gdzie arkusz każe zostawić hasło puste), a aplikacja dostaje osobne konto z prawami tylko do swojej bazy. Szerzej rozwija to lekcja o użytkownikach i uprawnieniach. Po każdej zmianie w my.ini usługę MySQL trzeba zatrzymać i uruchomić ponownie, bo plik czytany jest tylko przy starcie.
Aktualizacja SZBD
Aktualizacja idzie zawsze w tej samej kolejności. Najpierw kopia zapasowa całej bazy, w MySQL narzędziem mysqldump albo eksportem z phpMyAdmin (opisuje to lekcja o skryptach, imporcie i eksporcie). Potem sprawdzenie, co zmieniło się między wersjami, bo nowsze wydania bywają ostrzejsze wobec starych zapytań. Następnie instalacja nowej wersji: XAMPP nie aktualizuje się w miejscu, więc nowe wydanie instaluje się obok, a katalog htdocs i bazy przenosi się ręcznie, bazy przez eksport i import. Przy samodzielnym MySQL albo MariaDB po podmianie plików uruchamia się mysql_upgrade, które porządkuje tabele systemowe. Na koniec test: aplikacja musi się połączyć i pokazać dane. Pułapka: aktualizacja bez wcześniejszej kopii zapasowej to jedyny błąd z tej listy, którego nie da się cofnąć.
phpMyAdmin
phpMyAdmin to aplikacja WWW napisana w PHP, która obsługuje serwer MySQL przez przeglądarkę. Zastępuje polecenia wpisywane w konsoli klikaniem, ale robi dokładnie to samo: wysyła do serwera zapytania SQL. Umie zakładać i usuwać bazy oraz tabele, pokazywać strukturę kolumn, rysować powiązania w Projektancie, wykonać dowolne polecenie w zakładce SQL, wczytywać i zapisywać pliki w zakładkach Import oraz Eksport, prowadzić konta w zakładce Konta użytkowników, a w zakładce Operacje zmienić nazwę tabeli albo ją skopiować.
Zamiast niego można użyć programu MySQL Workbench, DBeaver, HeidiSQL albo klienta konsolowego mysql -u root -p. Na egzaminie i tak stoi phpMyAdmin, bo jest częścią XAMPP.
Typowa droga w zadaniu praktycznym: założenie nowej bazy, import pliku .sql z materiałów, sprawdzenie tabel, wykonanie kwerend w zakładce SQL i zrzut ekranu z wynikiem. Kolejne kroki importu i eksportu opisuje lekcja o skryptach, imporcie i eksporcie. Na egzaminie
W teście pytania z tej lekcji są krótkie i słownikowe. Skrót DBMS to system zarządzania bazą danych, czyli SZBD. Narzędzie wbudowane w XAMPP do zarządzania bazą danych to phpMyAdmin, a nie Apache (serwer WWW) ani MySQL Workbench (osobny program spoza pakietu). Lokalny SZBD udostępnia bazę tylko na jednym komputerze. Niezbędny mechanizm SZBD, o który pyta bank, to wielodostępność danych. Funkcja pg_connect w PHP łączy z PostgreSQL, a nie z MySQL. Polecenia BACKUP DATABASE i RESTORE DATABASE pochodzą z Microsoft SQL Server.
W zadaniu praktycznym schemat jest zawsze ten sam: uruchom XAMPP Control Panel, wystartuj Apache i MySQL, wejdź na localhost/phpmyadmin, zaloguj się jako root bez hasła, załóż bazę o nazwie podanej w arkuszu (często egzamin) i zaimportuj do niej plik z materiałów. Dopiero potem zaczyna się SQL. Jeżeli Apache albo MySQL nie chce wystartować, sprawdź zajęte porty, zanim zaczniesz instalować cokolwiek od nowa.
Ściąga
SZBD (DBMS)
program zarządzający bazami: SQL, wielodostęp, uprawnienia, kopie
serwerowy kontra lokalny
serwerowy pracuje po sieci na porcie, lokalny tylko na jednym komputerze
MySQL i MariaDB
port 3306, XAMPP, hostingi WWW
PostgreSQL
port 5432, w PHP funkcja pg_connect
MS SQL Server
port 1433, BACKUP DATABASE, RESTORE DATABASE
SQLite
jeden plik, bez serwera, telefony i przeglądarki
XAMPP
Apache, MySQL (MariaDB), PHP, phpMyAdmin, Perl
adres panelu bazy
http://localhost/phpmyadmin/
konto egzaminacyjne
root bez hasła
katalog na skrypty PHP
C:\xampp\htdocs
plik konfiguracyjny MySQL
C:\xampp\mysql\bin\my.ini
ustawienia dla wielu użytkowników
port, bind-address, max_connections, utf8mb4
kolejność aktualizacji
kopia zapasowa, sprawdzenie zmian, instalacja, test
Pobierz ściągę PDF