Epistemology

The truth is out there.

Docker를 사용해서 MariaDB을 설치하기

2020-09-26

참고: 이 글은 JiHun님의 Docker를-사용해서-MariaDB-설치하기을 참고했습니다. 자세한 내용은 이 글을 참고하세요!

docker 에 mariadb container를 받고 실행합니다. MYSQL_ROOT_PASSWORD = RT27hDosK에 쓴 RT27hDosK은 DB 비번입니다. 적절하게 고쳐주세요. 연습용으로 쓰실 것이면, 그대로 사용해도 무방합니다.

1docker pull mariadb
2docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=RT27hDosK mariadb

앞에서 실행한 container에 들어가서 bash를 실행합니다.

1docker exec -it mariadb /bin/bash

container에 들어갔으니, mysql으로 들어가겠습니다. 피번은 앞에서 MYSQL_ROOT_PASSWORD = RT27hDosK이라고 했으니 RT27hDosK을 입력하시면 됩니다.

1root@e144fdbab9be:/# mysql -u root -p
2Enter password:

들어갔으니 DB상태를 살펴보겠습니다. latin1이 2개 있습니다. 이것때문에 한글이 깨질 수 있습니다. 변경해보겠습니다.

 1MariaDB [(none)]&> status
 2--------------
 3mysql  Ver 15.1 Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
 4
 5Connection id:      4
 6Current database:
 7Current user:       root@localhost
 8SSL:            Not in use
 9Current pager:      stdout
10Using outfile:      ''
11Using delimiter:    ;
12Server:         MariaDB
13Server version:     10.5.5-MariaDB-1:10.5.5+maria~focal mariadb.org binary distribution
14Protocol version:   10
15Connection:     Localhost via UNIX socket
16Server characterset:    utf8mb4
17Db     characterset:    utf8mb4
18Client characterset:    latin1
19Conn.  characterset:    latin1
20UNIX socket:        /run/mysqld/mysqld.sock
21Uptime:         2 min 1 sec
22
23Threads: 2  Questions: 4  Slow queries: 0  Opens: 16  Open tables: 10  Queries per second avg: 0.033

앞에 설정을 바꾸기 위해서는 도커 컨테이너 안에 있는 파일을 고쳐야 합니다. 그런데 에디터가 없습니다. 에디터를 설치하고 파일을 열겠습니다.

1root@e144fdbab9be:/# apt-get update
2root@e144fdbab9be:/# apt-get install nano
3root@e144fdbab9be:/# nano /etc/mysql/my.cnf

앞에서 연 /etc/mysql/my.cnf 파일에서 내용을 아래와 같이 추가/수정해 줍니다.

 1[client]
 2default-character-set = utf8mb4
 3
 4[mysql]
 5default-character-set = utf8mb4
 6
 7[mysqld]
 8collation-server = utf8_unicode_ci
 9init-connect='SET NAMES utf8'
10character-set-server = utf8

다 했으면 나갑니다.

1root@e144fdbab9be:/# exit
2exit

이제 변경한 내용을 적용하시려면 mariadb를 재시작해야 합니다. 우선 mariadb ID를 다음과 같이 찾습니다. 그런 다음 그 ID를 가지고 mariadb를 재실행합니다.

1❯ docker ps
2CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
3e144fdbab9be        mariadb             "docker-entrypoint.s…"   20 minutes ago      Up 20 minutes       0.0.0.0:3306->3306/tcp   mariadb
4
5❯ docker restart e144fdbab9be
6e144fdbab9be

지금까지 한 것을 확인하러 컨데이너에 들어갑니다.

1docker exec -it mariadb /bin/bash
2mysql -u root -p
3# MYSQL_ROOT_PASSWORD=RT27hDosK
4Enter password:

잘 변경되었습니다.

 1MariaDB [(none)]&> status
 2--------------
 3mysql  Ver 15.1 Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
 4
 5Connection id:      3
 6Current database:
 7Current user:       root@localhost
 8SSL:            Not in use
 9Current pager:      stdout
10Using outfile:      ''
11Using delimiter:    ;
12Server:         MariaDB
13Server version:     10.5.5-MariaDB-1:10.5.5+maria~focal mariadb.org binary distribution
14Protocol version:   10
15Connection:     Localhost via UNIX socket
16Server characterset:    utf8
17Db     characterset:    utf8
18Client characterset:    utf8mb4
19Conn.  characterset:    utf8mb4
20UNIX socket:        /run/mysqld/mysqld.sock
21Uptime:         1 min 46 sec
22
23Threads: 2  Questions: 4  Slow queries: 0  Opens: 16  Open tables: 10  Queries per second avg: 0.037