Prejsť na obsah
Aktuálny kupón:zľava 10 %Uplatniť v objednávke

MariaDB na VPS: inštalácia, zabezpečenie, používatelia a vzdialený prístup

Nainštalujete MariaDB jedným kliknutím v zákazníckom účte alebo ručne, zabezpečíte ju, vytvoríte databázu a používateľa a bezpečne sa k nej pripojíte z počítača cez SSH tunel.

  • pokročilý
  • ~25 min
  • Aktualizované 9. 10. 2026

MariaDB je databázový server kompatibilný s MySQL. Používajú ho weby, herné servery, Discord boti aj pluginy. Ukážeme dve cesty k inštalácii, zabezpečenie, správu databáz a používateľov, bezpečný prístup z vášho počítača a zálohy.

Čo budete potrebovať

  • VPS u StormHostu s Ubuntu 24.04 alebo Debianom 13
  • Pre ručný postup pripojenie cez SSH ako root (návod)
  • Približne 25 minút

Ako to funguje#

MariaDB beží na VPS ako služba mariadb a v predvolenom stave prijíma spojenia iba z VPS samotného (adresa 127.0.0.1, port 3306, a lokálny socket). Aplikácie na rovnakom VPS sa tak pripoja, z internetu sa k databáze nedostane nikto. Tak to má zostať, kým prístup zvonku naozaj nepotrebujete.

Verzie sa líšia podľa systému: Ubuntu 24.04 inštaluje MariaDB 10.11, Debian 13 MariaDB 11.8. Pre postupy v tomto návode na rozdiele nezáleží.

Databázový používateľ root sa na Ubuntu aj Debiane overuje cez unix socket: do databázy sa ako root dostane iba ten, kto je na VPS prihlásený ako systémový root. Heslo sa tu neuhádne, pretože žiadne nie je.

Možnosť A: záložka Databázy v zákazníckom účte#

Najrýchlejšia cesta, bez príkazového riadka.

  1. V zákazníckom účte otvorte Moje služby, kliknite na VPS a prejdite na záložku Databázy.
  2. Ak na VPS žiadna databáza nebeží, uvidíte „Na VPS zatiaľ nebeží žiadny databázový server“. Kliknite na Nainštalovať MariaDB. Inštalácia beží na pozadí a zvyčajne trvá 1–⁠3 minúty, stránka sa sama obnoví.
  3. Kliknite na Pripojiť automaticky. Zákaznícky účet sa k databáze pripojí cez zabezpečené spojenie do VPS, databáza preto nemusí byť dostupná z internetu.
  4. Teraz máte k dispozícii podzáložky:
PodzáložkaČo v nej urobíte
DatabázyVytvoríte (Nová databáza) alebo zmažete databázu. Voľba „Založiť aj používateľa s rovnakým menom a plným prístupom“ rovno vytvorí používateľa s heslom.
PoužívateliaVytvoríte používateľa, pridáte mu prístup k databáze, vygenerujete nové heslo alebo ho zmažete.
PrehliadačPrezeráte tabuľky a ich riadky.
SQLSpustíte ľubovoľný SQL dopyt (Ctrl+Enter). Zobrazí sa najviac prvých 500 riadkov výsledku. Dopyty, ktoré mažú dáta, musíte potvrdiť.

Dôležité podrobnosti:

  • Názov databázy smie obsahovať iba písmená bez diakritiky, číslice a podčiarkovník a nesmie začínať číslicou.
  • Databáza sa vytvára s kódovaním utf8mb4 (podporuje celý Unicode vrátane emoji).
  • Po vytvorení používateľa sa heslo zobrazí iba raz („Uložte si prístupové údaje — heslo už znova neuvidíte“). Uložte si ho do správcu hesiel.
  • Voľba Povoliť pripojenie zvonku vytvorí používateľa, ktorý sa smie pripojiť odkiaľkoľvek (host %). Aby to fungovalo, musí MariaDB počúvať na verejnej adrese (bind-address) a port musí byť povolený vo firewalle. Postup je nižšie v kapitole Priamy prístup zvonku. Ak pripojenie zvonku nepotrebujete, voľbu nezaškrtávajte.

Servisný účet zákazníckeho účtu

Pri automatickom pripojení založíme v MariaDB účet stormhost_panel s plnými právami, ktorý sa smie prihlásiť iba z VPS samotného. Cez neho zákaznícky účet databázy spravuje. V zozname používateľov je označený ako systémový. Nemažte ho, inak sa záložka Databázy k databáze nepripojí. Odpojiť databázu od zákazníckeho účtu môžete tlačidlom Odpojiť, databázy na VPS zostanú bez zmeny.

Zvyšok návodu opisuje rovnaké veci z príkazového riadka. Hodí sa, keď chcete mať nad databázou plnú kontrolu, alebo potrebujete veci, ktoré záložka nedokáže (zálohy, ladenie, SSH tunel).

Možnosť B: ručná inštalácia#

Platí pre Ubuntu 24.04 aj Debian 13:

bash
apt update
apt -y install mariadb-server
  • apt update – načíta aktuálny zoznam balíkov.
  • apt -y install mariadb-server – nainštaluje databázový server aj klienta mariadb. Služba sa po inštalácii sama spustí a zapne po štarte VPS.

Overte, že beží:

bash
systemctl status mariadb
mariadb --version

Uvidíte Active: active (running) a číslo verzie (10.11 na Ubuntu, 11.8 na Debiane). Výpis systemctl zavriete klávesom q.

Zabezpečenie: mariadb-secure-installation#

Skript mariadb-secure-installation odstráni testovacie veci, ktoré v produkcii nemajú čo robiť. Spustite ho:

bash
mariadb-secure-installation

Odpovedajte podľa tabuľky:

OtázkaOdpoveďPrečo
Enter current password for root (enter for none):EnterRoot sa prihlasuje cez unix socket, heslo nemá. Skript vypíše OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n]nRoot už unix socket používa. Skript to sám napíše: „You already have your root account protected, so you can safely answer 'n'.“
Change the root password? [Y/n]nHeslo pre roota nepotrebujete, prihlási sa iba systémový root. Ak nejaký program výslovne vyžaduje heslo roota, vytvorte mu radšej vlastného používateľa.
Remove anonymous users? [Y/n]YAnonymný používateľ by umožnil prihlásenie bez mena.
Disallow root login remotely? [Y/n]YRoot sa smie prihlásiť iba z VPS, nie zo siete.
Remove test database and access to it? [Y/n]YZmaže databázu test, ku ktorej má prístup ktokoľvek.
Reload privilege tables now? [Y/n]YZmeny začnú platiť hneď.

Na konci uvidíte All done!.

Prihlásenie do konzoly MariaDB#

Ako root na VPS:

bash
mariadb

Objaví sa výzva MariaDB [(none)]>. Príkazy SQL končia bodkočiarkou ;. Konzolu opustíte príkazom exit.

Ako iný databázový používateľ:

bash
mariadb -u <UZIVATEL> -p
  • -u <UZIVATEL> – meno databázového používateľa.
  • -p – opýta sa na heslo (pri písaní sa nezobrazuje).

Pod bežným používateľom so sudo

Ak nie ste prihlásení ako root, ale ako bežný používateľ so sudo, spustite sudo mariadb. Príkaz mariadb -u root -p skončí chybou Access denied, pretože root sa heslom neprihlasuje.

Databáza a používateľ pre aplikáciu#

Každá aplikácia má mať vlastnú databázu a vlastného používateľa s právami iba k nej. Keď potom niekto aplikáciu napadne, dostane sa iba k jej dátam.

V konzole MariaDB (mariadb) spustite. Za <SILNE_HESLO> dosaďte heslo z generátora hesiel (iba písmená a číslice, aspoň 24 znakov):

SQL
CREATE DATABASE aplikace CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'aplikace'@'localhost' IDENTIFIED BY '<SILNE_HESLO>';
GRANT ALL PRIVILEGES ON aplikace.* TO 'aplikace'@'localhost';
SHOW GRANTS FOR 'aplikace'@'localhost';
PríkazČo robí
CREATE DATABASE aplikaceVytvorí databázu aplikace.
CHARACTER SET utf8mb4Kódovanie celého Unicode (slovenčina, emoji). Staršie utf8 v MariaDB zvládne iba 3-⁠bajtové znaky a emoji neuloží.
COLLATE utf8mb4_unicode_ciPravidlá radenia a porovnávania textu; ci = bez ohľadu na veľkosť písmen.
CREATE USER 'aplikace'@'localhost'Používateľ aplikace, ktorý sa smie pripojiť iba z VPS.
IDENTIFIED BY '…'Heslo používateľa.
GRANT ALL PRIVILEGES ON aplikace.*Všetky práva, ale iba k databáze aplikace (.* = všetky tabuľky).
SHOW GRANTS FOR …Vypíše, aké práva používateľ má (kontrola).

Práva prideľujte podľa toho, čo aplikácia potrebuje:

PrávaČo umožniaKedy ich dať
ALL PRIVILEGES ON db.*Všetko v jednej databáze vrátane zmien štruktúry.Bežná aplikácia, ktorá si sama vytvára tabuľky (WordPress, pluginy, boti).
SELECT, INSERT, UPDATE, DELETE ON db.*Iba čítanie a zápis dát, nie zmeny tabuliek.Aplikácia s hotovou štruktúrou; účet pre reporty.
SELECT ON db.*Iba čítanie.Štatistiky, exporty, náhľady.
ALL PRIVILEGES ON *.*Všetko na celom serveri.Iba správca, nikdy aplikácia.
WITH GRANT OPTIONSmie rozdávať práva ďalším.Iba nástroje, ktoré samy zakladajú databázy a používateľov (napríklad herný panel na vlastnom VPS).

Ďalšie užitočné príkazy:

SQL
SHOW DATABASES;
SELECT User, Host FROM mysql.user;
ALTER USER 'aplikace'@'localhost' IDENTIFIED BY '<NOVE_HESLO>';
REVOKE ALL PRIVILEGES ON aplikace.* FROM 'aplikace'@'localhost';
DROP USER 'aplikace'@'localhost';
  • SHOW DATABASES; – zoznam databáz.
  • SELECT User, Host FROM mysql.user; – zoznam používateľov a hostov, odkiaľ sa smú pripojiť.
  • ALTER USER … IDENTIFIED BY – zmení heslo.
  • REVOKE … – odoberie práva.
  • DROP USER … – zmaže používateľa (databáza zostane).

Mazanie databázy je nevratné

DROP DATABASE aplikace; zmaže databázu so všetkými tabuľkami a dátami bez ďalšieho potvrdenia. Pred zmazaním si urobte zálohu (kapitola Zálohy databázy).

Host pri používateľovi: odkiaľ sa smie pripojiť#

Používateľ v MariaDB nie je iba meno, ale dvojica meno + host. 'jan'@'localhost' a 'jan'@'%' sú dvaja rôzni používatelia s vlastným heslom aj právami.

HostOdkiaľ sa používateľ pripojíTypické použitie
localhostZ VPS cez socket alebo TCP na 127.0.0.1Aplikácie na rovnakom VPS. Odporúčaná predvolená voľba.
127.0.0.1Z VPS cez TCPAplikácie, ktoré sa pripájajú výhradne na 127.0.0.1.
198.51.100.25Iba z tejto IP adresyVáš počítač alebo iný server s pevnou IP.
172.18.0.%Z celého rozsahu (zástupný znak %)Kontajnery Dockeru na rovnakom VPS.
%OdkiaľkoľvekIba keď to inak nejde, a vždy s firewallom.

Prístup z vášho počítača#

Chcete sa na databázu pozrieť programom ako HeidiSQL alebo DBeaver? Máte dve možnosti. Odporúčame SSH tunel: databáza zostane z internetu nedostupná a spojenie je šifrované.

SSH tunel (odporúčané)#

SSH tunel presmeruje port vo vašom počítači cez šifrované SSH spojenie na port databázy vo VPS.

  1. Vo svojom počítači otvorte terminál (Windows Terminal, PowerShell, macOS Terminál) a spustite:

    bash
    ssh -L 3307:127.0.0.1:3306 -N [email protected]
    • ssh – pripojí sa k VPS cez SSH.
    • -L 3307:127.0.0.1:3306 – port 3307 vo vašom počítači sa presmeruje na adresu 127.0.0.1 port 3306 z pohľadu VPS (teda na MariaDB). Port 3307 je zvolený preto, aby nekolidoval s prípadnou databázou vo vašom počítači.
    • -N – nespúšťať na VPS žiadny príkaz, iba držať tunel.
    • [email protected] – používateľ a IP adresa vášho VPS (zo záložky Sieť).

    Po prihlásení terminál nič nevypíše a „visí“. To je správne, tunel beží, kým okno nezatvoríte alebo nestlačíte Ctrl+C.

  2. V databázovom programe sa pripojte na Host 127.0.0.1, Port 3307, s používateľom a heslom z databázy (napríklad aplikace).

HeidiSQL aj DBeaver dokážu tunel vytvoriť samy. V HeidiSQL zvoľte typ siete MariaDB/MySQL cez SSH tunel (… (SSH tunnel)), v záložke SSH tunela vyplňte IP adresu VPS, port 22, používateľa a heslo alebo SSH kľúč a v hlavnom nastavení ako hostiteľa databázy 127.0.0.1. V DBeaveri v nastavení pripojenia pridajte SSH (tlačidlo plus, voľba SSH) a zaškrtnite Use SSH Tunnel.

Priamy prístup zvonku#

Použite iba vtedy, keď sa k databáze musí pripájať iný server alebo program, ktorý tunel nedokáže. Vždy obmedzte prístup na konkrétnu IP adresu.

  1. Povoľte MariaDB počúvať na sieti. Vytvorte súbor nano /etc/mysql/mariadb.conf.d/60-remote-access.cnf s obsahom:

    /etc/mysql/mariadb.conf.d/60-remote-access.cnfini
    [mysqld]
    bind-address = 0.0.0.0
    • [mysqld] – skupina volieb databázového servera.
    • bind-address = 0.0.0.0 – počúvať na všetkých IPv4 adresách VPS (predvolené 127.0.0.1 v súbore 50-server.cnf sa tým prepíše, pretože súbory sa načítavajú podľa abecedy a neskorší vyhráva).
  2. Reštartujte MariaDB a overte počúvanie:

    bash
    systemctl restart mariadb
    ss -tlnp | grep 3306

    Uvidíte 0.0.0.0:3306.

  3. Vytvorte používateľa s IP adresou, z ktorej sa budete pripájať (napríklad vaša verejná IP 198.51.100.25):

    SQL
    CREATE USER 'jan'@'198.51.100.25' IDENTIFIED BY '<SILNE_HESLO>';
    GRANT ALL PRIVILEGES ON aplikace.* TO 'jan'@'198.51.100.25';
  4. Povoľte port 3306 iba z tejto IP adresy vo firewalle zákazníckeho účtu (návod): pravidlo Prichádzajúce · Povoliť · TCP · port 3306 · Zdrojová IP 198.51.100.25. Ak máte režim Povoliť všetko, pridajte pod neho ešte pravidlo Prichádzajúce · Zahodiť · TCP · port 3306 bez zdrojovej IP. Pravidlá sa vyhodnocujú zhora a prvá zhoda platí, takže vaša IP prejde a ostatné nie.

  5. Ak používate UFW, povoľte port aj v ňom:

    bash
    ufw allow from 198.51.100.25 to any port 3306 proto tcp
    • allow from 198.51.100.25 – iba z vašej IP adresy.
    • to any port 3306 proto tcp – na TCP port 3306.

Dynamická IP adresa

Domáce pripojenie často mení IP adresu. Po zmene sa nepripojíte a pravidlá musíte upraviť. Preto je na pripojenie z domu lepší SSH tunel.

Zálohy databázy#

Program mariadb-dump uloží databázu do SQL súboru, z ktorého ju kedykoľvek obnovíte.

Záloha jednej databázy:

bash
mariadb-dump --single-transaction --routines --events aplikace > /root/aplikace-$(date +%F).sql
  • --single-transaction – urobí konzistentnú zálohu tabuliek InnoDB bez zamykania, aplikácia môže bežať ďalej.
  • --routines – zahrnie uložené procedúry a funkcie (bez prepínača sa nezálohujú).
  • --events – zahrnie naplánované udalosti (tiež sa inak nezálohujú). Triggery sa zálohujú automaticky.
  • aplikace – názov databázy.
  • > /root/aplikace-$(date +%F).sql – uloží výstup do súboru s dnešným dátumom v názve.

Záloha všetkých databáz naraz a rovno komprimovaná:

bash
mariadb-dump --single-transaction --routines --events --all-databases | gzip > /root/vsechny-db-$(date +%F).sql.gz
  • --all-databases – všetky databázy vrátane príkazov na ich vytvorenie.
  • | gzip > – skomprimuje výstup, SQL sa zvyčajne zmenší na zlomok.

Obnova:

bash
mariadb aplikace < /root/aplikace-2026-10-01.sql
gunzip < /root/vsechny-db-2026-10-01.sql.gz | mariadb
  • Prvý riadok nahrá zálohu jednej databázy do existujúcej databázy aplikace (ak neexistuje, vytvorte ju najprv príkazom CREATE DATABASE).
  • Druhý obnoví zálohu všetkých databáz; databázy si vytvorí sám.

Obnova prepisuje

Obnova zo zálohy prepíše tabuľky, ktoré v zálohe sú, ich stavom zo zálohy. Novšie dáta v nich sa stratia. Ak si nie ste istí, obnovte zálohu najprv do novej databázy (napríklad aplikace_test) a porovnajte.

Automatické nočné zálohy a ich odoslanie mimo VPS opisuje návod Zálohy na VPS.

Základ ladenia výkonu#

Najdôležitejšie nastavenie výkonu je innodb_buffer_pool_size: koľko RAM smie MariaDB použiť ako cache dát a indexov. Predvolená hodnota je 128 MB.

/etc/mysql/mariadb.conf.d/60-tuning.cnfini
[mysqld]
innodb_buffer_pool_size = 1G
NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
innodb_buffer_pool_sizeVeľkosť cache pre dáta a indexy InnoDB. Čím viac dát sa do nej vojde, tým menej sa číta z disku.Na VPS, kde bežia aj ďalšie služby: zhruba veľkosť databáz, najviac štvrtina RAM (napríklad 1G na VPS s 8 GB). Na VPS iba pre databázu až 80 % RAM.Keď databáza rastie a dopyty spomaľujú. Zmenšite, keď VPS dochádza pamäť.

Po úprave reštartujte MariaDB: systemctl restart mariadb. Veľkosť databáz zistíte dopytom:

SQL
SELECT table_schema AS db, ROUND(SUM(data_length + index_length) / 1024 / 1024) AS mb FROM information_schema.tables GROUP BY table_schema;

Overenie#

  • systemctl is-active mariadb vypíše active.
  • mariadb -u aplikace -p aplikace -e "SELECT 1;" po zadaní hesla vypíše tabuľku s číslom 1.
  • ss -tlnp | grep 3306 ukazuje 127.0.0.1:3306 (iba lokálne), alebo 0.0.0.0:3306, ak ste povolili priamy prístup.

Keď niečo nefunguje#

ERROR 1698 (28000): Access denied for user 'root'@'localhost'#

Prihlasujete sa ako databázový root heslom (mariadb -u root -p) alebo pod bežným systémovým používateľom. Root sa overuje cez unix socket: prihláste sa na VPS ako root a spustite iba mariadb, alebo použite sudo mariadb.

ERROR 1045 (28000): Access denied for user 'aplikace'@'localhost' (using password: YES)#

Nesprávne heslo, alebo používateľ s týmto hostom neexistuje. Skontrolujte SELECT User, Host FROM mysql.user;. Ak sa aplikácia pripája cez 127.0.0.1 a chyba uvádza 'aplikace'@'127.0.0.1', vytvorte používateľa aj s hostom 127.0.0.1 a prideľte mu rovnaké práva. Heslo nastavíte znova príkazom ALTER USER.

ERROR 1130 (HY000): Host '198.51.100.25' is not allowed to connect to this MariaDB server#

Pre túto IP adresu neexistuje žiadny používateľ. Vytvorte používateľa s hostom zodpovedajúcim vašej IP (kapitola Priamy prístup zvonku), alebo použite SSH tunel.

ERROR 2002 (HY000): Can't connect to local … server through socket '/run/mysqld/mysqld.sock'#

MariaDB nebeží. Skontrolujte stav a log:

bash
systemctl status mariadb
journalctl -u mariadb -n 50
  • journalctl -u mariadb -n 50 – posledných 50 riadkov logu služby. Po úprave konfigurácie býva príčinou preklep v súbore .cnf; riadok s chybou je v logu uvedený.

ERROR 2003 (HY000): Can't connect to … server on '203.0.113.10'#

Spojenie zvonku neprešlo. Skontrolujte, že MariaDB počúva na 0.0.0.0 (ss -tlnp | grep 3306), že port 3306 povoľuje firewall zákazníckeho účtu aj UFW pre vašu IP a že sa vaša IP adresa nezmenila.

Import zálohy hlási Unknown command '\-'#

Nové verzie mariadb-dump vkladajú na začiatok súboru riadok so zapnutím „sandbox režimu“, ktorému nerozumie klient MySQL ani starší klient MariaDB. Importujte zálohu klientom mariadb rovnakej alebo novšej verzie. Ak musíte importovať do MySQL, zmažte z kópie súboru prvý riadok s textom enable the sandbox mode.

Zhrnutie

  • MariaDB nainštalujete v záložke Databázy (Nainštalovať MariaDB) alebo príkazom apt -y install mariadb-server.
  • Root sa prihlasuje bez hesla cez unix socket (mariadb ako root); aplikácie majú vlastných používateľov s právami iba k svojej databáze.
  • Databázy vytvárajte s utf8mb4.
  • Z počítača sa pripájajte cez SSH tunel; priamy prístup iba s bind-address, používateľom pre konkrétnu IP a firewallom.
  • Zálohujte príkazom mariadb-dump --single-transaction a zálohy ukladajte aj mimo VPS.

Bol návod užitočný?

Platí pre

  • Ubuntu 24.04
  • Debian 13
  • MariaDB 10.11
  • MariaDB 11.8

Služby

Nahlásiť chybu v návode

Hľadanie v návodoch