Skip to content
VDS · Databázy

MySQL a MariaDB: inštalácia a tvoja prvá databáza

Inštalácia databázového servera na VDS, bezpečné počiatočné nastavenie, vytvorenie databázy a používateľa, overenie pripojenia a bežné prvé chyby.

Aktualizované 23. augusta 2026

MySQL a jeho kompatibilná vetva MariaDB sú to, na čom beží väčšina PHP stránok. Ich príkazy a klient sú rovnaké; rozdiely sa začínajú pri ladení.

Inštalácia

apt update && apt install -y mariadb-server      # Debian, Ubuntu
dnf install -y mariadb-server                    # AlmaLinux, CentOS Stream
systemctl enable --now mariadb

Ak konkrétne potrebuješ Oracle MySQL, nainštaluj mysql-server z jeho oficiálneho repozitára. Služba sa bude volať mysql.

Základné diery hneď zatvor:

mariadb-secure-installation

Skript sa ťa opýta na nastavenie root hesla, odstránenie anonymných používateľov, zakázanie vzdialeného prihlásenia roota a zmazanie testovacej databázy. Na všetko odpovedz „áno“.

Databáza a používateľ

Nespúšťaj aplikáciu ako root — vytvor samostatného používateľa pre každý projekt:

CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;

Kódovanie utf8mb4 je povinné: staré utf8 v MySQL ukladá len tri bajty na znak a rozbije sa na emoji a niektorých znakoch.

Skontroluj:

mariadb -u shop -p shop -e "SELECT 1;"

Viac o oprávneniach nájdeš v používatelia a granty.

Počiatočné nastavenie

Nastavenia sídlia v /etc/mysql/mariadb.conf.d/50-server.cnf alebo /etc/my.cnf.d/. Tu je minimum, ktoré by si mal hneď opraviť:

[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100

bind-address = 127.0.0.1 udržiava databázu dostupnú len lokálne. Ak je tvoja aplikácia na tom istom stroji, tak to má byť. Ak potrebuješ databázu zvonku, prečítaj si vzdialený prístup, kým čokoľvek zmeníš.

Veľkosť buffer poolu sa vyberá podľa tarifu — pozri ladenie pamäte.

Po úprave: systemctl restart mariadb.

Časté chyby

PríznakPríčinaČo robiť
Access denied for userNesprávne heslo alebo je záznam používateľa viazaný na iný hostiteľSkontroluj SELECT user, host FROM mysql.user;
Can't connect through socketSlužba nebežísystemctl status mariadb, pozri journalctl -u mariadb
Too many connectionsAplikácia nezatvára spojeniaPool na strane aplikácie, potom max_connections
Rozsypaný textRozdielne kódovania databázy a spojeniaZjednoť všetko na utf8mb4
Databáza sa po reštarte nespustíSlužba nie je nastavená na spustenie pri štartesystemctl enable mariadb

Neexistujú žiadne automatické zálohy stroja. Nastav dump hneď po prvej funkčnej tabuľke — zálohy databázy. NVMe disk je rýchly, ale je len jeden.