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 를 수정할 수 있다.
참고
반응형