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