// SSD VPS

Cum instalezi și configurezi MySQL 8 pe un VPS Linux: ghid complet — CLIQHOST

22 octombrie 2026 · by Alex M.

Cum instalezi și configurezi MySQL 8 pe un VPS Linux: ghid complet — CLIQHOST

MySQL 8 este cel mai popular sistem de gestiune a bazelor de date relaționale din lume și baza majorității aplicațiilor web moderne — de la WordPress și Magento, la aplicații custom în Python sau PHP. Dacă ai un VPS SSD sau un VPS NVMe și vrei să rulezi baze de date rapid și în siguranță, acest ghid îți arată pas cu pas tot ce trebuie să faci: instalare, securizare, configurare pentru performanță, gestionarea utilizatorilor și backup automat.


De ce MySQL 8 și nu versiunile anterioare?

MySQL 8 aduce îmbunătățiri semnificative față de versiunea 5.7:

  • Window Functions și Common Table Expressions (CTE) — interogări SQL mai complexe și mai lizibile.
  • Suport complet UTF-8mb4 — caractere Unicode corecte implicit.
  • Roles — gestionarea mai simplă a permisiunilor.
  • Îmbunătățiri InnoDB — performanță mai bună la concurență mare.
  • JSON nativ — suport extins pentru date JSON direct în tabele.
  • Securitate sporită — autentificare cu caching_sha2_password implicit.

Pe un VPS cu resurse dedicate, MySQL 8 exploatează mai bine resursele hardware disponibile față de versiunile mai vechi.


Cerințe preliminare

Înainte de a începe, asigură-te că ai:

  • Un VPS cu Ubuntu 22.04 LTS sau Debian 12 (comenzile sunt similare pentru ambele).
  • Acces root sau un utilizator cu privilegii sudo.
  • Minim 1 GB RAM (recomandat 2+ GB pentru producție).
  • Conexiune SSH funcțională.

Dacă nu ai încă un server, poți alege un plan VPS SSD de la CLIQHOST potrivit nevoilor tale.


Pasul 1: Actualizarea sistemului

Întotdeauna începi cu sistemul la zi:

sudo apt update && sudo apt upgrade -y

Această comandă actualizează lista de pachete și instalează ultimele patch-uri de securitate.


Pasul 2: Instalarea MySQL 8

Pe Ubuntu 22.04, MySQL 8 este disponibil direct din repository-ul oficial:

sudo apt install mysql-server -y

Verifică versiunea instalată:

mysql --version
# mysql  Ver 8.0.x Distrib 8.0.x, for Linux (x86_64)

Pornește și activează serviciul MySQL la boot:

sudo systemctl start mysql
sudo systemctl enable mysql

Verifică statusul:

sudo systemctl status mysql

Ar trebui să vezi active (running) în verde.

Instalare din repository-ul oficial MySQL (opțional, pentru ultima versiune)

Dacă vrei versiunea cea mai recentă direct de la MySQL:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt update
sudo apt install mysql-server -y

Pasul 3: Securizarea instalării MySQL

MySQL vine cu un script de securizare interactiv pe care trebuie să-l rulezi obligatoriu:

sudo mysql_secure_installation

Scriptul te va întreba:

  1. VALIDATE PASSWORD COMPONENT — Recomandăm să activezi (tastează Y) și să alegi nivelul STRONG (2) pentru parole de producție.
  2. Parola root — Setează o parolă puternică și noteaz-o într-un loc sigur.
  3. Remove anonymous users — Tastează Y (elimini utilizatorii anonimi).
  4. Disallow root login remotely — Tastează Y (root nu trebuie să se conecteze remote).
  5. Remove test database — Tastează Y (ștergi baza de date de test).
  6. Reload privilege tables — Tastează Y.

Aceste setări eliminând vectorii de atac cei mai comuni pentru o bază de date MySQL expusă.


Pasul 4: Conectarea la MySQL ca root

Pe Ubuntu 22.04, utilizatorul root MySQL folosește autentificarea prin socket:

sudo mysql

Sau, dacă ai setat parola:

mysql -u root -p

Odată în consolă, vei vedea prompt-ul mysql>.


Pasul 5: Crearea bazelor de date și a utilizatorilor

Niciodată nu rulezi aplicațiile cu utilizatorul root. Creezi utilizatori dedicați cu permisiuni minime:

-- Creează o bază de date nouă
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Creează un utilizator nou
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'ParolaPuternica!2025';

-- Acordă permisiuni doar pe baza de date specifică
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';

-- Aplică modificările
FLUSH PRIVILEGES;

Verifică utilizatorii existenți:

SELECT user, host FROM mysql.user;

Creare utilizator cu acces remote (dacă e necesar)

Dacă aplicația rulează pe un alt server (ex. un server de aplicații separat):

CREATE USER 'myapp_user'@'192.168.1.100' IDENTIFIED BY 'ParolaPuternica!2025';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'192.168.1.100';
FLUSH PRIVILEGES;

Atenție: accesul remote trebuie limitat strict la IP-uri cunoscute.


Pasul 6: Configurarea MySQL pentru performanță

Fișierul principal de configurare este /etc/mysql/mysql.conf.d/mysqld.cnf. Editează-l:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Adaugă sau modifică următoarele setări sub secțiunea [mysqld]:

[mysqld]
# Memorie InnoDB Buffer Pool (50-70% din RAM disponibil)
innodb_buffer_pool_size = 512M

# Numărul de instanțe ale buffer pool (1 per GB de buffer pool)
innodb_buffer_pool_instances = 1

# Log file size — InnoDB
innodb_log_file_size = 128M

# Conexiuni simultane maxime
max_connections = 150

# Cache pentru interogări (query cache e dezactivat în MySQL 8, folosim altceva)

# Timeout-uri
wait_timeout = 300
interactive_timeout = 300

# Thread cache
thread_cache_size = 16

# Table cache
table_open_cache = 2000

# Sort buffer (per thread)
sort_buffer_size = 2M

# Slow query log — util pentru debugging
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

# Charset implicit
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

După modificări, repornește MySQL:

sudo systemctl restart mysql

Regulă practică pentru innodb_buffer_pool_size

RAM VPS Buffer Pool recomandat
1 GB 512 MB
2 GB 1 GB
4 GB 2.5 GB
8 GB 5 GB

Pe un VPS NVMe performant, poți aloca mai multă memorie buffer pool pentru a beneficia din plin de viteza discurilor.


Pasul 7: Securizarea accesului la nivel de rețea

Prin default, MySQL ascultă pe 127.0.0.1 (localhost). Verifică:

sudo ss -tlnp | grep mysql
# LISTEN 0 151 127.0.0.1:3306 0.0.0.0:*

Dacă nu ai nevoie de acces remote, lasă bind-address = 127.0.0.1 în configurație — este cea mai sigură setare.

Dacă ai nevoie de acces remote și ai un firewall UFW activ, permite accesul doar de la un IP specific:

sudo ufw allow from 203.0.113.50 to any port 3306

Niciodată nu expui portul 3306 publicului larg (0.0.0.0). Serviciile noastre de administrare server includ și hardening MySQL pentru medii de producție.


Pasul 8: Configurarea backup-ului automat cu mysqldump

Backup-urile sunt esențiale. Creăm un script simplu și un cron job:

sudo nano /usr/local/bin/mysql-backup.sh

Conținutul scriptului:

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/var/backups/mysql"
MYSQL_USER="root"
MYSQL_PASS="parola_ta_root"

mkdir -p $BACKUP_DIR

# Backup toate bazele de date
mysqldump -u $MYSQL_USER -p$MYSQL_PASS --all-databases --single-transaction \
  --quick --lock-tables=false | gzip > $BACKUP_DIR/all-databases-$DATE.sql.gz

# Șterge backup-urile mai vechi de 7 zile
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

echo "Backup finalizat: $BACKUP_DIR/all-databases-$DATE.sql.gz"

Fă scriptul executabil:

sudo chmod +x /usr/local/bin/mysql-backup.sh

Adaugă un cron job pentru backup zilnic la 02:00:

sudo crontab -e
0 2 * * * /usr/local/bin/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1

Restaurarea unui backup

gunzip < /var/backups/mysql/all-databases-2025-01-15_02-00.sql.gz | mysql -u root -p

Pasul 9: Monitorizarea MySQL

Verificarea statusului în timp real

SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Slow_queries';
SHOW GLOBAL STATUS LIKE 'Questions';
SHOW PROCESSLIST;

Verificarea variabilelor de configurare active

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';

Instalarea MySQLTuner (recomandat)

MySQLTuner este un script Perl care analizează configurația și oferă recomandări concrete:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl --user root --pass parola_ta

Outputul îți va arăta ce parametri merită ajustați în funcție de încărcarea reală a serverului.


Pasul 10: Upgrade de la MySQL 5.7 la MySQL 8 (dacă e cazul)

Dacă migrezi de la 5.7, pașii esențiali sunt:

  1. Backup complet înainte de orice:

    mysqldump -u root -p --all-databases > backup-pre-upgrade.sql
    
  2. Verifică compatibilitatea cu MySQL Shell:

    mysqlcheck -u root -p --all-databases --check-upgrade
    
  3. Actualizează pachetele și rulează:

    sudo mysql_upgrade -u root -p
    
  4. Testează aplicațiile — verifică că autentificarea cu caching_sha2_password este compatibilă cu driverele tale. Dacă nu, poți seta temporar:

    ALTER USER 'myapp_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'parola';
    

Greșeli frecvente de evitat

  • ❌ Nu lăsa utilizatorul root cu acces remote — este sursa celor mai frecvente breach-uri.
  • ❌ Nu folosi parole simple — MySQL 8 le respinge dacă ai activat VALIDATE PASSWORD.
  • ❌ Nu ignora slow query log — interogările lente sunt principala cauză de lentoare a aplicațiilor.
  • ❌ Nu sari peste backup — un server fără backup nu este un server de producție.
  • ❌ Nu acorda GRANT ALL ON *.* unui utilizator aplicatie — folosește permisiuni minime.

Concluzie

MySQL 8 pe un VPS Linux este o combinație robustă și performantă pentru orice aplicație web serioasă. Urmând pașii din acest ghid ai o instalare securizată, optimizată pentru resursele serverului tău și cu backup automat configurat.

Dacă vrei să te concentrezi pe aplicații și nu pe administrarea serverului, echipa CLIQHOST oferă servicii de administrare server gestionat în care ne ocupăm de configurarea, securizarea și monitorizarea MySQL pentru tine.

Alege un VPS SSD sau VPS NVMe de la CLIQHOST, potrivit nevoilor proiectului tău, și ai o bază solidă pentru orice aplicație bazată pe MySQL 8. Pentru întrebări sau asistență tehnică, contactează-ne oricând.

SHARE
// what clients say

What Our Clients Say

Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău