[[oktatas:linux:adatbázis-szerver|< Adatbázis-szerver]]
====== MariaDB ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2017, 2018, 2019, 2020
* Licenc: GNU Free Documentation License 1.3
* Web: https://szit.hu
===== A MariaDB-ről =====
A MariaDB egy SQL nyelven használható adatbázisrendszer. A MySQL szerver elágazásából
jött létre, de azzal teljesen kompatibilis. Az első kiadás 2009-ben látott napvilágot.
===== Telepítés =====
# apt install mariadb-server
===== Beállítások =====
Telepítéskor a korábbiaktól eltérően a rendszergazda jelszavát nem kéri a telepítő.
A szerver viszont elérhető ha linuxos rendszergazdaként (root), mariadb root felhasználóként
lépünk be:
# mysql
Szimpla felhasználóként a -u root kapcsolóval sem fog működni!
Ha úgy gondoljuk, hogy nem biztonságos, ha a root
felhasználó jelszó nélkül léphet be, futtassuk a
mysql_secure_installation scriptet.
A következő lehetőségeink adódnak:
* root jelszó beállítása
* távoli root felhasználó tiltása
* test adatbázis törlése
* névtelen felhasználó törlése
* reload jog törlése
# mysql_secure_installation
Enter current password for root (enter for none): <-- Enter
Set root password? [Y/n] <-- y
New password: <-- A MariaDB root jelszavát írjuk ide
Re-enter new password: <-- Megismételjük a jelszót
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
A felhasználók, adatbázisok tesztelése:
# mysql
MariaDB [(none)]> select user, password, host from mysql.user;
MariaDB [(none)]> show databases;
===== Vezérlés =====
Az adatbázis szerver indítása:
# systemctl start mariadb
Az adatbázis-szerver leállítása.
# systemctl stop mariadb
Újraindítás után induljon el automatikusan a szerver:
# systemctl enable mariadb
Újraindítás után ne induljon el automatikusan a szerver:
# systemctl disable mariadb
Az adatbázis-szerver státuszának lekérdezése.
# systemctl status mariadb
Ügyeljünk arra, hogy a mariadb docker rendszerből indítva mysql néven érhető el,
SysVinit parancsokkal. Például:
# service mysql start
===== Admin felhasználó létrehozása =====
MariaDB [(none)]> grant all privileges
-> on *.*
-> to 'admin'@'localhost'
-> identified by 'titok';
MariaDB [(none)]> grant grant option
-> on *.*
-> to 'admin'@'localhost';
Minden jog az admin számára:
grant all privileges
on *.*
to 'admin'@'localhost';
Ellenőrzés:
MariaDB [(none)]> show grants for admin@localhost;
Egyben is beállítható
grant all privileges
on *.*
to 'admin'@'localhost'
identified by 'titok'
with grant option;
Jelszó utólag:
set password for 'admin'@'localhost' = password('titok');
Újabb verziókon lehet ez:
alter user 'admin'@'localhost' identified by 'titok';
===== Adatbázis és felhasználó felvétele =====
MariaDB [(none)]> create database dbnev;
Ellenőrzés:
MariaDB [(none)]> show databases;
MariaDB [(none)]> grant all privileges
-> on dbnev.*
-> to 'usernev'@'localhost'
-> identified by 'titok';
Ellenőrzés:
MariaDB [(mysql)]> select User from user;
==== Felhasználó törlése ====
drop user username@localhost;
==== Jogok visszavonása ====
revoke all privileges
on dbname.*
from 'username'@'localhost'
===== Adatbázisfelhasználó törlése =====
drop user 'nev'@'localhost';
===== Adatbázis exportálása =====
Az adatbázisokat exportálni, menteni a mysqldump paranccsal tudjuk.
A -u kapcsoló után adjuk meg a felhasználót. A -p hatására
bekéri a jelszót. Opcionálisan a megadható az adatbázis neve.
A parancs alapértelmezetten a képernyőre írja az adatokat.
Ezt egy ">" karakterrel állományba irányíthatjuk.
mysqldump -u felhasználónév -p adatbázisnév > adatHalom.sql
Ellenőrizzük a létrehozott fájl első 5 sorát:
head -5 adatHalom.sql
Ha nem kell felhasználónév és jelszó (root felhasználóval):
mysqldump adatbázisnév > adatHalom.sql
Ha csak egy tábla szükséges:
mysqldump adatbázisnév táblannév > adatHalom.sql
===== Adatbázis importálása =====
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE new_database;
mysql -u felhasználónév -p adatbázis < adatHalom.sql
# mariadb -D dbname < dbname.sql
===== Táblaműveletek =====
Tábla ürítése:
DELETE FROM táblanév;
Csak egy sor törlése:
DELETE FROM táblanév
WHERE mező=érték;
===== Távoli hozzáférés =====
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Keressük meg a bind-address sort és tegyük megjegyzésbe:
#bind-address = 127.0.0.1
systemctl restart mariadb
grant all privileges on dbnev.*
to 'felhasznalonev'@'%' identified by 'titok';
Ellenőrzés:
mysql -u user -p -e 'show grants for felhasznalonev@"%"' mysql
Távolról:
mysql -u nev -p -h ip_cim -e 'select * from dbnev'
===== Adatbázis másolása =====
Rendszergazdaként:
mysqldump forrasDb | mysql celDb
===== phpMyAdmin =====
apt install phpmyadmin
Adjuk meg egy jelszót, amivel elérheti a PhpMyAdmin beállításait tárolhatja adatbázisban.
==== SQL doboz fontmérete ====
.CodeMirror {
...
font-size: 2em;
}
===== MariaDB PAM azonosítás =====
apt update
apt install mariadb-server libmariadb-dev
nano /etc/pam.d/mariadb
auth required pam_unix.so
account required pam_unix.so
usermod -a -G shadow mysql
adduser feri
Kapcsolódunk a MariaDB szerverhez, rendszergazdaként:
mysql
A következő SQL parancsot kiadjuk:
install soname 'auth_pam';
create user 'feri'@'%' identified via pam using 'mariadb';
grant all on *.* to 'feri'@'%';
exit;
Most belépünk feriként:
mysql
select user(), current_user();
===== Források =====
* https://www.digitalocean.com/community/tutorials/how-to-import-and-export-databases-in-mysql-or-mariadb (2018)