# MariaDB telepítése Docker konténerben

Ez az útmutató bemutatja, hogyan telepíthető és futtatható a MariaDB egy Docker konténerben. A Docker használata leegyszerűsíti a telepítést, az izolációt és a hordozhatóságot.

## Előfeltételek

- **Docker:** A Docker-nek telepítve kell lennie a rendszereden.

## Lépések

### 1. MariaDB Docker Képfájl Letöltése

Először le kell töltenünk a hivatalos MariaDB képfájlt a Docker Hub-ról.

```bash
docker pull mariadb
```
Ez a parancs letölti a legfrissebb (`latest`) MariaDB verziót.

### 2. Adat-kötet (Volume) Létrehozása

Annak érdekében, hogy az adatbázis adatai megmaradjanak a konténer újraindítása vagy törlése után is, létrehozunk egy Docker "volume"-ot.

```bash
docker volume create mariadb_data
```

### 3. MariaDB Konténer Futtatása

Most indítsuk el a MariaDB konténerét a korábban létrehozott kötettel.

```bash
docker run -d \
    --name my-mariadb \
    -p 3306:3306 \
    -v mariadb_data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw \
    mariadb
```

**A parancs paramétereinek magyarázata:**
- `-d`: A konténert a háttérben (detached mode) futtatja.
- `--name my-mariadb`: Nevesített konténert hoz létre (`my-mariadb`) a könnyebb hivatkozás érdekében.
- `-p 3306:3306`: A gazdagép (host) 3306-os portját összekapcsolja a konténer 3306-os portjával. Így a helyi hálózaton keresztül elérhetővé válik az adatbázis.
- `-v mariadb_data:/var/lib/mysql`: Csatolja a `mariadb_data` kötetet a konténer `/var/lib/mysql` könyvtárához, ahol az adatbázis fájljai tárolódnak.
- `-e MYSQL_ROOT_PASSWORD=my-secret-pw`: Beállítja a `root` felhasználó jelszavát. **Fontos: Cseréld le a `my-secret-pw` értéket egy erős, biztonságos jelszóra!**
- `mariadb`: A futtatandó képfájl neve.

### 4. Csatlakozás az Adatbázishoz

Csatlakozhatsz a futó MariaDB konténerhez egy SQL klienssel, vagy a `docker exec` paranccsal.

```bash
docker exec -it my-mariadb mysql -u root -p
```
A parancs be fogja kérni a `root` jelszót (amit a `-e` kapcsolóval adtál meg).

## Konfiguráció `docker-compose` segítségével (Javasolt)

A `docker-compose` egy eszköz, amely megkönnyíti a több konténerből álló alkalmazások definiálását és futtatását. Ez a javasolt módszer a MariaDB (és a hozzá kapcsolódó alkalmazások) kezelésére.

Hozd létre a következő `docker-compose.yml` fájlt:

```yaml
version: '3.8'

services:
  db:
    image: mariadb
    container_name: mariadb-compose
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
    ports:
      - "3306:3306"
    volumes:
      - mariadb_data:/var/lib/mysql

volumes:
  mariadb_data:
```

A futtatáshoz navigálj abba a könyvtárba, ahol a `docker-compose.yml` fájl található, és futtasd a következő parancsot:

```bash
docker-compose up -d
```

## Távoli Adminisztrációs Felhasználó Létrehozása

Az alábbi lépések bemutatják, hogyan hozhatsz létre egy új felhasználót, aki távolról is be tud lépni és teljes adminisztrációs jogokkal rendelkezik (új felhasználók és adatbázisok létrehozása, jogok kezelése stb.).

1.  **Lépj be a MariaDB konténerbe `root` felhasználóként:**

    ```bash
    docker exec -it my-mariadb mysql -u root -p
    ```
    (Add meg a `root` jelszót, amikor kéri.)

2.  **Futtasd az alábbi SQL parancsokat:**

    Cseréld le a `remote_admin` nevet a választott felhasználónévre, és a `super-strong-password`-ot egy erős, biztonságos jelszóra.

    ```sql
    -- Felhasználó létrehozása. A '%' azt jelenti, hogy bármilyen IP címről bejelentkezhet.
    -- Biztonsági okokból érdemes lehet a '%' helyett egy konkrét IP címet megadni, pl. 'remote_admin'@'192.168.1.100'.
    CREATE USER 'remote_admin'@'%' IDENTIFIED BY 'super-strong-password';

    -- Minden jog megadása az összes adatbázison (*.*), és a jog továbbadásának engedélyezése (WITH GRANT OPTION).
    GRANT ALL PRIVILEGES ON *.* TO 'remote_admin'@'%' WITH GRANT OPTION;

    -- A jogosultsági táblák frissítése a változtatások érvényesítéséhez.
    FLUSH PRIVILEGES;

    -- Kilépés
    EXIT;
    ```

Ezzel a `remote_admin` felhasználó képes lesz bármely SQL kliensből (pl. DBeaver, HeidiSQL, DataGrip) csatlakozni a Docker gazdagép IP címén és a 3306-os porton keresztül, és teljes körűen adminisztrálni az adatbázis-szervert.
