🎯 Cele lekcji

📄

1. Plik konfiguracyjny my.cnf / my.ini

Konfiguracja serwera MySQL przechowywana jest w pliku tekstowym:

SystemLokalizacja pliku
Linux (Debian/Ubuntu)/etc/mysql/my.cnf lub /etc/mysql/mariadb.conf.d/50-server.cnf
Linux (CentOS/RHEL)/etc/my.cnf
WindowsC:\ProgramData\MySQL\MySQL Server 8.0\my.ini
macOS (Homebrew)/opt/homebrew/etc/my.cnf

Struktura pliku — sekcje:

# Konfiguracja serwera MySQL / MariaDB
# ========================================

[mysqld]
# Sekcja dla procesu serwera (mysqld)
port                   = 3306
bind-address           = 127.0.0.1
character-set-server   = utf8mb4
collation-server       = utf8mb4_polish_ci
max_connections        = 150
default-storage-engine = InnoDB

[client]
# Sekcja dla klienta mysql (linia komend)
port                   = 3306
default-character-set  = utf8mb4

[mysql]
# Sekcja dla narzędzia mysql CLI
no-auto-rehash
Po każdej zmianie pliku konfiguracyjnego wymagane jest ponowne uruchomienie serwera:
Linux: sudo systemctl restart mysql
Windows: Menedżer zadań → Usługi → MySQL → Uruchom ponownie
⚙️

2. Ważne parametry konfiguracji

ParametrDomyślna wartośćOpis
port 3306 Port TCP, na którym serwer nasłuchuje połączeń
bind-address 127.0.0.1 Adres IP do nasłuchiwania. 0.0.0.0 = wszystkie interfejsy (sieciowy dostęp)
max_connections 151 Maksymalna liczba jednoczesnych połączeń klientów
character-set-server utf8mb4 Domyślne kodowanie znaków dla nowych baz i tabel (utf8mb4 = pełne UTF-8 z emoji)
collation-server utf8mb4_general_ci Domyślne porównywanie (sortowanie) ciągów. _polish_ci = polskie znaki
default-storage-engine InnoDB Domyślny silnik składowania dla nowych tabel
innodb_buffer_pool_size 128M Rozmiar bufora InnoDB — zwiększ do 70% RAM dla lepszej wydajności
query_cache_size 0 (wyłączone w 8.0) Rozmiar pamięci podręcznej zapytań (usunięte w MySQL 8)
🔧

3. Silniki składowania: InnoDB vs MyISAM

CechaInnoDBMyISAM
Transakcje✅ Tak (ACID)❌ Nie
Klucze obce (FK)✅ Tak❌ Nie
BlokowanieNa poziomie wiersza (row-level)Na poziomie tabeli (table-level)
Wydajność INSERT/UPDATEDobraSzybsza dla prostych operacji
Wydajność SELECTDobraSzybszy dla SELECT na pełnej tabeli
AwariaAutomatyczne odtwarzanie (crash recovery)Może wymagać naprawy tabel
Kiedy używać?Prawie zawsze — domyślny wybórTabele tylko do odczytu, archiwa (rzadko)
Zawsze używaj InnoDB jako domyślnego silnika. MyISAM jest starszy i nie obsługuje transakcji ani kluczy obcych — co czyni go nieprzydatnym dla większości aplikacji.
📊

4. Monitorowanie serwera — SHOW VARIABLES, SHOW STATUS

-- Sprawdź aktualną wartość parametru
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'character%';      -- wildcard %
SHOW VARIABLES LIKE '%engine%';

-- Wyświetl wszystkie zmienne systemowe
SHOW VARIABLES;

-- Statystyki serwera (od uruchomienia)
SHOW STATUS LIKE 'Connections';
SHOW STATUS LIKE 'Threads_connected';  -- aktywne połączenia
SHOW STATUS;

-- Lista aktywnych połączeń/procesów
SHOW PROCESSLIST;

-- Zmień parametr bez restartu (tymczasowo)
SET GLOBAL max_connections = 200;
SET SESSION character_set_client = 'utf8mb4';
SET GLOBAL zmienia parametr dla całego serwera (do restartu). SET SESSION zmienia tylko dla bieżącego połączenia.
✏️

Zadania interaktywne

Zadanie 1Quiz: który silnik obsługuje transakcje i klucze obce?
  • MyISAM
  • InnoDB
  • MEMORY
  • CSV
Zadanie 2Dopasuj parametr konfiguracji do opisu
Maksymalna liczba jednoczesnych połączeń
Adres IP, na którym serwer nasłuchuje
Domyślne kodowanie znaków nowych baz danych
Numer portu TCP serwera (domyślnie 3306)
Zadanie 3Uzupełnij plik konfiguracyjny my.cnf

Uzupełnij brakujące wartości w pliku konfiguracyjnym:

[mysqld]
port                 =
bind-address         =
character-set-server =
default-storage-engine =

📌 Zapamiętaj