# MySQL

# Hogyan készítsünk mentést az adatbázisról?

Majdnem minden modern weboldal MySQL adatbázist használ. A népszerűbb tartalom kezelő rendszerek, mint például a WordPress, Magento, Joomla minden adatot MySQL adatbázisban tárol. Abban az esetben ha valamilyen ok miatt szeretnénk mentést készíteni az adatbázisról, például MySQL szerver frissítés, akkor lehetőség van az adatbázisban tárolt adatok kidumpolására, illetve egy esetleges hiba esetén a dump visszatöltésére is.

#### MENTÉS KÉSZÍTÉSE

A szerverre SSH-n keresztül történő csatlakozást követően az alábbi parancs kiadásával készíthet mentést:

```
mysqldump -u user_name -p database_name --single-transaction | gzip -2 > db.sql.gz
```

A fenti parancs kiadásával egy tömörített dumpot hoz létre, egyetlen tranzakciós jelzővel.

<p class="callout info">Természetesen lehetőség van tömörítés nélküli dump készítésére is, azonban ez sokkal több időt fog igénybe venni, és a kidumpolt tartalom is több helyet fog lefoglalni.</p>

```
mysqldump -u user_name -p database_name > db.sql
```

#### A TÖMÖRÍTETT ARCHÍVUM KITÖMÖRÍTÉSE

A visszaállítást a következő parancs kiadásával végezhetjük el

```
gunzip < db.sql.gz | mysql -u user_name -p database_name
```

<p class="callout info">A tömörítetlen adatbázis visszaállításához a következő parancsot használhatjuk:</p>

```
mysql -u user_name -p database_name < db.sql
```

# phpMyAdmin telepítése cPaneles tárhelyre

A cPanel felületéről a phpMyAdmin-t el lehet érni, azonban a sok menü és a bejelentkezések miatt ez a használhatóságban okozhat problémát. A cPanel felületén létre kell hozni egy aldomain nevet az egyik domain név alatt.

- Az aldomain nevet a cPanel felületén az **Aldomainek/Subdomains** menüpontban tudja elkészíteni. Például: phpmyadmin.öndomain\_neve.tld.
- A cPanel alapértelmezett főoldali elrendezésében az oldal legalsó részén található a **Softaculous** telepítő. Itt kattintson a **Kategóriák/Categories** résznél bármelyik ikonra.
- A megjelenő oldal jobb felső részén a kereső mezőbe gépelje be a phpmyadmin szót, majd a megjelenő keresési eredmények között kattintson rá a phpMyAdmin feliratra.
- Az oldal felső részén kattintson az **Telepítés/Install** menüpontra.
- A második lehulló listából válassza ki a létrehozott aldomain nevet.
- Kattintson az **Advanced Options** felirat előtt található + jelre.
- Jelölje be az **Auto Upgrade** lehetőséget.
- Végül kattintson a **Telepítés** gombra.

A telepítést követően már el lehet érni a phpMyAdmint a böngészőből. Így az adatbázisok eléréséhez nem kell bejelentkeznie a cPanel felületére.

# Nagyméretű adatbázis importálása

A phpMyAdmin felületén maximum 50 MB-os mérettel rendelkező adatbázist lehet importálni. Abban az esetben ha Ön DotRoll Plus, DotRoll Ultra, vagy DotRoll Pro tárhely csomaggal rendelkezik akkor lehetősége van nagyobb méretű adatbázis importálására is.

- #### **SQL DUMP FELTÖLTÉSE**
    
    Egy FTP kliens segítségével másolja fel a tárhelyére az importálni kívánt SQL dump-ot. A fájl lehetőség szerint közvetlenül a tárhelyének kezdő könyvtárába másolja fel (/home/tárhelyazonosító).
- #### **MYSQL ADATBÁZIS, FELHASZNÁLÓ, JELSZÓ ÉS A JOGOSULTSÁGOK BEÁLLÍTÁSA**
    
    A cPanel felületén a MySQL adatbázisok menüpontban hozzon létre egy MySQL felhasználót, és ahhoz állítson be egy jelszót. Valamint a létrehozott felhasználót rendelje hozzá ahhoz az adatbázishoz amelybe importálni szeretne.
- #### **SSH KULCSPÁR LÉTREHOZÁSA, VAGY BEÁLLÍTÁSA**
- #### **SSH CSATLAKOZÁS**
    
    <div class="wp-caption alignnone">![PuTTY login](https://dotroll.com/wp-content/uploads/2020/08/ssh_hu_0.png)</div>PuTTY login
    
    <div class="wp-caption alignnone" id="bkmrk-"></div>A Host Name (or IP address) mezőben adja meg az Ön fődomain nevét.  
    A port maradhat az alapértelmezett 22-es port.  
    Következő lépésként kattintson az SSH menüpont előtti „+” jelre.
    
    <div class="wp-caption alignnone">![PuTTY bejelentkezés](https://dotroll.com/wp-content/uploads/2020/08/ssh_hu_1.png)</div>PuTTY bejelentkezés
    
    <div class="wp-caption alignnone" id="bkmrk--1"></div>A Private key file for authentication: mezőben adja meg a cPanel felületén elkészített kulcsát, vagy a korábban elkészített privát kulcsát.
    
    Ezt követően lehetősége van a konfiguráció elmentésre is, de azonnal csatlakozhat is a tárhelyéhez.
- #### **ADATBÁZIS IMPORTÁLÁSA SCREEN SEGÍTSÉGÉVEL**
    
    Amennyiben az adatbázis importálást nem szeretné végéig várni úgy a bejelentkezést követően adja ki a következő parancsot:
    
    ```
    screen -S mysqlimport
    ```
    
    Az adatbázis importálásához az alábbi parancsot kell kiadnia:
    
    ```
    mysql -uusernev -padatbazisfelhasznalojelszo -h localhost adatbazis_neve < importalandofajlneve.sql
    ```
    
    Az importálást szintén az Enter billentyű segítségével hagyhatja jóvá.
    
    A kapcsolók jelentése:
    
    
    - -u MySQL adatbázis felhasználói név. A kapcsolóval egybe kell írni a felhasználói nevet, nem kell szóközt tenni közé.
    - -p MySQL adatbázis felhasználó jelszava.
    - -h MySQL kiszolgáló címe
    
    A folyamat a szerver terheltségétől, valamint az adatbázis méretétől függően hosszabb időt is igénybe vehet. Amennyiben nem kívánja végigvárni a folyamatot nyomja le a CTRL billentyűt illetve az a betűt, ezt követően a d billentyűt.
    
    ```
    "Ctrl-a" "d"
    ```
    
    Ezzel a paranccsal a korábban indított screen leválasztásra kerül, azonban az ott kiadott műveletek a háttérben tovább folytatódnak. Ezt követően a jelenlegi munkamenetet bezárhatja a logout parancs vagy a „CTRL+D” billentyűk lenyomásával.
- #### **SCREEN MUNKAMENET VISSZASZERZÉSE**
    
    Az importálási folyamatot ellenőrizheti ha újra bejelentkezik a kiszolgálóra egy SSH kliens segítségével, majd kiadja a következő parancsot:
    
    ```
    screen -r
    ```
    
    Amennyiben több screen-t is futtat a háttéreben a következő parancs segítségével tudja megjeleníteni az éppen futó screen-ek listáját.
    
    ```
    screen -ls
    ```
    
    A rendszer ki fogja listázni a korábban leválasztott screen-ek listáját. A leválasztott munkamenethez a következő paranccsal tud ismét csatlakozni:
    
    ```
    screen -r 864870.mysqlimport
    ```
- #### **SCREEN MUNKAMENET BEZÁRÁSA, A FELTÖLTÖTT SQL FÁJL TÖRLÉSE**
    
    Amennyiben csak egy screen-t futtatunk úgy az exit paranccsal kiléphetünk belőle, illetve az alábbi paranccsal:
    
    ```
    "Ctrl-a" "d" "d"
    ```
    
    Sajnos a parancssoros adatbázis import esetén nem jelenik meg külön folyamat jelző az importálás folyamatáról. Amint az importálás befejeződött az alapértelmezett parancssort fogja visszakapni. Amennyiben az importálni kívánt fájlban valahol hiba van akkor a szerver megállítja az importálási folyamatot, és a hibát kiírja. Ilyen esetben az importálás csak a hibáig történik meg.
    
    Javasoljuk, hogy a tárhelyre felmásolt SQL dump fájlt az importálás befejezését követően távolítsa el a tárhelyről. Ezt az alábbi parancs segítségével tudja megtenni:
    
    ```
    rm importalandofajlneve.sql
    ```

# Adatbázis elérése SSH tunnelen keresztül

Fejlesztési célokra SSH-n keresztül biztosítunk hozzáférést a MySQL szerverünkhöz a Plus tárhely csomagtól.

A kapcsolat létrehozásához létre kell hozni egy SSH kulcspárt a cPanel felületén. Ezt követően a PuTTY segítségével tudunk csatlakozni SSH protokollon keresztül a tárhelyhez, azonban a csatlakozás előtt be kell állítani a tunnelt a PuTTY alkalmazásban.

A beállítás menete:

1. Az ablak bal oldali részében válasszuk ki a **Connection/SSH** lehetőséget azon belül pedig a **Tunnels** részt.
2. Itt az **Add new forwarded port** résznél a **Source port** mezőbe adja meg a **3306**-os port számot. A **Destination** részhez pedig a **localhost:3306** értéket, majd kattintson az **Add** gombra.
3. Az adatok megadása után kattintsunk az **Open** gombra. A megjelenő ablakban adja meg a tárhelye azonosítóját valamint az SSH kulcshoz beállított jelszavát.

Ezen beállítások segítségével Ön a localhost:3306-os portra kapcsolódva láthatja az adatbázisait, egészen addig ameddig a PuTTY segítségével létrehozott kapcsolatot nem bontja.

# MySQL szerver frissítés utáni lehetséges problémák és megoldások

Ha a MySQL szerveren végrehajtani kívánt művelet során az alábbi üzenethez hasonló hibaüzenettel találkozik:

```
Field 'field_name' doesn't have a default value
```

Akkor javasoljuk, hogy a MySQL kapcsolat felépítését követően futtassa le az alábbi query-t:

**5.7-es PHP verzióig az alábbi kódot érdemes használni:**

```
mysql_query("SET SESSION sql_mode = ''");
```

**7.0-ás, vagy a feletti PHP verziótól pedig az alábbi kódsort érdemes használni:**

```
mysqli_query("SET SESSION sql_mode = ''");
```