Namestitev strežnika podatkovnih baz MariaDB v sistema AlmaLinux 9 in 10

Linux Branje: 3 min

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.

Nazaj: Linux – članki (76)