MySQL

Popularny, otwartoźródłowy relacyjny system zarządzania bazą danych. Szeroko stosowany w aplikacjach webowych, np. w stosie LAMP.

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.