2022. 4. 9. 17:05 DB/mariadb
docker를 이용한 mariadb 로컬 환경 구축
1. 설정시 유의 사항
- 기본 charset을 utf8 또는 utf8mb4 등으로 설정하여 한글이 저장될 수 있도록 해야 함
- Timezone을 GMT+9 로 해야 하나?
- 사용자, 접속 IP 관련 세팅
2. docker run을 이용하는 방법
- 개발을 할때는 latest 보다는 버전을 명시적으로 지정해 줘야 함
- docker -d(detach) 옵션은 컨테이너 내부에서 나와도 컨테이너가 실행 중이나 attach 명령어는 컨테이너 배부에서 나오면 컨테이너가 종료됨
- docker run -d -p 3306:3306 --name jwt -e MARIADB_USER=test -e MARIADB_PASSWORD=test -e MARIADB_ROOT_PASSWORD=test mariadb:10.7.3
- 기동시 db 인스턴스를 생성해 주지 않은 이유는 econding 관련 설정을 해 주고 생성하기 위함
-e를 주고 해도 될거 같은데, mariadb 전체 설정을 바꾸고 하기 위함
3. mariadb 접속
- docker exec -it jwt bash
- mysql 접속
mysql -u root -p - 이렇게 할 경우 mysql command not found 오류가 나는 경우가 있다.
이걸 못 해결해서 한참을 삽질 했다.
mysql 로 접속 하기 위해서는 mysql-client 를 설치 해야 한다. - sudo apt update
sudo apt install mysql-client - status 를 해 보면, encoding 이 잘못 세팅 된걸 확인 할 수 있음
4. mysql 설정 수정
- 왜 디렉토리 이름이 mysql 이고, 설정 파일이 my.cnf 일까 생각해 봤는데....
아마 mysql 에서 fork 로 개발을 시작해서 그러지 않을까 싶다. - vi 편집기 설치를 위해
apt-get update
apt-get install vim - /etc/mysql/my.cnf 파일 편집
# 이 부분을 추가한다.
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# mysql 5.5 부터는 아래 옵션이 없어도 된다고 함
# [client]
# default-character-set = utf8
# [mysql]
# default-character-set = utf8
# [mysqldump]
# default-character-set = utf8
5. docker container 중지, 재시작
- docker container stop jwt
- docker container start jwt
6. mysql 접속 해서 econding 확인
- docker exec -it jwt bash
- mysql -u root -p
- status
7. db 인스턴스 생성
- create database jwt;
8. 사용자 로컬, DB 접속 권한 부여
- 툴을 이용하여 지금 생성한 test 계정으로 jwt 에 접속을 하면 권한이 없다고 나옴
- root 로 해보면 잘 접속 되는 것을 확인 할 수 있음
- mysql 데이터 베이스의 user 뷰에 update 를 해 줘야 함
- mysql -u root -p 접속 후 아래 sql을 실행.
jwt 데이터 베이스의 모든 권한을 test 계정에게 주겠다는 의미임. 실제 운영에서 이렇게 하면 안됨.
개발이기 때문에 모든 권한을 줌
MariaDB > grant all privileges on jwt.* to 'test'@'%';
MariaDB > flush privileges;
9. 툴을 이용하여 재 접속 성공