본문 바로가기

프로젝트 설정/Docker

[Docker] MariaDB install 1 (feat. running container)

반응형

이 글은 이미 실행되고 있는 컨테이너 내에 mariadb를 설치 하는 방법이다.

 

mariadb image를 이용하여 install 하는 방법은 아래 글을 참고하자.

https://24hours-beginner.tistory.com/282

 

[docker] ubuntu에서 docker를 이용하여 database 구축하기 (mariadb image 사용)

0. docker? 더보기 https://24hours-beginner.tistory.com/236 [Docker] 도커란? 내가 생각했을 때 도커의 설명은 아키텍쳐로 끝나는듯 하다. Docs가 잘 되어 있으니 Docs를 읽자. https://docs.docker.com/get-started/overview/ Do

24hours-beginner.tistory.com

 

※ 주의사항 ※

  • 외부 접속 포트 : 내부에서 사용하는게 아니라 외부에서 접속이 필요한 경우 run 당시에 포트를 뚫어놓은게 아니라면 접속이 불가능할 수 있다.
  • 중복 포트 : 예를들어 네트워크를 --net=host로 했을 경우 외부에서도 돌고 있는 포트와 충돌되거나 접속 불가능한 포트인 경우 시작되지않을 수 있다.

install

# 도커 접속
docker exec -it [컨테이너 이름] bash

# install
apt-get update
apt-get install mariadb-server

시작 및 상태 확인

# start
service mysql start

# 실행됬는지 확인
service mysql status

# 실행 안됨 # 포트 등 확인 필요
root@test:/# service mysql status
 * MariaDB is stopped.

# 실행 됨
root@T4_BLADE:/# service mysql status
 * /usr/bin/mysqladmin  Ver 9.1 Distrib 10.3.38-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.3.38-MariaDB-0ubuntu0.20.04.1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 36 min 3 sec

Threads: 6  Questions: 70  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.032

 

실행된 경우 root 설정

실행 안된 경우 에러 확인 및 port 설정

 

root 설정

mysqladmin -u root password [비밀번호]

root 설정 후 mysql 을 써서 접속이 가능한지 확인하자

 

에러 확인 및 port 설정

에러 확인

tail -f /var/log/mysql/error.log

포트 문제 등으로 인한건 로그가 안남는것 같았다.

포트 변경

나같은 경우 포트가 중복되어 실행이 안되었었다.

컨테이너의 포트 옵션(-p)으로 포트를 할당했을 경우 거의 나타나지 않으나

--net=host로 네트워크를 할당하였을 경우  내부에서는 사용하지 않으나 외부와 포트가 겹쳐 실행이 안될 수 있다.

이 경우 외부 포트를 먹고 있는 프로세스를 종료하거나 현재 mariadb의 포트를 변경해주어야 한다.

 

기본적으로 주석처리 되어있으나

주석을 풀어 기본 포트인 3306이 아닌 다른 포트로 변경해 준다.

그리고 다시 restart

# vim /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                   = 3306 # 이부분 변경
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

#
# * Fine Tuning

restart

service mariadb restart
반응형