Docker 로 DB 실행하기

알파로그·2023년 4월 30일
0

Linux 와 Docker

목록 보기
21/28

✏️ 필요성

  • 지금까지 nginx 를 설정하기위해서 bash 에 직접 명령어를 입력했지만,
    NGINX Proxy Manager 를 사용하면 GUI 를 통해 지금까지의 작업을 수행할 수 있다.
    - 지금까지 설정한 server 의 정보를 지금처럼 자체 메모리에 저장할 수 있지만 DB 에 안전하게 보관할 수 있는 기능도 재공한다.

✏️ DB 세팅

📍 마리아 DB 실행하기

  • 아래명령어로 마리아 db 컨테이너를 실행할 수 있다.
  • restart
    • 수동으로 종료시키지 않으면 꺼지지 않고 계속 실행됨
  • e
    • 환경변수 설정
    • 시간과 pw 설정
  • v
    • 볼륨 설정
    • db 에 저장되는 data 를 호스트에 저장해 새로 만들어도 유실되지 않게 해준다.
  • mariadb:latest
    • 허브에서 제공하는 공식 마리아 db 의 최신버전 사용
docker run \
  --name mariadb_1 \
  -d \
  --restart unless-stopped \
  -e MARIADB_ROOT_PASSWORD=lldj123414 \
  -e TZ=Asia/Seoul \
  -p 3306:3306 \
  -v /docker_projects/mariadb_1/conf.d:/etc/mysql/conf.d \
  -v /docker_projects/mariadb_1/mysql:/var/lib/mysql \
  -v /docker_projects/mariadb_1/run/mysqld:/run/mysqld/ \
  mariadb:latest

📍 보안설정

  • 보안에 취약한 파일을 정리하는 명령어
    • 이후 run 할 때 적어준 pw 를 입력하면된다.
    • 소켓 사용여부 질문 - n
    • root pw 변경 - n
    • anonymous 제거 - y
    • root 로그인 금지 - y
    • test db 와 접근 삭제 -y
docker exec -it mariadb_1 /usr/bin/mariadb-secure-installation

📍 마스터 계정 및 DB 생성

  • 도커 내부에서 db 로그인
    • MariaDB [(none)]> 이 나오면 성공
docker exec -it mariadb_1 mysql -u root -p

  • 마스터 계정 생성
    • 관리용 계정
    • % 를 사용하면 어느 pc 에서든 사용할 수 있는 계정을 생성할 수 있다.
    • pw 를 알면 누구나 접속이 가능하기 때문에 보안에 주의해야한다.
GRANT ALL PRIVILEGES ON *.* TO lldj@'%' IDENTIFIED BY 'lldj123414';

  • 근거리용 계정 생성
    • 소스코드 삽입용
    • ip 를 명시하면 해당 ip 에서만 사용가능한 계정을 생성할 수 있다.
    • 2개 생성했음
GRANT ALL PRIVILEGES ON *.* TO lldjlocal@127.0.0.1 IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO lldjlocal@'172.17.%.%' IDENTIFIED BY '1234';

✏️ DataBas Consol 접속

  • 나는 intellij 자체 콘솔을 사용하기 때문에 intellij 에서 접속했다.
  • name - 컨테이너 이름@localhost
  • host - 리눅스의 ip
  • user - 계정 생성할 때 입력한 user
  • pw - 계정 생성시 입력한 pw

  • 생성이 완료되면 database 를 생성해주면 된다.
CREATE DATABASE nginx;

⚠️ 보안설정 할 때 root 로 접속하는 것을 막았기 때문에 user 에 root 를 사용할 수 없음

profile
잘못된 내용 PR 환영

0개의 댓글