MariaDB je odprtokodni strežnik podatkovnih baz, ki izvira iz MySQL in je z njim večinoma združljiv; WordPress in večina aplikacij PHP ga uporabljajo brez sprememb. Ta članek ga namesti na VPS brez nadzorne plošče, skupaj s spletnim strežnikom pa s člankom Namestitev Apacheja in PHP-FPM tvori celotno okolje LAMP.
Korake smo oktobra 2026 preizkusili v sistemih AlmaLinux 9.8 in 10.2. Ukaze zaganjaj z uporabnikom s pravicami sudo.
1. Katera različica?
| Sistem | Privzeta | Druge različice v sistemskem repozitoriju |
|---|---|---|
| AlmaLinux 10 | MariaDB 10.11 | MariaDB 11.8 (paket mariadb11.8-server) |
| AlmaLinux 9 | MariaDB 10.5 | MariaDB 10.11 in 11.8 kot modul |
V AlmaLinux 9 privzete veje 10.5 razvijalci MariaDB ne podpirajo več, zato tam izberi modul. 10.11 in 11.8 sta obe izdaji z dolgo podporo (LTS); za novo namestitev je 11.8 novejša.
Izbira modula v AlmaLinux 9:
sudo dnf module enable mariadb:11.8
2. Namestitev in zagon
sudo dnf install mariadb-server
sudo systemctl enable --now mariadb
V AlmaLinux 10 je ime paketa za 11.8 mariadb11.8-server. V preizkusu se je v AlmaLinux 9 iz modula namestil mariadb-server-11.8.8.
Preverjanje:
sudo mariadb -e "SELECT VERSION();"
3. Uporabnik root: vtičnica unix namesto gesla
Uporabnik root MariaDB se od različice 10.4 prijavi brez gesla, s sistemskimi pravicami root: sudo mariadb deluje, kot navaden uporabnik pa mariadb -u root vrne to:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Tako je varno in udobno: za račun root podatkovne baze ni treba hraniti gesla, od zunaj pa se z njim ni mogoče prijaviti. Ne nastavljaj mu gesla le zato, da bi se lahko aplikacija povezala kot root; aplikacijam ustvari lastnega uporabnika (glej 5. točko).
4. Osnovna varnostna nastavitev
sudo mariadb-secure-installation
(Deluje tudi staro ime mysql_secure_installation.) Na vprašanja skripte smo v preizkusu odgovorili takole:
| Vprašanje | Priporočeni odgovor |
|---|---|
| Enter current password for root | Enter (ni gesla) |
| Switch to unix_socket authentication | n (že deluje tako) |
| Change the root password? | n |
| Remove anonymous users? | Y |
| Disallow root login remotely? | Y |
| Remove test database and access to it? | Y |
| Reload privilege tables now? | Y |
Na koncu se prikaže sporočilo All done!.
5. Ustvarjanje podatkovne baze in uporabnika
Za vsako aplikacijo (na primer za vsako stran WordPress) ustvari ločeno podatkovno bazo in uporabnika, s pravicami le za lastno podatkovno bazo:
sudo mariadb
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'Hosszu-Egyedi-Jelszo';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Preizkus z novim uporabnikom:
mariadb -u wpuser -p -e "SELECT CURRENT_USER(); SHOW DATABASES;"
V preizkusu je uporabnik videl le information_schema in svojo podatkovno bazo wordpress.
6. Naj ne bo dosegljiv od zunaj
V preizkusu je MariaDB po namestitvi poslušal na vseh omrežnih vmesnikih (po ss -tlnp 0.0.0.0:3306), kar pomeni, da bi brez požarnega zidu z njim lahko poskušali tudi z interneta. Če podatkovno bazo uporablja le aplikacija na istem strežniku (to je tipičen primer), jo omeji na lokalni naslov. V razdelek [mysqld] datoteke /etc/my.cnf.d/mariadb-server.cnf:
bind-address = 127.0.0.1
sudo systemctl restart mariadb
sudo ss -tlnp | grep 3306
V preizkusu je nato ostal le 127.0.0.1:3306. Če na strežniku teče firewalld, vrat 3306 ne odpiraj; za oddaljeni dostop raje uporabi tunel SSH.
7. Pomnilnik
Velikost predpomnilnika InnoDB (innodb_buffer_pool_size) je privzeto 128 MB. Če je podatkovna baza večja in je na strežniku prosti pomnilnik, jo povečaj v razdelku [mysqld] datoteke /etc/my.cnf.d/mariadb-server.cnf (na primer innodb_buffer_pool_size = 512M). Če na istem računalniku teče tudi spletni strežnik, ji daj največ 40–50 % skupnega pomnilnika, sicer lahko podatkovno bazo ustavi OOM killer (glej: Zmanjkalo je pomnilnika: OOM killer in datoteka swap).
Varnostne kopije
sudo mariadb-dump --single-transaction wordpress > wordpress-$(date +%F).sql
O varnostnem kopiranju in obnovitvi podrobneje piše članek Kako v sistemu Linux varnostno kopiram in obnovim podatke?.
Uporabni ukazi
| Ukaz | Kaj naredi |
|---|---|
sudo systemctl status mariadb |
ali storitev teče |
sudo systemctl restart mariadb |
ponovni zagon (npr. po spremembi nastavitve) |
sudo journalctl -u mariadb |
dnevnik storitve |
sudo mariadb |
prijava kot root |
mariadb -u felhasznalo -p adatbazis |
prijava z uporabnikom aplikacije |
Če ne želiš upravljati strežnika podatkovnih baz, lahko na gostovanju cPanel podatkovne baze ustvariš v vmesniku (glej: Ustvarjanje podatkovnih baz MySQL in uporabnikov na gostovanju cPanel), na lastnem KVM VPS pa ga namestiš z zgornjimi koraki.