$ mkdir /home/lim/opt/temp/mariadb/data
$ mkdir /home/lim/opt/temp/mariadb/etc/mysql
$ docker container run -d -p 13306:3306 \
-e MYSQL_ROOT_PASSWORD=temp_root_password \
-e MYSQL_DATABASE=temp_db \
-e MYSQL_USER=temp_user \
-e MYSQL_PASSWORD=temp_user_password \
-e TZ=Asia/Seoul \
-v /home/lim/opt/temp/mariadb/data:/var/lib/mysql \
-v /home/lim/opt/temp/mariadb/etc/mysql:/etc/mysql \
--name temp_mariadb mariadb \
$ sudo vi /home/lim/opt/temp/mariadb/etc/mysql/my.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
lower_case_table_names = 1
lower_case_table_names 옵션의 자세한 내용은 여기
$ docker restart temp_mariadb
$ docker exec -it temp_mariadb bash
$ mysql -u root -p
$ status
$ show variables like 'lower_case_table_names';
데이터베이스와 사용자는 docker 컨테이너 생성 시 생성되었습니다.
생성되어져있는 사용자에 권한을 부여합니다.
user 테이블 definer가 mariadb.sys 이기때문에 유저 테이블 insert가 안된다.
mariadb 상위버전부터는 user 테이블이아닌 view로 바뀌어서 생기는 문제
create user 및 grant를 활용해서 외부접속처리를 하였다.
$ grant all privileges on temp_db.* to temp_user@'%';
$ flush privileges;
$ set password for 'mariadb.sys'@'localhost' = password('temp_sys_password');
컨테이너가 서버에 올라갔으니 커넥션테스트를 해봅니다.
Docker compose를 사용 시 더욱 간편하게 DB컨테이너의 생성이 가능합니다.
$ mkdir /home/lim/opt/temp/mariadb
$ mkdir /home/lim/opt/temp/mariadb/etc
$ mkdir /home/lim/opt/temp/mariadb/var
$ /home/awalab/opt/safety-guide/database/etc/mysql/conf.d/my.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
lower_case_table_names = 1
$ vi /home/lim/opt/temp/mariadb/docker-compose.yml
version: '3.1'
services:
db:
container_name: temp_mariadb
image: mariadb:10.5.6
restart: always
ports:
- 3348:3306
volumes:
- /home/lim/opt/temp/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro
- /home/lim/opt/temp/mariadb/var/lib/mysql:/var/lib/mysql
- /home/lim/opt/temp/mariadb/var/log/maria:/var/log/maria
environment:
MYSQL_PORT: 3306
MYSQL_ROOT_PASSWORD: temp_root_password
TZ: Asia/Seoul
$ docker-compose up -d