Skip to main content

Cyber AI România

Cum instalezi MariaDB/MySQL și cum creezi o bază de date pentru o aplicație web

O aplicație web nu ar trebui să se conecteze la baza de date folosind contul root. Configurația corectă presupune un server MariaDB sau MySQL, o bază de date separată și un utilizator care are acces numai la baza aplicației.

Pașii de mai jos sunt potriviți pentru Ubuntu Server și Debian. Alege MariaDB sau MySQL, nu le instala pe ambele pe același server fără un motiv tehnic clar.

Alege MariaDB sau MySQL

MariaDB este disponibil în repository-urile distribuțiilor Linux și este frecvent folosit pentru WordPress, aplicații PHP și proiecte open-source. MySQL este alegerea potrivită când aplicația sau furnizorul software cere explicit MySQL ori o versiune certificată a acestuia.

Pentru MariaDB:

sudo apt update
sudo apt install mariadb-server mariadb-client

Pentru MySQL:

sudo apt update
sudo apt install mysql-server

Ubuntu documentează instalarea MySQL prin pachetul mysql-server; după instalare, serviciul ar trebui să pornească automat.

Verifică serviciul și portul

Pentru MariaDB:

sudo systemctl status mariadb

Pentru MySQL:

sudo systemctl status mysql

Verifică dacă serverul ascultă pe portul standard 3306:

sudo ss -ltnp | grep ':3306'

Pentru o aplicație și o bază de date aflate pe același server, rezultatul ideal indică 127.0.0.1:3306. Asta înseamnă că baza de date acceptă conexiuni locale, fără să fie expusă direct în internet.

Nu deschide portul 3306 în UFW sau în firewall-ul furnizorului VPS dacă aplicația rulează pe aceeași mașină. Ubuntu arată că expunerea în rețea se controlează prin directiva bind-address; aceasta trebuie schimbată numai când există un server de aplicație separat și o rețea privată controlată.

Rulează verificarea inițială de securitate

Pentru MariaDB:

sudo mariadb-secure-installation

Pentru MySQL:

sudo mysql_secure_installation

Aceste utilitare pot elimina utilizatorii anonimi, baza de test și accesul administrativ remote. În versiunile moderne MariaDB, autentificarea locală prin Unix socket este folosită implicit în multe instalări, astfel că nu este obligatoriu să setezi o parolă clasică pentru contul administrativ root. Citește fiecare întrebare înainte să confirmi.

Intră în consola bazei de date

Pentru MariaDB:

sudo mariadb

Pentru MySQL pe Ubuntu:

sudo mysql

Instalarea Ubuntu configurează în mod normal contul MySQL root@localhost pentru autentificare locală prin auth_socket, ceea ce permite administrarea prin sudo fără o parolă MySQL separată.

Creează baza de date

În consola SQL, rulează:

CREATE DATABASE aplicatie_web
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

utf8mb4 permite stocarea completă a caracterelor Unicode, inclusiv diacritice și emoji. CREATE DATABASE poate seta explicit setul de caractere și collation-ul bazei.

Verifică rezultatul:

SHOW DATABASES;

Creează utilizatorul aplicației

Creează un cont care se poate conecta numai local:

CREATE USER 'webapp'@'localhost'
IDENTIFIED BY 'INLOCUIESTE_CU_O_PAROLA_LUNGA_SI_UNICA';

Folosește o parolă generată de un password manager. Nu reutiliza parola contului SSH și nu o include în capturi de ecran, repository-uri Git sau documentație publică.

Un utilizator nou nu primește automat acces la baze de date; privilegiile trebuie acordate separat.

Acordă numai permisiunile necesare

Pentru o aplicație care își execută propriile migrări:

GRANT SELECT, INSERT, UPDATE, DELETE,
      CREATE, ALTER, INDEX, DROP
ON aplicatie_web.*
TO 'webapp'@'localhost';

Verifică permisiunile:

SHOW GRANTS FOR 'webapp'@'localhost';

Accesul este limitat la aplicatie_web.*, nu la toate bazele serverului. SHOW GRANTS afișează privilegiile atribuite unui cont.

Nu este necesar să rulezi FLUSH PRIVILEGES după CREATE USER și GRANT; aceste comenzi aplică modificările prin sistemul normal de administrare a conturilor.

Ieși din consolă:

EXIT;

Testează contul aplicației

Pentru MariaDB:

mariadb -u webapp -p aplicatie_web

Pentru MySQL:

mysql -u webapp -p aplicatie_web

După conectare:

SELECT DATABASE(), CURRENT_USER();
SHOW TABLES;

Dacă autentificarea funcționează, folosește în configurația aplicației:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=aplicatie_web
DB_USERNAME=webapp
DB_PASSWORD=parola_generata

Fișierul .env nu trebuie să fie accesibil public și nu trebuie trimis în Git.

Creează primul backup

Pentru MySQL:

mysqldump -u webapp -p aplicatie_web > aplicatie_web.sql

Pentru MariaDB:

mariadb-dump -u webapp -p aplicatie_web > aplicatie_web.sql

Contul va avea nevoie de privilegii suficiente pentru conținutul exportat. Păstrează backup-ul în afara directorului public al site-ului și testează periodic restaurarea.

Configurația corectă înseamnă: motor ales în funcție de aplicație, port neexpus inutil, bază separată, utilizator dedicat și privilegii limitate. Contul root rămâne pentru administrare, nu pentru conexiunile zilnice ale aplicației.

Surse folosite

Ubuntu Server Documentation — instalarea și configurarea MySQL.

MariaDB Documentation — instalare și securizare inițială.

MariaDB Documentation — CREATE DATABASE, CREATE USER și GRANT.

MySQL 8.4 Reference Manual — administrarea utilizatorilor și verificarea privilegiilor.

Facebook
X
WhatsApp

Te-ar putea interesa si: