Jak nainstalovat MariaDB na Ubuntu (20.04 / 22.04 / 24.04) – Kompletní průvodce nastavením a zabezpečením

目次

Nejrychlejší způsob instalace MariaDB na Ubuntu (podporováno 20.04 / 22.04 / 24.04)

Pokud chcete okamžitě začít používat MariaDB na Ubuntu, stačí postupovat podle níže uvedených kroků a dokončit instalaci i ověření spuštění. Pokud nemáte konkrétní důvod, instalace z výchozího repozitáře Ubuntu je nejbezpečnější a nejstabilnější možností.

① Aktualizace informací o balíčcích

sudo apt update
sudo apt upgrade -y

② Instalace MariaDB

sudo apt install -y mariadb-server mariadb-client

Během instalace není vyžadována žádná speciální konfigurace. Po dokončení se služba MariaDB spustí automaticky.

③ Ověření, že MariaDB běží

sudo systemctl status mariadb

Pokud se zobrazí active (running), MariaDB běží správně.

④ Povolení automatického spuštění (obvykle není vyžadováno, ale doporučuje se ověřit)

sudo systemctl enable mariadb

⑤ Připojení k MariaDB a ověření funkčnosti

sudo mysql

Pokud uvidíte následující výzvu, instalace proběhla úspěšně:

MariaDB [(none)]>

Pro ukončení zadejte exit;.

Povinná bezpečnostní inicializace po instalaci

Ihned po instalaci má MariaDB nastavená jen minimální bezpečnostní opatření. Ujistěte se, že spustíte následující příkaz:

sudo mysql_secure_installation

Obecně se doporučují následující odpovědi:

  • Odstranit anonymní uživatele → Y
  • Zakázat vzdálené přihlášení rootem → Y
  • Odstranit testovací databázi → Y
  • Znovu načíst tabulky oprávnění → Y

Tím je dokončena konfigurace zabezpečeného prostředí MariaDB na Ubuntu.

Verze MariaDB instalovaná podle verze Ubuntu

  • Ubuntu 20.04 → MariaDB 10.3 series
  • Ubuntu 22.04 → MariaDB 10.6 series
  • Ubuntu 24.04 → MariaDB 10.11 series (LTS)

Pro většinu uživatelů je výchozí verze Ubuntu dostačující. Oficiální repozitář zvažte jen v případě, že potřebujete nejnovější funkce.

Rychlé kontroly, pokud instalace selže nebo služba nespustí

  • Zkontrolujte chyby pomocí sudo systemctl status mariadb
  • Zobrazte podrobné logy pomocí sudo journalctl -xe
  • Zkontrolujte volné místo na disku pomocí df -h

Ve většině případů je problém buď nedostatek místa na disku, nebo překlep v konfiguračním souboru.

Výběr správné verze MariaDB pro vaši verzi Ubuntu

Při používání MariaDB na Ubuntu je v většině případů nejbezpečnější verze z výchozího repozitáře. Bezpečnostní aktualizace a kompatibilita závislostí jsou udržovány automaticky, což je ideální pro začátečníky i pokročilejší uživatele.

Verze z výchozího repozitáře Ubuntu (doporučeno)

  • Ubuntu 20.04 → MariaDB 10.3 series
  • Ubuntu 22.04 → MariaDB 10.6 series
  • Ubuntu 24.04 → MariaDB 10.11 series (LTS)

Pokud nemáte konkrétní požadavek, jsou tyto verze naprosto praktické pro produkční nasazení.

Pokud potřebujete nejnovější verzi (přidejte oficiální repozitář MariaDB)

Pokud potřebujete nejnovější funkce, můžete přidat oficiální repozitář MariaDB. Vzhledem k tomu, že apt-key je zastaralý, používá se metoda signed-by.

① Uložení GPG klíče

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② Zkontrolujte kódové jméno vaší verze Ubuntu

lsb_release -cs

Příklady:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ Přidání oficiálního repozitáře (příklad: série 10.11)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ Aktualizace balíčků a instalace

sudo apt update
sudo apt install mariadb-server mariadb-client

Poznámky při používání oficiálního repozitáře

  • Můžete využívat novější funkce než ve výchozí verzi Ubuntu
  • Existuje budoucí riziko konfliktů závislostí
  • Pro produkční servery je nutné důkladné testování

Pro produkční prostředí si jasně rozhodněte, zda dáváte přednost stabilitě nebo nejnovějším funkcím.

Jak zkontrolovat aktuálně nainstalovanou verzi MariaDB

mysql --version

Příklad:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

Explicitním potvrzením verze se ladění a migrace výrazně usnadní.

Kompletní průvodce počátečním nastavením zabezpečení MariaDB (mysql_secure_installation)

Ihned po instalaci MariaDB jsou použita pouze minimální bezpečnostní nastavení. Pro bezpečný provoz nezapomeňte spustit následující příkaz:

sudo mysql_secure_installation

Po spuštění se zobrazí několik výzev. Ve většině případů se doporučují následující odpovědi.

Doporučené odpovědi

  • Zadejte aktuální heslo pro root: → Stiskněte Enter (není nastaveno při prvním spuštění)
  • Přepnout na autentizaci unix_socket? → Y (Doporučeno na Ubuntu)
  • Změnit heslo root? → N (Pokud používáte autentizaci unix_socket)
  • Odstranit anonymní uživatele? → Y
  • Zakázat vzdálené přihlášení root? → Y
  • Odstranit testovací databázi a přístup k ní? → Y
  • Načíst tabulky oprávnění znovu nyní? → Y

Tím je základní zabezpečení dokončeno.

Proč se nemůžete přihlásit jako root (chyba Access Denied)

Na Ubuntu používá uživatel root ve výchozím nastavení autentizaci unix_socket. Proto standardní přihlášení pomocí hesla nebude fungovat.

Příklad symptomu

mysql -u root -p

Access denied for user 'root'@'localhost'

Správná metoda přihlášení (výchozí na Ubuntu)

sudo mysql

Toto je nejbezpečnější a doporučená metoda.

Jak změnit root na autentizaci heslem (pouze pokud je to nutné)

Změňte metodu autentizace pouze v případě, že se musíte jako root připojovat z externích nástrojů nebo aplikací.

① Připojení k MariaDB

sudo mysql

② Změna autentizačního pluginu

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';

FLUSH PRIVILEGES;

③ Potvrzení změny

SELECT user, host, plugin FROM mysql.user;

Pokud je zobrazena mysql_native_password, změna byla úspěšná.

Jak zkontrolovat aktuální metodu autentizace

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

Hlavní metody autentizace:

  • unix_socket → výchozí na Ubuntu, zabezpečené
  • mysql_native_password → autentizace pomocí hesla

Pokud neexistuje konkrétní důvod, je nejbezpečnější nechat root používat autentizaci unix_socket.

Časté chyby a řešení

CHYBA 1698 (28000): Access denied for user ‚root’@’localhost‘

  • Příčina: Pokus o přihlášení pomocí hesla
  • Řešení: Přihlaste se pomocí sudo mysql

mysql_secure_installation nenalezen

  • Zkontrolujte pomocí which mysql_secure_installation
  • Pokud není nainstalováno, spusťte sudo apt install mariadb-server

Nastavení kódování znaků na utf8mb4 (prevence poškozeného textu)

Pro bezpečnou práci s vícejazyčným textem a emoji v MariaDB se doporučuje používat utf8mb4. Bez tohoto nastavení můžete narazit na problémy s kódováním nebo ztrátu dat.

① Úprava konfiguračního souboru

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Přidejte nebo upravte následující řádky v sekci [mysqld]:

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② Restart MariaDB

sudo systemctl restart mariadb

③ Ověření nastavení

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

Pokud je zobrazeno utf8mb4, konfigurace byla úspěšná.

Specifikace utf8mb4 při vytváření databáze (doporučeno)

Pokud chcete explicitně definovat znaková sada bez ohledu na globální nastavení, uveďte ji při vytváření databáze.

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

Všechny tabulky vytvořené v této databázi budou dědit utf8mb4.

Vytvoření uživatele aplikace a udělení oprávnění

V produkčních prostředích nikdy nepoužívejte uživatele root pro připojení aplikací. Vytvořte dedikovaného uživatele a udělte pouze nezbytná minimální oprávnění.

① Přihlášení k MariaDB

sudo mysql

② Vytvoření uživatele (lokální připojení)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

③ Udělení oprávnění k databázi

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

Vytvoření uživatele pro vzdálený přístup (pouze pokud je potřeba)

Nastavte toto pouze v případě, že potřebujete připojení z externího serveru nebo cloudového prostředí.

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Poznámka: Zástupný znak “%” umožňuje připojení z libovolného hostitele. V produkčních prostředích je bezpečnější zadat konkrétní IP adresu.

Jak zkontrolovat aktuální uživatele a oprávnění

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

Časté chyby oprávnění a řešení

Přístup odmítnut pro uživatele ‚app_user‘

  • Nesprávná specifikace hostitele (rozdíl mezi localhost a %)
  • Nebyl proveden příkaz FLUSH PRIVILEGES
  • Nesprávný název databáze při připojení

Neznámá databáze

  • Překlep v názvu databáze
  • Pro cílovou databázi nebyla udělena žádná oprávnění

Jak povolit vzdálená připojení v MariaDB (oprava při selhání externího přístupu)

Ve výchozím nastavení MariaDB umožňuje pouze lokální připojení. Pokud potřebujete připojení z externího serveru nebo cloudového prostředí, nakonfigurujte následující nastavení.

① Změna bind-address

Upravte konfigurační soubor:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Najděte následující řádek:

bind-address = 127.0.0.1

Pro povolení externích připojení změňte na:

bind-address = 0.0.0.0

Po uložení restartujte MariaDB:

sudo systemctl restart mariadb

② Otevřete port 3306 ve firewallu

Pokud používáte UFW na Ubuntu:

sudo ufw allow 3306
sudo ufw reload

Pro zvýšení bezpečnosti uveďte zdrojovou IP adresu:

sudo ufw allow from 192.168.1.10 to any port 3306

③ Vytvoření uživatele pro vzdálený přístup

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Pro vyšší bezpečnost:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';

Kontrolní seznam, pokud se nemůžete připojit externě

1. Běží MariaDB?

sudo systemctl status mariadb

2. Naslouchá port 3306?

sudo ss -tulnp | grep 3306

Pokud zobrazí 0.0.0.0:3306, naslouchá správně na všech rozhraních.

3. Pokud používáte cloudové prostředí (AWS / GCP / VPS)

  • Ujistěte se, že port 3306 je otevřen ve skupině zabezpečení
  • Potvrďte, že žádný externí firewall neblokuje připojení

4. Příčiny podle chybové zprávy

Nelze se připojit k MySQL serveru

  • Port je uzavřen
  • bind-address nebyl změněn
  • Firewall blokuje připojení

Přístup odmítnut pro uživatele

  • Nesprávná specifikace hostitele uživatele
  • Nesprávné heslo
  • Oprávnění nebyla udělena

Připojení vypršelo

  • Bezpečnostní nastavení na straně cloudu
  • Problémy s routováním sítě

Důležité bezpečnostní poznámky

  • Vyhněte se používání “%” v produkčních prostředích
  • Používejte VPN přístup, kdykoli je to možné
  • Zvažte povolení SSL/TLS připojení
  • Nikdy nepovolujte vzdálené přihlášení root

Řešení problémů, když MariaDB selže při spuštění (chyba selhání)

① Zkontrolujte stav služby

sudo systemctl status mariadb

② Zkontrolujte podrobné logy

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ Časté příčiny

  • Chyby syntaxe konfiguračního souboru
  • Nedostatek místa na disku
  • Konflikt portu (MySQL již běží)

④ Zkontrolujte volné místo na disku

df -h

Shrnutí příčin chyby přístupu odmítnut

  • Nesprávné heslo
  • Nesprávná specifikace hostitele (rozdíl mezi localhost a %)
  • Nebyl proveden příkaz FLUSH PRIVILEGES
  • Pokus o standardní přihlášení jako root (vyžaduje sudo mysql)

Základní vylepšení výkonu (pro začátečníky)

Advanced tuning is not required, but at minimum, confirm the following settings.

① Povolit protokol pomalých dotazů

Add the following to 50-server.cnf:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Restart MariaDB:

sudo systemctl restart mariadb

② Zkontrolovat využití indexů

Slow queries may be missing proper indexes.

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ Zkontrolovat zdroje serveru

top
htop

If memory is insufficient, consider upgrading your server plan.

Často kladené otázky (FAQ)

How can I lock the MariaDB version on Ubuntu 22.04?

Use apt-mark hold mariadb-server.

How do I reset the root password if I forgot it?

You can reset it by starting in safe mode and reconfiguring the password. See our dedicated guide for detailed steps.

How do I change the MariaDB port number?

Modify 50-server.cnf to something like port = 3307, then restart the service.

Závěr: Bezpečné používání MariaDB na Ubuntu

  • Using the default repository version is the safest option
  • Always run mysql_secure_installation
  • Never use root for application connections
  • Enable remote access only when necessary
  • When troubleshooting, checking logs is the top priority

By following these steps, you can build a secure and production-ready MariaDB environment on Ubuntu.