[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