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

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

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

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

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

docker exec -it mariadb /bin/bash

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

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

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

MariaDB [(none)]&> status
--------------
mysql  Ver 15.1 Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      4
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.5.5-MariaDB-1:10.5.5+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:         2 min 1 sec

Threads: 2  Questions: 4  Slow queries: 0  Opens: 16  Open tables: 10  Queries per second avg: 0.033

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

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

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

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

다 했으면 나갑니다.

root@e144fdbab9be:/# exit
exit

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

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

❯ docker restart e144fdbab9be
e144fdbab9be

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

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

잘 변경되었습니다.

MariaDB [(none)]&> status
--------------
mysql  Ver 15.1 Distrib 10.5.5-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      3
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.5.5-MariaDB-1:10.5.5+maria~focal mariadb.org binary distribution
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:        /run/mysqld/mysqld.sock
Uptime:         1 min 46 sec

Threads: 2  Questions: 4  Slow queries: 0  Opens: 16  Open tables: 10  Queries per second avg: 0.037