[[oktatas:adatbázis-kezelés:mariadb|< MariaDB]]
====== MariaDB telepítés ======
* **Szerző:** Sallai András
* Copyright (c) 2013, Sallai András
* Szerkesztve: 2013-2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
A **MariaDB** tulajdonképpen egy **MySQL fork**, amely azért jött létre, hogy biztosítsa a MySQL környezet nyílt forráskódú megvalósítását, mivel a MySQL-nek új tulajdonosa lett, és az internetes közösség attól tartott nem marad a MySQL nyílt licencű.
2013-ban még külön tárolót kellett felvenni a MariaDB telepítéséhez. 2015-ben a MySQL és a
MariaDB is telepíthető volt, de egymással "konfliktban". 2017-ben már csak a MaraiDB
telepíthető.
===== Beszerzés =====
==== Windows ====
choco install mariadb
Tegyük útvonalba:
c:\Program Files\MariaDB 11.1\bin\
Így lesz egy kliens program is mariadb néven.
A szolgáltatások között mysql néven kell keresni:
sc query mysql
==== Debian GNU/Linux ====
A Debian alapú rendszerek, ma (2017), már alapértelmezetten a
MariaDB szervert telepítik, még ha a mysql-server csomagot telepítem, akkor is.
A MariaDB telepítéséhez:
apt install mariadb-server
Ha megnézzük a futó folyamatokat, akkor a következő folyamatot láthatjuk:
/usr/sbin/mysqld
Ami valójában egy MariaDB szerver.
==== Docker Compose ====
* Lásd: [[oktatas:adatbazis-kezeles:mariadb:docker]]
===== Felhasználókezelés =====
Felhasználók listázása:
select User from mysql.user;
Létrehozás:
create user 'janos'@'localhost';
Létrehozás jelszóval:
create user 'janos'@'localhost' identified by 'titok';
Létrehozás jelszóval, jogok beállításával:
grant all privileges on janosAdatbazisa.* to 'janos'@'localhost';
Felhasználók törlése:
drop user 'joska'@'localhost';
Ha szeretnénk UNIX_SOCKET-et beállítani egy felhasználónak:
create user 'janos' identified via unix_socket;
Felhasználók megtekintése:
select user, password, plugin from user;
vagy:
select user, password, plugin from user\G;
Milyen jogai vannak a janos felhasználónak:
show grants for 'janos'@'localhost';
==== Jelszó ====
Jelszó változtatása:
SET password FOR 'janos'@'localhost' = password('titok') ;
===== Biztonság növelése =====
Biztonsági beállításokhoz használjuk a következő scriptet:
# mysql_secure_installation
A következőket teszi lehetővé:
* a root számára jelszóbeállítás
* a localhoston kívüli engedélyezett root fiókok törlése
* a névtelen felhasználók törlése
* a névtelenül használható, test adatbázis törlése
Debian 9 és 10 rendszeren szükségtelen a használata, mert alapértelmezetten:
* a root felhasználónévvel, csak linuxos root felhasználóként lehet belépni
* nincs localhoston kívüli root felhasználó
* nincs névtelen felhasználó
* nincs névtelen felhasználóval elérhető test adatbázis
===== Kliens =====
A MariaDB szerver mellé feltelepszik egy kliens is, amit mysql
parancsként használhatunk. A korábbi MySQL szerverek mellé is
ez a parancssoros klienst települt.
Indítása tehát:
# mysql
Vagy:
# mariadb
A Debian 9 verziójától a MariaDB a UNIX_SOCKET hitelesítő
kiterjesztéssel telepszik, és a root felhasználó számára
ez be is van állítva. A 9-es verziótól az is változás, hogy
csak egyetlen root felhasználót kapunk. A mysql klienssel
rendszergazdaként jelszó nélkül be tudunk jelentkezni, köszönhetően
a UNIX_SOCKET kiterjesztésnek. Ez persze azt is jelenti, hogy ha
megadunk egy jelszót, még azt sem veszi figyelembe.
UNIX_SOCKET esetén, a Linuxon bejelentkezett felhasználó már egyszer
hitelesítette magát. Ha ez a root felhasználó, akkor MariaDB szerveren
nem kell root felhasználóként újra azonosítást végeznie.
A kiterjesztés beállítható a más felhasználók számára is, lásd Felhasználók kezelése.
Adatbázis kiválasztása:
use dbnev
Adatbázis ne legyen kiválasztva:
create database a;
use a;
drop database a;
===== mycli kliens =====
A mycli csomag parancskiegészítés lehetősége. Telepítése:
apt install mycli
Bejelentkezés hasonló a mysql kliensnél megszokottal:
mycli -u janos -p
===== sqlline kliens =====
Telepítés:
apt install sqlline
Az sqlline indítása:
$ sqlline -d com.mysql.jdbc.Driver
Kapcsolódás adatbázishoz:
sqlline> !connect jdbc:mysql://localhost:3306/test01 janos titok
A kapcsolódás eredménye:
sqlline> !connect jdbc:mysql://localhost:3306/test01 janos titok
Connecting to jdbc:mysql://localhost:3306/test01
Connected to: MySQL (version 5.5.5-10.1.23-MariaDB-9+deb9u1)
Driver: MySQL Connector Java (version mysql-connector-java-5.1.42 ( Revision: ${revinfo.commit} ))
Autocommit status: true
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:mysql://localhost:3306/test01> !tables
+------------+--------------+-------------+-------------+----------+----------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_CAT |
+------------+--------------+-------------+-------------+----------+----------+
+------------+--------------+-------------+-------------+----------+----------+
0: jdbc:mysql://localhost:3306/test01>
Tábla létrehozása:
0: jdbc:mysql://localhost:3306/test01> create table szemelyek ( nev varchar(50));
* https://github.com/julianhyde/sqlline
===== Webes felület =====
apt install phpmyadmin php-mbstring php-gettext
Böngészőbe írjuk be:
http://localhost/phpmyadmin/
Webes felületen nem tudunk belépni rootként, ha be van kapcsolva a unix_socket.
Ezért kapcsoljuk ki, ha ezt szeretnénk:
# mysql -u root -p mysql
MariaDB [mysql]> update user set plugin='' where user='root';
MariaDB [mysql]> SET password = password('titok') ;
MariaDB [mysql]> flush privileges;
==== Webes felület felhasználója ====
CREATE DATABASE dbnev;
GRANT ALL PRIVILEGES ON dbnev.* TO 'janos'@'localhost' IDENTIFIED BY 'titok';
FLUSH PRIVILEGES;
===== Típusok =====
^ Valós típusok ^^^^^^
^ Precizitás ^ előjel \\ bitek ^ exponens \\ [bitek] ^ mantisza \\ [bitek] ^ exponens \\ [ decimálisan ] ^ tartomány \\ [ decimálisan ] ^
| Single | 1 | 8 | 24 | -38-tól -- +35 | 7 számjegy |
| Double | 1 | 11 | 53 | -304-tól -- +308 | 15 számjegy |
===== MariaDB SQL =====
Tábla létrehozása;
MariaDB [Ketto]> create table Tabla_1 (fizetes float);
Az RLIKE használata lehetővé teszi a szabályos kifejezések használatát:
MariaDB [zoldZrt]> select nev from Szemelyek where nev rlike "^a.*";
==== Titkosítás ====
select sha2("titok", 512);
===== Monitorozás =====
A mariadb-client-10.1 csomaggal telepítésre kerül a innotop nevű parancs is.
Az innotop egy top klón, MariaDB vagy MySQL számára.
Indítása:
innotop
vagy:
innotop -u root
esetleg:
innotop -h 127.0.0.1 -u root -p titok
A felület:
[RO] Dashboard (? for help) localhost, 2h27m, 0.40 QPS, 1/1/2 con/run/cac thds,
Uptime MaxSQL ReplLag QPS Cxns Run Miss Lock Tbls Repl SQL
2h27m 0.40 1 0.00 0 27
A "@" karakterrel kezdeményezhető új konfiguráció:
You can enter the name of a new connection to create it.
____________________________ Choose from ____________________________
localhost DBI:mysql:;host=localhost;mysql_read_default_group=client
Choose connections for this mode: helyi
There is no connection called 'helyi'. Create it?: y
Következő lépés:
Typical DSN strings look like
DBI:mysql:;host=hostname;port=port
The db and port are optional and can usually be omitted.
If you specify 'mysql_read_default_group=mysql' many options can be read
from your mysql options files (~/.my.cnf, /etc/my.cnf).
Enter a DSN string: DBI:mysql:;host=localhost
Következő lépés:
Optional: enter a table (must not exist) to use when resetting InnoDB deadlock information:
Do you want to specify a username for helyi?: y
Do you want to specify a password for helyi?: y
Enter username for helyi: root
Enter password for 'root' on helyi:
Save password in plain text in the config file?: y
Eredmény:
[RO] Dashboard (? for help) helyi, 2h25m, 0.30 QPS, 2/1/1 con/run/cac thds, 10.1
Uptime MaxSQL ReplLag QPS Cxns Run Miss Lock Tbls Repl SQL
2h25m 0.30 2 0.00 0 27
A -h -u -p kapcsolókkal megadott adatok az újraindítás után elvesznek.
Ha szeretnénk menteni, akkor használjuk a --write kapcsolót:
innotop --write
Ha a konfiguráció mentésre került, akkor a létrejön egy a következő könyvtár:
~/.innotop
Benne a konfigurációs állomány és a kiegészítők számára egy könyvtár.
ls -l .innotop
összesen 8
-rw------- 1 root root 2712 júl 10 10:48 innotop.conf
drwxr-xr-x 2 root root 4096 júl 10 10:48 plugins
===== Azonosítás módja =====
use mysql
select user, authentication_string, plugin, host from user;
===== Módosítások =====
==== Tartalom törlése ====
DELETE FROM table
===== VSCode =====
==== SQLTools ====
Több csomagból:
* SQLTools
* Connecting users to many of the most commonly use...
* Matheus Teixeira
* SQLTools MySQL/MariaDB
* Matheus Teixeira *
* Az első része
* SQLTools SQLite
==== Database Client ====
Maximum 3 kapcsolat:
* Database manager for MySQL/MariaDB, PostgreSQL,...
* Weijan Chen
==== Egyéb ====
* MySQL
* MySQL management tool
* Jun Han
===== Források =====
* http://en.wikipedia.org/wiki/MariaDB
* https://mariadb.org
* https://mariadb.org/learn/
* https://mariadb.com/kb/en/sql-99/ieee-binary-floats/ (valós számok)
* https://github.com/innotop/innotop
* https://www.percona.com/blog/2013/10/14/innotop-real-time-advanced-investigation-tool-mysql/
* https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/