Skip to content
VDS · Baze podataka

MySQL i MariaDB: instalacija i tvoja prva baza podataka

Instalacija database servera na VDS-u, bezbedno početno podešavanje, kreiranje baze podataka i korisnika, provera konekcije i česte prve greške.

Ažurirano 23. avgust 2026.

MySQL i njegov kompatibilni ogranak MariaDB su ono na čemu radi većina PHP sajtova. Njihove komande i klijent su isti; razlike počinju pri finom podešavanju.

Instalacija

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

Ako ti baš treba Oracle MySQL, instaliraj mysql-server iz njegovog zvaničnog repozitorijuma. Servis će se zvati mysql.

Odmah zatvori osnovne rupe:

mariadb-secure-installation

Skripta će te pitati da postaviš root lozinku, ukloni anonimne korisnike, zabrani udaljeni root login i obriše test bazu. Na sve odgovori „da”.

Baza i korisnik

Ne pokreći aplikaciju kao root — napravi odvojenog korisnika za svaki projekat:

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;

Kodiranje utf8mb4 je obavezno: stari utf8 u MySQL-u čuva samo tri bajta po karakteru i puca na emodžijima i nekim karakterima.

Proveri:

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

Više o dozvolama pogledaj u korisnici i dozvole.

Početno podešavanje

Podešavanja se nalaze u /etc/mysql/mariadb.conf.d/50-server.cnf ili /etc/my.cnf.d/. Evo minimuma koji treba odmah da ispraviš:

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

bind-address = 127.0.0.1 drži bazu dostupnom samo lokalno. Ako ti je aplikacija na istoj mašini, tako i treba da bude. Ako ti baza treba spolja, pročitaj udaljeni pristup pre nego što bilo šta menjaš.

Veličina buffer pool-a se bira po tieru — pogledaj podešavanje memorije.

Posle izmene: systemctl restart mariadb.

Česte greške

SimptomUzrokŠta da radiš
Access denied for userPogrešna lozinka ili je unos korisnika vezan za drugi hostProveri SELECT user, host FROM mysql.user;
Can't connect through socketServis ne radisystemctl status mariadb, pogledaj journalctl -u mariadb
Too many connectionsAplikacija ne zatvara konekcijePool na strani aplikacije, pa onda max_connections
Izobličen tekstRazličita kodiranja za bazu i konekcijuSve svedi na utf8mb4
Baza se ne pokreće posle restartaServis nije podešen da se pokreće pri butovanjusystemctl enable mariadb

Nema automatskih bekapa mašine. Podesi dump odmah posle prve tabele koja radi — bekapi baze. NVMe disk je brz, ali je samo jedan.