Opisać kluczowe parametry konfiguracji serwera MySQL
Rozróżnić silniki składowania: InnoDB vs MyISAM
Korzystać z poleceń SHOW VARIABLES i SHOW STATUS
📄
1. Plik konfiguracyjny my.cnf / my.ini
Konfiguracja serwera MySQL przechowywana jest w pliku tekstowym:
System
Lokalizacja pliku
Linux (Debian/Ubuntu)
/etc/mysql/my.cnf lub /etc/mysql/mariadb.conf.d/50-server.cnf
Linux (CentOS/RHEL)
/etc/my.cnf
Windows
C:\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
Parametr
Domyś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
Cecha
InnoDB
MyISAM
Transakcje
✅ Tak (ACID)
❌ Nie
Klucze obce (FK)
✅ Tak
❌ Nie
Blokowanie
Na poziomie wiersza (row-level)
Na poziomie tabeli (table-level)
Wydajność INSERT/UPDATE
Dobra
Szybsza dla prostych operacji
Wydajność SELECT
Dobra
Szybszy dla SELECT na pełnej tabeli
Awaria
Automatyczne odtwarzanie (crash recovery)
Może wymagać naprawy tabel
Kiedy używać?
Prawie zawsze — domyślny wybór
Tabele 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ść parametruSHOW VARIABLES LIKE'max_connections';
SHOW VARIABLES LIKE'character%'; -- wildcard %SHOW VARIABLES LIKE'%engine%';
-- Wyświetl wszystkie zmienne systemoweSHOW VARIABLES;
-- Statystyki serwera (od uruchomienia)SHOW STATUS LIKE'Connections';
SHOW STATUS LIKE'Threads_connected'; -- aktywne połączeniaSHOW STATUS;
-- Lista aktywnych połączeń/procesówSHOW 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 =