1. Namestitev MariaDB
Korak 1: Posodobitev paketa sistema
Preden začnete, je priporočljivo posodobiti seznam dostopnih paketov:
sudo apt update
Korak 2: Namestitev MariaDB strežnika
Namestite MariaDB strežnik z naslednjim ukazom:
sudo apt install mariadb-server -y
Korak 3: Zagon in omogočitev MariaDB storitve
Zaženite MariaDB in omogočite njegov samodejni zagon ob ponovnem zagonu sistema:
sudo systemctl start mariadb && sudo systemctl enable mariadb
Korak 4: Preverjanje statusa
Preverite, ali je MariaDB pravilno zagnan:
sudo systemctl status mariadb
2. Varnostna Konfiguracija
Zagon varnostnega skriptu
Zaženite varnostni skript za izboljšano zaščito:
sudo mariadb-secure-installation
Kaj naredi mariadb-secure-installation?
3. Dostop do MariaDB
Prijava v MariaDB
Prijavite se v MariaDB s sledečim ukazom:
sudo mariadb -u root -p
-u root - prijava kot root uporabnik
-p - sistem vas bo pozval za geslo
MariaDB [(none)]> prompt
Ustvarjanje novega uporabnika
Ustvarite aplikacijskega uporabnika in mu dodelite pravice na bazi Baza_strank:
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'MočnoGeslo!'; GRANT ALL PRIVILEGES ON Baza_strank.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;
ALL PRIVILEGES s točnejšimi (npr. SELECT,INSERT,UPDATE), če ne potrebujete vsega.'appuser'@'%' ali konkretni IP, vendar dodajte firewall/SSL.Sprememba gesla obstoječega uporabnika
Geslo obstoječega uporabnika spremenite z ukazom:
ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'NovoGeslo!'; FLUSH PRIVILEGES;
4. Ustvarjanje Baze Podatkov in Tabele
Korak 1: Ustvarjanje baze podatkov
Ko ste prijavljeni v MariaDB, ustvarite novo bazo:
CREATE DATABASE Baza_strank;
Korak 2: Izbira baze podatkov
Izberite bazo, v kateri želite delati:
USE Baza_strank;
Korak 3: Ustvarjanje tabele "stranke"
Ustvarite tabelo za shranjovanje podatkov o strankah:
CREATE TABLE stranke (
id INT AUTO_INCREMENT PRIMARY KEY,
ime VARCHAR(50) NOT NULL,
priimek VARCHAR(50) NOT NULL,
enaslov VARCHAR(100) NOT NULL,
domaci_naslov VARCHAR(150) NOT NULL,
starost INT NOT NULL,
spol ENUM('M', 'Z') NOT NULL
);
Razlaga strukture tabele:
| Polje | Tip | Opis |
|---|---|---|
id |
INT AUTO_INCREMENT PRIMARY KEY | Unikaten identifikator, avtomatično se povečuje |
ime |
VARCHAR(50) NOT NULL | Ime stranke, obvezno polje, max 50 znakov |
priimek |
VARCHAR(50) NOT NULL | Priimek stranke, obvezno polje, max 50 znakov |
enaslov |
VARCHAR(100) NOT NULL | Elektronski naslov, obvezno polje, max 100 znakov |
domaci_naslov |
VARCHAR(150) NOT NULL | Domači naslov, obvezno polje, max 150 znakov |
starost |
INT NOT NULL | Starost stranke v letih, obvezno polje |
spol |
ENUM('M', 'Z') NOT NULL | Spol (M=Moški, Z=Ženska), obvezno polje |
Korak 4: Preverjanje tabele
Preverite strukturo tabele:
DESCRIBE stranke;
5. Uvoz Podatkov iz CSV Datoteke
Korak 1: Priprava CSV datoteke
CSV datoteka s podatki o strankah mora biti v direktoriju /var/lib/mysql-files/ z imenom stranke.csv
Struktura CSV datoteke:
Prva vrstica so nazivi stolpcev:
ime,priimek,enaslov,domaci_naslov,starost,spol
Sledi primer vrstice s podatki:
Luka,Kranjc,[email protected],"Cesta 12, Ljubljana",32,M
Korak 2: Uvoz podatkov v bazo
Uporabite naslednji SQL ukaz za uvoz podatkov:
LOAD DATA INFILE '/var/lib/mysql-files/stranke.csv' INTO TABLE stranke FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (ime, priimek, enaslov, domaci_naslov, starost, spol);
Razlaga ukaza:
Korak 3: Preverjanje uvoženih podatkov
Preverite, ali so se podatki uspešno uvozili:
SELECT COUNT(*) FROM stranke;
Oglejte si prve vrstice:
SELECT * FROM stranke LIMIT 5;
6. Koristni SQL Ukazi
Prikaz vseh baz podatkov:
SHOW DATABASES;
Prikaz vseh tabel v trenutni bazi:
SHOW TABLES;
Prikaz vseh podatkov iz tabele:
SELECT * FROM stranke;
Posodobitev podatkov (UPDATE):
UPDATE stranke SET starost = 33, enaslov = '[email protected]' WHERE ime = 'Luka' AND priimek = 'Kranjc';
SELECT ... WHERE ..., da vidite, katere vrstice bodo prizadeteALTER TABLE: dodajanje stolpca
ALTER TABLE stranke ADD COLUMN telefon VARCHAR(30) AFTER enaslov;
ALTER TABLE: sprememba tipa stolpca
ALTER TABLE stranke MODIFY COLUMN starost SMALLINT NOT NULL;
ALTER TABLE: brisanje stolpca
ALTER TABLE stranke DROP COLUMN telefon;
mysqldump), spremembe lahko povzročijo izgubo podatkov ali nedelovanje aplikacije.
Iskanje določenega podatka:
SELECT * FROM stranke WHERE ime = 'Luka';
Štetje podatkov:
SELECT COUNT(*) FROM stranke;
Izpis specifičnih stolpcev:
SELECT ime, priimek, starost FROM stranke;
Izhod iz MariaDB:
EXIT;
DELETE: brisanje specifičnih vrstic
DELETE FROM stranke WHERE starost > 80;
BEGIN; pred ukazom, ROLLBACK; za preklicanjeTRUNCATE: hitro brisanje vseh vrstic
TRUNCATE TABLE stranke;
DROP TABLE: brisanje celotne tabele
DROP TABLE stranke;
DROP DATABASE: brisanje celotne baze
DROP DATABASE Baza_strank;
Primerjava: DELETE vs TRUNCATE vs DROP TABLE
| Ukaz | Podatki | Struktura | Hitrost | Transakcija |
|---|---|---|---|---|
DELETE |
Izbrisani | Ohranjena | Počasno | Da (ROLLBACK) |
TRUNCATE |
Izbrisani | Ohranjena | Hitro | Ne (redko) |
DROP TABLE |
Izbrisani | Izbrisana | Hitro | Ne |
COUNT: štetje vrstic
SELECT COUNT(*) AS skupaj_vrstic FROM stranke;
SUM: seštevanje vrednosti
SELECT SUM(starost) AS skupna_starost FROM stranke;
AVG: povprečna vrednost
SELECT AVG(starost) AS povprecna_starost FROM stranke;
MIN in MAX: najmanjša in največja vrednost
SELECT MIN(starost) AS najmanjsa_starost, MAX(starost) AS najvecja_starost FROM stranke;
GROUP BY: grupiranje podatkov
SELECT spol, COUNT(*) AS stevilo FROM stranke GROUP BY spol;
HAVING: filtriranje skupin
SELECT spol, COUNT(*) AS stevilo FROM stranke GROUP BY spol HAVING COUNT(*) > 150;
Napredni primer: grupiiranje z več agregatnimi funkcijami
SELECT spol, COUNT(*) AS stevilo, AVG(starost) AS povprecna_starost, MIN(starost) AS najmanjsa_starost, MAX(starost) AS najvecja_starost FROM stranke GROUP BY spol HAVING COUNT(*) >= 50;
Primerjava agregatnih funkcij
| Funkcija | Kaj naredi | Primer rezultata |
|---|---|---|
COUNT(*) |
Šteje vrstice | 500 |
SUM(starost) |
Sešteje vrednosti | 16234 |
AVG(starost) |
Povprečje | 32.47 |
MIN(starost) |
Najmanjša vrednost | 18 |
MAX(starost) |
Največja vrednost | 89 |
7. CSV Datoteka s Podatki
Pregled Datoteke
Spodaj je predogled prvih podatkov iz CSV datoteke:
ime,priimek,enaslov,domaci_naslov,starost,spol Luka,Kranjc,[email protected],"Cesta 12, Ljubljana",32,M Ana,Horvat,[email protected],"Pot 5, Maribor",28,Z Marko,Novak,[email protected],"Ulica 3, Celje",41,M Maja,Zupan,[email protected],"Trg 1, Kranj",22,Z Tina,Kos,[email protected],"Pot 7, Novo mesto",37,Z Peter,Kovač,[email protected],"Cesta 19, Ptuj",45,M Matej,Breznik,[email protected],"Ulica 14, Velenje",29,M Sara,Oblak,[email protected],"Trg 6, Murska Sobota",33,Z Nina,Bizjak,[email protected],"Ulica 11, Koper",26,Z Jure,Petek,[email protected],"Cesta 8, Izola",39,M
Prenos Datoteke
Datoteko lahko prenesete s klikom na gumb spodaj:
📥 Prenesi stranke.csvNavodila za prenos:
/var/lib/mysql-files/ na vašem strežniku
Kako prenesti datoteko na strežnik
Ko ste datoteko prenesli, jo prenesete na strežnik s sledečim ukazom:
sudo cp stranke.csv /var/lib/mysql-files/
Nastavite ustrezne pravice za dostop:
sudo chmod 644 /var/lib/mysql-files/stranke.csv
Preverite, da je datoteka na mestu:
ls -la /var/lib/mysql-files/stranke.csv
Direkten prenos datoteke v /var/lib/mysql-files/ s curl
Datoteko lahko prenesete direktno v želeno lokacijo z enim samim ukazom:
sudo curl -o /var/lib/mysql-files/stranke.csv https://mariadb.leonmetelko.net/stranke.csv
/var/lib/mysql-files/stranke.csvNastavitev pravic po prenosu s curl
Po prenosu preverite in po potrebi popravite pravice:
sudo chmod 644 /var/lib/mysql-files/stranke.csv
ls -la /var/lib/mysql-files/stranke.csv
Avtomatski bash skript za prenos in namestitev
Skripta, ki avtomatsko prenese datoteko in nastavi pravice:
#!/bin/bash
echo "Prenaša datoteko s curl..."
sudo curl -o /var/lib/mysql-files/stranke.csv https://mariadb.leonmetelko.net/stranke.csv
if [ $? -eq 0 ]; then
echo "✓ Prenos je uspešen"
sudo chmod 644 /var/lib/mysql-files/stranke.csv
echo "✓ Pravice nastavljene"
ls -la /var/lib/mysql-files/stranke.csv
else
echo "✗ Napaka pri prenosu datoteke"
exit 1
fi
Prenos datoteke med računalniki s rsync
Če imate datoteko na drugih računalniku, jo prenesete s pomočjo rsync. Rsync je hitrejši in bolj zanesljiv od standardnega kopiranja.
rsync: nalaganje datoteke na strežnik
rsync -avz stranke.csv [email protected]:/var/lib/mysql-files/
rsync: nalaganje datoteke S strežnika
rsync -avz [email protected]:/var/lib/mysql-files/stranke.csv ./
rsync: sinhronizacija celotnega direktorija
rsync -avz --delete podatki/ [email protected]:/var/lib/mysql-files/
rsync s SSH ključem (brez gesla)
rsync -avz -e "ssh -i ~/.ssh/id_rsa" stranke.csv [email protected]:/var/lib/mysql-files/
rsync: primerjava s SCP in ostalimi načini
| Metoda | Hitrost | Kompresija | Ponovni poskus | Idealno za |
|---|---|---|---|---|
rsync |
Hitra | Da (-z) | Da (le spremembe) | Sinhronizacija |
scp |
Srednja | Ne | Ne | Enostavni prenos |
sftp |
Srednja | Ne | Delno | Interaktivni prenos |
wget/curl |
Srednja | Da | Da | Prenos datotek po HTTP |
Statistika Podatkov
| Lastnost | Vrednost |
|---|---|
| Skupno število vrstic s podatki | 300+ |
| Število polj na vrstico | 6 |
| Izvor podatkov | Različna slovenska mesta |
| Format datoteke | CSV (Comma-Separated Values) |
| Kodiranje znakov | UTF-8 |
8. Pogosta Vprašanja
V: Kaj če nastavim napačno geslo pri mariadb-secure-installation?
O: Geslo se da spremeniti z ukazom: sudo mysql -u root in nato ALTER USER 'root'@'localhost' IDENTIFIED BY 'novo_geslo';
V: Kako zamenjam bazo, na kateri želim delat?
O: Uporabite USE druga_baza; za izbor druge baze.
V: Kje najdem CSV datoteko?
O: CSV datoteka mora biti v direktoriju /var/lib/mysql-files/ z dovoljenjem za branje za MariaDB storitev.
V: Kaj če imam napako pri uvozu podatkov?
O: Preverite format CSV datoteke, pravico do dostopa in da je pot do datoteke pravilna. Uporabite SHOW ERRORS; za prikaz napak.