[[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)