[Database] Docker 로 MariaDB 설치하기

    Docker 로 MariaDB 설치하기

    1. Docker image 로 MariaDB 설치하기

    Docker image 내려받기

    docker pull mariadb

    이미지를 내려 받은 후 아래 명령어로 확인 가능하다.

    docker images

    MariaDB container 생성

    docker run -p 3306:3306 --name my-mariadb -e MARIADB_ROOT_PASSWORD=admin -d mariadb 
    • -- name : my-mariadb 라는 컨테이너 이름을 부여한다.
    • -p 3306:3306 : host port number:container port number
    • -e : -e는 환경 변수 옵션이다.
      -e MARIADB_ROOT_PASSWORD=admin : 비밀번호를 지정
    • -d : detached 모드에서 실행되어 백그라운드로 실행한다.
    • mariadb : 앞서 받은 이미지 이름이다.

    설치된 컨테이너를 확인해보자

    // 실행 중인 컨테이너만 조회
    docker ps
    
    // 전체 조회
    docker ps -a
    CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                      NAMES
    659f872581ac   mariadb   "docker-entrypoint.s…"   59 minutes ago   Up 48 minutes   127.0.0.1:3306->3306/tcp   my-mariadb

    컨테이너 시작 / 중지 / 재시작

    docker start my-mariadb
    docker stop my-mariadb
    docker restart my-mariadb

    2. MariaDB 버전 확인

    설정을 위해 MariaDB 에 접속한다.

    Docker 컨테이너 접속

    docker exec -it my-mariadb /bin/bash

    MariaDB 버전 확인

    mysql --version

    실행 예시

    root@659f872581ac:/# mysql --version
    mysql  Ver 15.1 Distrib 10.6.4-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

    3. DB 사용자 추가하기

    개발용 유저를 데이터베이스에 추가한다.

    DB 접속

    mysql -u root -p

    사용자 추가

    // localhost 에서만 접속 가능한 계정 생성
    mysql> USE mysql;
    mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
    mysql> FLUSH PRIVILEGES;
    
    
    // 모든 DB, 테이블에 접속 가능한 계정 생성
    mysql> USE mysql;
    mysql> CREATE USER 'YOUR_SYSTEM_USER'@'%' IDENTIFIED BY 'YOUR_PASSWD';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'%';
    mysql> FLUSH PRIVILEGES;
    
    mysql> USE mysql;
    mysql> CREATE USER 'sa'@'%' IDENTIFIED BY 'password';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'sa'@'%';
    mysql> FLUSH PRIVILEGES;
    
    • 사용자: sa
    • 패스워드: password

    4. MariaDB characterset 변경

    characterset 확인

    데이터베이스에 접속하여 상태를 확인해보자. 아래 명령어 둘 중 아무거나 실행해본다.
    status: 상태 확인
    show variables like 'c%';

    MariaDB [(none)]> status
    
    --------------
    mysql  Ver 15.1 Distrib 10.6.4-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
    
    Connection id:          11
    Current database:
    Current user:           root@localhost
    SSL:                    Not in use
    Current pager:          stdout
    Using outfile:          ''
    Using delimiter:        ;
    Server:                 MariaDB
    Server version:         10.6.4-MariaDB-1:10.6.4+maria~focal mariadb.org binary distribution
    Protocol version:       10
    Connection:             Localhost via UNIX socket
    Server characterset:    utf8mb4
    Db     characterset:    utf8mb4
    Client characterset:    latin1
    Conn.  characterset:    latin1
    UNIX socket:            /run/mysqld/mysqld.sock
    Uptime:                 42 min 56 sec
    
    Threads: 1  Questions: 20  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.007

    Config 파일 수정

    latin1 으로 설정되어있다. 한글 및 이모지 깨짐 방지를 위해 utf8mb4로 수정한다.
    /etc/mysql/my.cnf 파일을 수정한다. 파일 끝에 아래 내용을 추가한다.

    vi 에러 발생 시 아래 참고하여 컨테이너 /bin/bash에 vim 을 설치한다
    vim 설치 방법

    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    skip-character-set-client-handshake

    vi 로 수정 후 저장 후 재시작 한다.

    show variables like 'c%'; 으로 확인해보면 characterset이 변경되었다.

    MariaDB [(none)]> show variables like 'c%';
    +----------------------------------+----------------------------+
    | Variable_name                    | Value                      |
    +----------------------------------+----------------------------+
    | character_set_client             | utf8mb4                    |
    | character_set_connection         | utf8mb4                    |
    | character_set_database           | utf8mb4                    |
    | character_set_filesystem         | binary                     |
    | character_set_results            | utf8mb4                    |
    | character_set_server             | utf8mb4                    |
    | character_set_system             | utf8mb3                    |
    | character_sets_dir               | /usr/share/mysql/charsets/ |
    | check_constraint_checks          | ON                         |
    | collation_connection             | utf8mb4_unicode_ci         |
    | collation_database               | utf8mb4_unicode_ci         |
    | collation_server                 | utf8mb4_unicode_ci         |
    | column_compression_threshold     | 100                        |
    | column_compression_zlib_level    | 6                          |
    | column_compression_zlib_strategy | DEFAULT_STRATEGY           |
    | column_compression_zlib_wrap     | OFF                        |
    | completion_type                  | NO_CHAIN                   |
    | concurrent_insert                | AUTO                       |
    | connect_timeout                  | 10                         |
    | core_file                        | OFF                        |
    +----------------------------------+----------------------------+
    20 rows in set (0.001 sec)

    5. 마치며

    docker image 를 이용하여 MariaDB를 설치하고 user 추가, config 를 수정할 수 있다.

    참고

    반응형

    댓글

    Designed by JB FACTORY