Cel
Ta dokumentacja wyjaśnia od A do Z, jak zainstalować MySQL 8.4 na Debian 13 oficjalną metodą Oracle przez APT, a następnie jak:
- sprawdzić, czy MySQL działa
- zabezpieczyć instancję
- dostosować podstawową konfigurację
- przenieść datadir w razie potrzeby
- zarządzać usługą za pomocą
systemd
Ważna informacja o Debian 13
Na dzień 13 kwietnia 2026 repozytorium APT MySQL publikuje pakiety dla Debian 13 trixie, w tym mysql-8.4-lts.
- Debian 13 może być używany bezpośrednio z repozytorium Oracle MySQL
- zalecana metoda pozostaje repozytorium APT MySQL
- nie ma potrzeby korzystania z natywnych pakietów Debian, jeśli celem jest Oracle MySQL 8.4
Zalecana architektura
Dla czystej instalacji:
- minimalny OS Debian 13
- poprawny hostname
- stałe IP
- spójna strefa czasowa
- osobny dysk danych, jeśli maszyna jest przeznaczona do produkcji
Rozsądna minimalna konfiguracja:
| Komponent | Minimum |
|---|---|
| vCPU | 2 |
| RAM | 4 GB |
| Dysk systemowy | 20 GB |
| Dysk danych | 50 GB+ (osobny datadir) |
1. Przygotowanie Debian 13
apt-get update
apt-get -y upgrade
apt-get install -y \
curl wget gnupg lsb-release ca-certificates \
apt-transport-https net-tools dnsutils sudo
Uwaga: pakiet software-properties-common nie istnieje na Debian 13 (to pakiet Ubuntu). Nie uwzględniaj go.
timedatectl set-timezone Europe/Paris
cat /etc/os-release
Sprawdź, czy VERSION_CODENAME=trixie.
2. Dodanie repozytorium APT MySQL Oracle
Opcja A — Z mysql-apt-config (metoda oficjalna)
cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb
dpkg -i mysql-apt-config_0.8.36-1_all.deb
apt-get update
Opcja B — Ręczny plik APT (zalecana)
Ważne: klucz GPG RPM-GPG-KEY-mysql-2023 wygasł w październiku 2025. Użyj RPM-GPG-KEY-mysql-2025.
mkdir -p /etc/apt/keyrings
wget -O /etc/apt/keyrings/mysql.gpg https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
cat >/etc/apt/sources.list.d/mysql.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian/ trixie mysql-8.4-lts mysql-tools
EOF
apt-get update
3. Instalacja MySQL 8.4
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
Instaluje to serwer (mysql-community-server), klienta (mysql-community-client), wtyczki i wspólne pliki.
dpkg -l | grep -E 'mysql-(server|client|community)'
4. Sprawdzenie usługi
systemctl status mysql --no-pager
systemctl is-active mysql
systemctl is-enabled mysql
mysql --version
mysql -Nse "SELECT VERSION();"
5. Pierwsze połączenie
Z DEBIAN_FRONTEND=noninteractive, MySQL 8.4 na Debian 13 konfiguruje uwierzytelnianie root przez Unix socket (bez hasła):
mysql
lub:
sudo mysql
6. Zabezpieczenie instancji
Przez oficjalne narzędzie:
mysql_secure_installation
Lub ręcznie:
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
7. Lokalizacja plików
| Plik | Ścieżka |
|---|---|
| Konfiguracja | /etc/mysql/ |
| Plik binarny serwera | /usr/sbin/mysqld |
| Klient | /usr/bin/mysql |
| Datadir | /var/lib/mysql |
| Usługa systemd | mysql.service |
| Konfiguracja niestandardowa | /etc/mysql/mysql.conf.d/zz-*.cnf |
8. Zalecana podstawowa konfiguracja
Dodaj dedykowany plik zamiast modyfikować istniejące:
cat >/etc/mysql/mysql.conf.d/zz-custom.cnf <<'EOF'
[mysqld]
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
skip_name_resolve = ON
max_connections = 200
innodb_buffer_pool_size = 1G
log_error_verbosity = 2
EOF
systemctl restart mysql
Weryfikacja:
mysql -Nse "SHOW VARIABLES LIKE 'bind_address';"
mysql -Nse "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"
9. Otwarcie portu 3306
Jeśli serwer ma akceptować zdalne połączenia:
CREATE USER 'admin'@'10.68.68.%' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'10.68.68.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ss -lntp | grep 3306
10. Przeniesienie datadir do /srv/mysql
systemctl stop mysql
mkdir -p /srv/mysql
rsync -aHAX /var/lib/mysql/ /srv/mysql/
chown -R mysql:mysql /srv/mysql
chmod 750 /srv/mysql
cat >/etc/mysql/mysql.conf.d/zz-datadir.cnf <<'EOF'
[mysqld]
datadir = /srv/mysql
EOF
systemctl start mysql
mysql -Nse "SELECT @@datadir;"
Oczekiwany wynik: /srv/mysql/
11. Włączenie performance_schema
Już aktywny domyślnie na MySQL 8.4.8:
mysql -Nse "SELECT @@performance_schema;"
W razie potrzeby:
cat >/etc/mysql/mysql.conf.d/zz-performance.cnf <<'EOF'
[mysqld]
performance_schema = ON
EOF
systemctl restart mysql
12. Tworzenie użytkownika administracyjnego
Unikaj używania root do wszystkiego:
CREATE USER 'dba'@'10.68.68.%' IDENTIFIED BY 'VeryStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.68.68.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
13. Kopia zapasowa konfiguracji
tar czf /root/mysql-config-backup.tar.gz /etc/mysql
dpkg -l | grep mysql > /root/mysql-packages.txt
14. Typowe polecenia eksploatacyjne
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
journalctl -u mysql -n 100 --no-pager
15. Weryfikacja końcowa
systemctl is-active mysql
mysql --version
mysql -Nse "SELECT VERSION();"
mysql -Nse "SELECT @@datadir;"
mysql -Nse "SELECT @@performance_schema;"
ss -lntp | grep 3306
16. Częste pułapki
- Nie mieszać MariaDB i MySQL Oracle — wybrać jedną filię
- Wygasły klucz GPG —
RPM-GPG-KEY-mysql-2023wygasł -> użyćRPM-GPG-KEY-mysql-2025 software-properties-commonnieistniejący — specyficzny dla Ubuntu, niedostępny na Debian 13- Złe źródło APT — użyć
trixie, niebookworm - Bezpośrednia modyfikacja
mysqld.cnf— preferować plikzz-*.cnfw/etc/mysql/mysql.conf.d/ - Przeniesienie datadir bez zatrzymania MySQL — zawsze zatrzymać usługę przed kopią
- Wystawienie 3306 bez filtrowania — ograniczyć hosty, filtrować na firewallu
Procedura zwarta
apt-get update && apt-get -y upgrade
apt-get install -y wget gnupg ca-certificates curl sudo
mkdir -p /etc/apt/keyrings
wget -O /etc/apt/keyrings/mysql.gpg https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
cat >/etc/apt/sources.list.d/mysql.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian/ trixie mysql-8.4-lts mysql-tools
EOF
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
systemctl enable --now mysql
mysql -e "DELETE FROM mysql.user WHERE User=''; DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES;"
Wynik przetestowanej instalacji
Instalacja przeprowadzona 13 kwietnia 2026 na VM Proxmox:
- VM: VMID 115,
mysql84-deb13, IP10.68.68.190 - OS: Debian 13.4 (trixie), kernel 6.12.74
- MySQL: 8.4.8 (MySQL Community Server - GPL)
- Usługa: aktywna, włączona przy starcie
- Konfiguracja: bind 0.0.0.0, skip_name_resolve ON, innodb_buffer_pool_size 1G, max_connections 200
- performance_schema: aktywny
- Port 3306: nasłuchuje na 0.0.0.0
Podsumowanie
Na Debian 13 właściwą metodą instalacji MySQL 8.4 jest użycie repozytorium APT Oracle MySQL.
Poprawki w stosunku do początkowej dokumentacji:
- Klucz GPG:
RPM-GPG-KEY-mysql-2023wygasł -> użyćRPM-GPG-KEY-mysql-2025 - Wymagania wstępne: usunąć
software-properties-common(nieistniejący na Debian 13) - Połączenie root: z
DEBIAN_FRONTEND=noninteractive, root łączy się przez socket bez hasła - performance_schema: już aktywny domyślnie na MySQL 8.4.8
Opublikowano (0)
Nieprawidłowy adres e-mail.
Autor