> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudtype.io/llms.txt
> Use this file to discover all available pages before exploring further.

# MariaDB

> MariaDB 배포 가이드입니다.

ale에서 MariaDB를 배포하고, 관리 툴을 사용하여 TCP 방식으로 접속하는 가이드입니다.
본 문서에서는 DB 툴로 MySQL Workbench를 사용했으며, <u>[여기](https://dev.mysql.com/downloads/workbench/)</u>에서 다운로드 받을 수 있습니다.

<div className="mt-5">
  <div className={`x-alert x-alert-danger flex items-center justify-center`}>
    <div className="text-3xl px-3 mr-3 align-middle">
      <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 0 256 256">
        <path d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71Zm-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73ZM116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0Zm28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16Z" />
      </svg>
    </div>

    <div className="flex-1">
      <div className="text-sm">
        ale에서 제공하는 데이터베이스는 동적 확장이나 자동 백업 등 매니지드 데이터베이스 기능을 지원하지 않습니다. 데이터 손실 및 기타 우발적인 데이터 관련 사고에 유의하세요.
      </div>
    </div>
  </div>
</div>

## MariaDB

### MariaDB 배포하기

시작하기 페이지의 데이터베이스 카테고리 또는 ⌘ + K 를 사용하여 mariadb를 검색하고 MariaDB 템플릿을 클릭합니다.

<Figure className="mt-5 mb-10 p-3" src="databases/mariadb-1.png" />

**설정변경** 을 클릭하고 **Root Password** 설정 후 **배포하기** 를 클릭하여 배포를 진행합니다.
**Root Password** 를 별도로 설정하지 않으면 프로젝트 내부에 랜덤값의 암호가 `[서비스명]-root-password` 시크릿으로 설정됩니다.

생성된 시크릿을 활용하는 방법은 **[환경변수 설정](/ko/developers/env)** 가이드를 참고해주세요.

<Figure className="mt-5 mb-10 p-3" src="databases/mariadb-2.png" />

***

### 프로젝트 내부에서 서비스 간 통신하기

<div className="mt-5 my-10">
  <div className={`x-alert x-alert-info flex items-center justify-center`}>
    <div className="text-3xl px-3 mr-3 align-middle">
      <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 0 256 256">
        <path d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71Zm-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73ZM116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0Zm28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16Z" />
      </svg>
    </div>

    <div className="flex-1">
      <div className="text-sm">
        ale에서 배포된 데이터베이스는 생성된 주소와 포트를 통해 프로젝트 외부에서 TCP로 통신할 수 있는 방법 뿐만 아니라 배포환경 내부에서 서비스명을 호스트명으로 참조하는 기능을 지원하고 있습니다. <br />프로젝트 내부의 동일 배포환경에 데이터베이스 및 기타 서비스가 배포 되어있는 경우 보안 및 성능 측면에서 서비스명을 호스트명으로 하여 접속하는 방법을 권장합니다.
      </div>
    </div>
  </div>
</div>

프로젝트 내부에서 호스트명으로 활용하고자 하는 값을 서비스 이름으로 입력하여 MariaDB를 배포합니다.

<Figure className="mt-5 mb-10 p-3" src="databases/mariadb-3.png" />

배포 후 상세페이지에 진입하여 도메인 탭을 클릭합니다.
도메인 항목에서 두 개의 호스트:포트 조합을 확인할 수 있으며, 각 역할은 다음과 같습니다.

<Figure className="mt-5 mb-5 p-3" src="databases/mariadb-4.png" />

* **`svc.xxx.cloudtype.app:[포트번호]`**
  * 배포환경 외부 통신 전용이며, 별도의 TCP 접속 허용 설정 필요
  * 포트는 데이터베이스 신규 배포 시마다 변경되며 고정 불가
* **`[서비스명]:[포트번호]`**
  * 배포환경 내부에서 서비스 간 통신을 하는 데에 활용되며, 상기 이미지의 `mariadb-prod` 에 해당함
  * 포트는 `3306` 으로 고정됨

***

### TCP 외부 접속 허용하기

프로젝트 패널 우측 상단부의 ⚙️ 아이콘을 클릭하고, 설정 하단의 방화벽 항목에서 **TCP 외부 접속 허용하기**을 활성화 한 후 **적용하기** 버튼을 클릭합니다.

<Figure className="mt-5 mb-5" src="databases/mariadb-5.png" />

설정이 정상적으로 적용되면 **`svc.xxx.cloudtype.app:[포트번호]`** 형식의 주소로 외부에서 접근이 가능해집니다.
TCP 외부 접속을 허용해야 하는 경우는 다음과 같습니다.

* ale의 다른 프로젝트에서 배포했거나 동일 프로젝트의 다른 배포환경에서 배포한 서비스에서 접근하는 경우
* 로컬 환경에서 개발 중인 서비스를 테스트 하기 위해 접근이 필요한 경우
* 로컬 환경의 DB 툴을 활용해 접근하는 경우

<div className="mt-5 my-10">
  <div className={`x-alert x-alert-danger flex items-center justify-center`}>
    <div className="text-3xl px-3 mr-3 align-middle">
      <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 0 256 256">
        <path d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71Zm-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73ZM116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0Zm28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16Z" />
      </svg>
    </div>

    <div className="flex-1">
      <div className="text-sm">
        TCP 접속 허용 설정은 배포환경 내에 배포된 서비스 전체에 적용되며, 서비스 개별 설정은 불가합니다.
      </div>
    </div>
  </div>
</div>

***

### MySQL Workbench와 연결하기

MySQL Workbench를 실행한 후 도메인 탭에서 확인한 호스트명, 포트 번호 및 계정 정보를 아래와 같이 입력하면 ale에서 배포한 MariaDB와 연결이 완료됩니다.

<Figure className="mt-5 mb-5" src="databases/mariadb-6.png" />

<div className="mt-5">
  <div className={`x-alert x-alert-danger flex items-center justify-center`}>
    <div className="text-3xl px-3 mr-3 align-middle">
      <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 0 256 256">
        <path d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71Zm-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73ZM116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0Zm28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16Z" />
      </svg>
    </div>

    <div className="flex-1">
      <div className="text-sm">
        접속이 되지 않는 경우 TCP 외부 접속 설정을 확인해주세요.
      </div>
    </div>
  </div>
</div>

<div className="mt-5">
  <div className={`x-alert x-alert-info flex items-center justify-center`}>
    <div className="text-3xl px-3 mr-3 align-middle">
      <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 0 256 256">
        <path d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71Zm-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73ZM116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0Zm28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16Z" />
      </svg>
    </div>

    <div className="flex-1">
      <div className="text-sm">
        MySQL Workbench 이외에도 DataGrip, Dbeaver, phpMyAdmin 등 다양한 DB 툴을 사용하여 접속할 수 있습니다.
      </div>
    </div>
  </div>
</div>
