MySQL to otwartoźródłowy, relacyjny system zarządzania bazą danych (RDBMS), w którym dane trzymasz w tabelach złożonych z kolumn i wierszy, a komunikujesz się z nimi za pomocą języka SQL. Powstał w 1995 roku, dziś rozwija go Oracle, a w praktyce jest jednym z domyślnych wyborów wszędzie tam, gdzie aplikacja musi gdzieś zapisać użytkowników, zamówienia czy posty na blogu. To ten klocek, który napędza ogromną część internetu, a o którego istnieniu większość ludzi nie ma pojęcia.
Jak to działa i do czego służy
MySQL działa jako serwer: uruchamiasz proces (demon mysqld), który nasłuchuje na porcie (domyślnie 3306), a Twoja aplikacja łączy się z nim jako klient. Wysyłasz zapytanie SQL, serwer je przetwarza, sięga do plików z danymi i odsyła wynik. Dzięki silnikowi InnoDB (domyślny od MySQL 5.5) dostajesz transakcje, czyli zasady ACID oraz klucze obce pilnujące spójności między tabelami.
Najczęściej spotkasz MySQL w aplikacjach webowych. To „M” w klasycznym stosie LAMP (Linux, Apache, MySQL, PHP) i fundament pod WordPressa, na którym stoją miliony stron. Skaluje się od malutkiej bazy na współdzielonym hostingu po klastry replikacji obsługujące ruch w dużych serwisach.
Przykład z praktyki
Załóżmy, że stawiasz bloga. Logujesz się do bazy z linii poleceń i tworzysz tabelę na wpisy:
mysql -u root -p— wchodzisz do konsoli klienta,CREATE DATABASE blog;— tworzysz bazę,CREATE TABLE posts (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), body TEXT);— definiujesz strukturę,SELECT * FROM posts WHERE title LIKE '%MySQL%';— wyciągasz dane.
Do klikania zamiast pisania komend masz phpMyAdmin albo MySQL Workbench — graficzne narzędzia, w których podejrzysz tabele i odpalisz zapytania bez wkuwania składni na pamięć.
Częste błędy i mity
Po pierwsze: MySQL to nie SQL. SQL to język zapytań (standard), a MySQL to konkretny serwer, który ten język rozumie — podobnie jak PostgreSQL czy SQLite. Po drugie, nie myl MySQL z MariaDB: MariaDB to fork stworzony przez oryginalnego autora po przejęciu MySQL przez Oracle, w dużej mierze zgodny, ale to osobny projekt.
Z grzechów początkujących: trzymanie hasła root bez hasła albo wystawianie portu 3306 na cały świat (zapraszasz wtedy boty na herbatkę), brak indeksów na kolumnach używanych w WHERE (zapytania mielą się wtedy w nieskończoność) oraz mylenie kodowania — używaj utf8mb4, a nie starego utf8, jeśli nie chcesz stracić emoji i części znaków.
Pojęcia powiązane
SQL, RDBMS, InnoDB, transakcje ACID, indeks, klucz obcy, PostgreSQL, MariaDB, SQLite, stos LAMP, phpMyAdmin, replikacja.