Tiny Star

프로젝트/환경

[온실가스 프로젝트] DB - 2 (MariaDB)

흰둥아 2025. 4. 22. 21:17

최신 버전을 가져와서 사용할 수도 있지만, 실무라고 가정했을 때 장기지원해주는 버전을 사용하는게 좋기 때문에 특정 버전을 설치하려고 한다.

 

실제로 실무에서 (정확한 버전은 기억 안나지만) 지원이 끝나는 버전을 사용하고 있어서 버전업을 한 적이 있다.

하지만 너무 오래된 버전이라 바로 업그레이드가 안되고 백업으로 하나하나 옮겼던 기억이...ㅠ

 

 

 


 

MariaDB 연결

 

MariaDB 이미지 다운로드

 

MariaDB Server long-term release maintenance periods 를 참고해서 25년 4월 기준에서 가장 오래 지원해주는 LTS 버전을 설치할 것이다.

 

11.8은 RC (Release Candidate) 출시후보 버전으로 아직 안정성 테스트를 거치지 않은 상태이다. 

그래서 그 다음 최신버전인 11.4(오픈소스 사용자는 29.05.29까지 지원)을 설치할 거다.

 

 

 

mariadb-tags 에서 11.4 를 찾으면 11.4.5와 11.4.5-noble이 있다.

 

 

태그 설명 Windows Docker에서 적합성
11.4.5 ✅ 기본 최신 버전 (OS는 Debian 또는 Ubuntu) ✔️ 가장 안전하고 호환 잘됨
-noble Ubuntu 24.04 기반 ⚠️ 테스트용, 너무 최신이라 일부 이미지나 패키지 호환 이슈 있을 수 있음
-alpine 매우 작고 빠름 (Alpine Linux 기반) ⚠️ 호환성 이슈 가능성, 초보자에겐 비추천
-jammy Ubuntu 22.04 기반 ✔️ 안정적, 기본 이미지와 거의 동일함

 

가장 안전하게 뒤에 글자가 붙지 않은 버전으로 설치하자.

 

상황 추천태그
개발/학습용 11.4 (항상 최신 패치 반영됨)
운영 환경, 배포 서버 11.4.5 (버전 고정으로 예측 가능성 ↑)
테스트 정확성 중요할 때 11.4.5 (CI/CD에서 주로 사용)

 

11.4와 11.4.5가 있는데, 11.4는 11.4.3을 사용하다가 업데이트되면 11.4.5를 가르킬 수도 있기 때문에

운영상황이라면 고정된 버전으로 사용하자.

 

 

 

docker pull mariadb:11.4.5

 

 

docekr desktop에서 확인해보니 mariadb 11.4.5 이미지가 정상적으로 추가됐다.

 

 

docker run -d --name mariadb11 \
  -e TZ=Asia/Seoul \
  -e MYSQL_ROOT_PASSWORD=admin \
  -e MYSQL_DATABASE=admin \
  -p 3306:3306 \
  -v mariadb_data:/var/lib/mysql \
  mariadb:11.4.5

 

옵션 설명
-d 백그라운드 실행
--name mariadb 컨테이너 이름: mariadb
-e MYSQL_ROOT_PASSWORD=admin root 비밀번호
-e MYSQL_DATABASE=admin 기본 생성 DB 이름
-p 3306:3306 로컬에서 DB 접근 가능
-v mariadb_data:/var/lib/mysql Docker 볼륨을 MariaDB의 실제 DB 저장 위치와 연결
mariadb:11.4.5 MariaDB 정확한 버전 지정

 

 

 


 

포트 에러 발생

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 127.0.0.1:0: listen tcp 0.0.0.0:3306: bind: An attempt was made to access a socket in a way forbidden by its access permissions. Run 'docker run --help' for more information

 

명령어 실행 시 에러 발생하여 컨테이너가 Created 상태로 머무른다.

3306 포트가 점유 중이라서 생성이 안된다고 한다.

 

 

netstat -ano | findstr :3306

 

이 명령어로 프로세스가 나오면 죽이면 되는데, 계속 시도해봐도 안되서 혹시 포트 사용못하게 막혀있나 싶어서 확인했다.

 

netsh interface ipv4 show excludedportrange protocol=tcp

3306~3405 가 뭐 때문인지 포트에서 제외되어 있다.

 

net stop winnat
net start winnat

Windows의 NAT(Network Address Translation) 서비스를 재시작하여
예약되거나 꼬여 있던 포트 바인딩 상태 초기화 시켜주면 된다.

 


 

 

MariaDB 컨테이너 생성

 

 

정상적으로 실행됐다.

테스트시에는 33061:3306 이런식으로 외부 포트를 변경해도 상관 없다.

하지만 안된다고 바로 우회하기 보다는 해결해보고 싶었다.

 

 

 

DataGrip에서 3306 포트 정상접근을 확인했다.

 

 

 

 

top